From e50cabaf7a92850ac6adf430cfed4df68e267720 Mon Sep 17 00:00:00 2001 From: Kevin Cristiano <kcristiano@kcristiano.com> Date: Thu, 3 Sep 2020 08:56:16 -0400 Subject: [PATCH] civicrm release --- civicrm.php | 57 +- civicrm/CRM/ACL/API.php | 2 +- civicrm/CRM/ACL/BAO/ACL.php | 71 - .../CRM/ACL/Form/WordPress/Permissions.php | 2 +- civicrm/CRM/Activity/BAO/Activity.php | 123 +- civicrm/CRM/Activity/BAO/Query.php | 2 +- civicrm/CRM/Activity/Form/Search.php | 2 - .../CRM/Activity/Import/Form/DataSource.php | 19 +- civicrm/CRM/Activity/Page/AJAX.php | 12 +- civicrm/CRM/Admin/Form/Job.php | 6 +- civicrm/CRM/Admin/Form/PaymentProcessor.php | 10 + .../CRM/Admin/Form/Setting/Localization.php | 24 +- civicrm/CRM/Admin/Form/Setting/Mail.php | 9 +- .../CRM/Admin/Form/Setting/Miscellaneous.php | 2 + civicrm/CRM/Admin/Page/Job.php | 11 + civicrm/CRM/Badge/BAO/Badge.php | 22 +- civicrm/CRM/Badge/Page/AJAX.php | 1 - civicrm/CRM/Campaign/Page/AJAX.php | 1 - civicrm/CRM/Case/BAO/Query.php | 57 +- civicrm/CRM/Case/Form/ActivityToCase.php | 2 +- civicrm/CRM/Case/Form/Search.php | 2 - civicrm/CRM/Case/Info.php | 8 +- civicrm/CRM/Case/Page/AJAX.php | 1 - civicrm/CRM/Case/XMLProcessor/Process.php | 16 +- civicrm/CRM/Case/XMLRepository.php | 1 - civicrm/CRM/Contact/BAO/Contact.php | 27 +- .../CRM/Contact/BAO/Contact/Permission.php | 16 +- civicrm/CRM/Contact/BAO/ContactType.php | 4 +- civicrm/CRM/Contact/BAO/Group.php | 12 +- civicrm/CRM/Contact/BAO/GroupContact.php | 31 +- civicrm/CRM/Contact/BAO/GroupContactCache.php | 45 +- civicrm/CRM/Contact/BAO/Individual.php | 11 +- civicrm/CRM/Contact/BAO/Query.php | 75 +- civicrm/CRM/Contact/BAO/RelationshipCache.php | 153 ++ civicrm/CRM/Contact/BAO/SavedSearch.php | 3 +- civicrm/CRM/Contact/DAO/RelationshipCache.php | 441 ++++++ civicrm/CRM/Contact/Form/Contact.php | 10 +- .../CRM/Contact/Form/Edit/TagsAndGroups.php | 18 +- civicrm/CRM/Contact/Form/GroupContact.php | 2 +- civicrm/CRM/Contact/Form/Merge.php | 8 +- civicrm/CRM/Contact/Form/Search/Advanced.php | 4 +- civicrm/CRM/Contact/Form/Search/Basic.php | 3 +- civicrm/CRM/Contact/Form/Search/Criteria.php | 13 +- civicrm/CRM/Contact/Form/Task.php | 2 +- .../CRM/Contact/Form/Task/PDFLetterCommon.php | 2 +- civicrm/CRM/Contact/Form/Task/Useradd.php | 9 +- .../CRM/Contact/Import/Form/DataSource.php | 47 +- civicrm/CRM/Contact/Import/ImportJob.php | 21 +- civicrm/CRM/Contact/Import/Parser/Contact.php | 2 +- civicrm/CRM/Contact/Page/AJAX.php | 1 - .../CRM/Contact/Page/View/UserDashBoard.php | 2 +- civicrm/CRM/Contribute/BAO/Contribution.php | 218 ++- .../CRM/Contribute/BAO/Contribution/Utils.php | 8 +- .../CRM/Contribute/BAO/ContributionPage.php | 11 +- .../CRM/Contribute/BAO/ContributionRecur.php | 32 +- .../Contribute/Form/AbstractEditPayment.php | 2 +- .../Contribute/Form/CancelSubscription.php | 186 ++- civicrm/CRM/Contribute/Form/Contribution.php | 57 +- .../Contribute/Form/Contribution/Confirm.php | 4 +- .../CRM/Contribute/Form/Contribution/Main.php | 5 +- .../CRM/Contribute/Form/ContributionBase.php | 2 +- .../Form/ContributionPage/Settings.php | 18 +- .../CRM/Contribute/Form/ContributionRecur.php | 4 +- civicrm/CRM/Contribute/Form/Search.php | 3 - civicrm/CRM/Contribute/Form/Task/Invoice.php | 24 +- civicrm/CRM/Contribute/Form/Task/PDF.php | 49 +- civicrm/CRM/Contribute/Form/Task/Status.php | 161 +- .../CRM/Contribute/Import/Form/DataSource.php | 13 +- civicrm/CRM/Contribute/Page/AJAX.php | 1 - civicrm/CRM/Contribute/Task.php | 2 +- civicrm/CRM/Core/BAO/ActionLog.php | 2 - civicrm/CRM/Core/BAO/ActionSchedule.php | 2 - civicrm/CRM/Core/BAO/Address.php | 7 +- civicrm/CRM/Core/BAO/Block.php | 5 +- civicrm/CRM/Core/BAO/Cache.php | 216 +-- civicrm/CRM/Core/BAO/Cache/Psr16.php | 215 --- civicrm/CRM/Core/BAO/ConfigSetting.php | 135 +- civicrm/CRM/Core/BAO/CustomField.php | 23 +- civicrm/CRM/Core/BAO/CustomValue.php | 3 + civicrm/CRM/Core/BAO/CustomValueTable.php | 4 +- civicrm/CRM/Core/BAO/Discount.php | 2 - civicrm/CRM/Core/BAO/Domain.php | 58 +- civicrm/CRM/Core/BAO/Email.php | 2 +- civicrm/CRM/Core/BAO/FinancialTrxn.php | 2 +- civicrm/CRM/Core/BAO/IM.php | 2 - civicrm/CRM/Core/BAO/Job.php | 2 +- civicrm/CRM/Core/BAO/Location.php | 5 +- civicrm/CRM/Core/BAO/LocationType.php | 2 - civicrm/CRM/Core/BAO/MailSettings.php | 2 - civicrm/CRM/Core/BAO/Mapping.php | 1 + civicrm/CRM/Core/BAO/MessageTemplate.php | 3 +- civicrm/CRM/Core/BAO/Note.php | 2 +- civicrm/CRM/Core/BAO/OpenID.php | 2 - civicrm/CRM/Core/BAO/OptionGroup.php | 2 - civicrm/CRM/Core/BAO/Query.php | 2 - civicrm/CRM/Core/BAO/SchemaHandler.php | 27 +- civicrm/CRM/Core/BAO/StatusPreference.php | 41 +- civicrm/CRM/Core/BAO/UFGroup.php | 27 +- civicrm/CRM/Core/BAO/UFJoin.php | 2 - civicrm/CRM/Core/BAO/UFMatch.php | 16 +- civicrm/CRM/Core/BAO/WordReplacement.php | 2 - civicrm/CRM/Core/CodeGen/Main.php | 19 - civicrm/CRM/Core/CodeGen/Specification.php | 3 +- civicrm/CRM/Core/CodeGen/Util/File.php | 50 - civicrm/CRM/Core/Config.php | 6 +- civicrm/CRM/Core/Config/MagicMerge.php | 2 +- civicrm/CRM/Core/Controller/Simple.php | 1 - civicrm/CRM/Core/DAO.php | 23 + civicrm/CRM/Core/DAO/AllCoreTables.data.php | 5 + civicrm/CRM/Core/DAO/AllCoreTables.php | 6 +- civicrm/CRM/Core/Error.php | 2 +- .../Exception/ResourceConflictException.php | 24 +- civicrm/CRM/Core/Form.php | 11 +- civicrm/CRM/Core/Form/Date.php | 16 +- civicrm/CRM/Core/I18n.php | 18 +- civicrm/CRM/Core/I18n/NativeGettext.php | 1 - civicrm/CRM/Core/I18n/Schema.php | 15 +- .../CRM/Core/I18n/SchemaStructure_4_3_1.php | 2 - civicrm/CRM/Core/JobManager.php | 1 + civicrm/CRM/Core/Key.php | 29 +- civicrm/CRM/Core/Lock.php | 2 - civicrm/CRM/Core/Page/AJAX.php | 2 - civicrm/CRM/Core/Page/AJAX/Location.php | 1 - civicrm/CRM/Core/Page/File.php | 2 - civicrm/CRM/Core/Page/Inline/Help.php | 2 - civicrm/CRM/Core/Payment/AuthorizeNet.php | 2 +- civicrm/CRM/Core/Payment/AuthorizeNetIPN.php | 30 +- civicrm/CRM/Core/Payment/BaseIPN.php | 52 +- civicrm/CRM/Core/Payment/Manual.php | 19 - civicrm/CRM/Core/Payment/PayPalIPN.php | 29 +- civicrm/CRM/Core/Payment/PayPalImpl.php | 2 +- civicrm/CRM/Core/Payment/PayPalProIPN.php | 31 +- civicrm/CRM/Core/Payment/PayflowPro.php | 19 +- civicrm/CRM/Core/Payment/PaymentExpress.php | 236 --- .../CRM/Core/Payment/PaymentExpressIPN.php | 443 ------ .../CRM/Core/Payment/PaymentExpressUtils.php | 110 -- civicrm/CRM/Core/Payment/Realex.php | 22 +- civicrm/CRM/Core/Payment/eWAY.php | 22 +- civicrm/CRM/Core/Permission/Backdrop.php | 2 - civicrm/CRM/Core/Permission/Base.php | 2 - civicrm/CRM/Core/Permission/Drupal.php | 2 - civicrm/CRM/Core/Permission/Drupal6.php | 2 - civicrm/CRM/Core/Permission/Drupal8.php | 2 - civicrm/CRM/Core/Permission/DrupalBase.php | 2 - civicrm/CRM/Core/Permission/Joomla.php | 2 - civicrm/CRM/Core/Permission/Soap.php | 2 - civicrm/CRM/Core/Permission/Temp.php | 2 - civicrm/CRM/Core/Permission/UnitTests.php | 2 - civicrm/CRM/Core/Permission/WordPress.php | 2 - civicrm/CRM/Core/PseudoConstant.php | 17 + civicrm/CRM/Core/QuickForm/Action/Jump.php | 2 - civicrm/CRM/Core/QuickForm/Action/Next.php | 2 - civicrm/CRM/Core/QuickForm/Action/Process.php | 2 - civicrm/CRM/Core/QuickForm/Action/Refresh.php | 2 - civicrm/CRM/Core/QuickForm/Action/Submit.php | 2 - civicrm/CRM/Core/QuickForm/Action/Upload.php | 1 - .../CRM/Core/QuickForm/GroupMultiSelect.php | 1 - .../Core/QuickForm/NestedAdvMultiSelect.php | 1 - civicrm/CRM/Core/ScheduledJob.php | 17 +- civicrm/CRM/Core/SelectValues.php | 12 +- civicrm/CRM/Core/Selector/Base.php | 2 - civicrm/CRM/Core/Selector/Controller.php | 2 - civicrm/CRM/Core/Smarty.php | 2 - .../Core/Smarty/plugins/block.crmButton.php | 2 - .../CRM/Core/Smarty/plugins/block.edit.php | 1 - .../CRM/Core/Smarty/plugins/block.htxt.php | 1 - .../Core/Smarty/plugins/block.localize.php | 2 - .../Core/Smarty/plugins/block.serialize.php | 1 - civicrm/CRM/Core/Smarty/plugins/block.ts.php | 1 - .../Core/Smarty/plugins/function.crmAPI.php | 1 - .../Smarty/plugins/function.crmAttributes.php | 1 - .../plugins/function.crmGetAttribute.php | 1 - .../Core/Smarty/plugins/function.crmKey.php | 2 - .../Smarty/plugins/function.crmResPath.php | 1 - .../Smarty/plugins/function.crmResURL.php | 1 - .../Smarty/plugins/function.crmScript.php | 1 - .../Smarty/plugins/function.crmSetting.php | 1 - .../Smarty/plugins/function.crmSigner.php | 1 - .../Core/Smarty/plugins/function.crmStyle.php | 1 - .../Smarty/plugins/function.crmVersion.php | 1 - .../Core/Smarty/plugins/function.docURL.php | 2 - .../CRM/Core/Smarty/plugins/function.help.php | 2 - .../Smarty/plugins/function.isValueChange.php | 1 - .../Smarty/plugins/function.sectionTotal.php | 1 - .../Smarty/plugins/modifier.colorContrast.php | 2 - .../Smarty/plugins/modifier.crmAddClass.php | 2 - .../Smarty/plugins/modifier.crmBtnType.php | 2 - .../Core/Smarty/plugins/modifier.crmDate.php | 2 - .../Smarty/plugins/modifier.crmDelete.php | 2 - .../Smarty/plugins/modifier.crmFirstWord.php | 2 - .../Smarty/plugins/modifier.crmInsert.php | 2 - .../Core/Smarty/plugins/modifier.crmMoney.php | 2 - .../plugins/modifier.crmNumberFormat.php | 2 - .../Smarty/plugins/modifier.crmReplace.php | 2 - .../plugins/modifier.crmStripAlternatives.php | 2 - .../Core/Smarty/plugins/modifier.htmlize.php | 2 - .../CRM/Core/Smarty/plugins/modifier.json.php | 2 - .../Smarty/plugins/modifier.mb_truncate.php | 2 - .../Core/Smarty/plugins/modifier.purify.php | 1 - .../Smarty/plugins/modifier.substring.php | 2 - civicrm/CRM/Core/Smarty/resources/String.php | 2 - civicrm/CRM/Core/TableHierarchy.php | 2 - civicrm/CRM/Core/Transaction.php | 1 - civicrm/CRM/Custom/Form/ChangeFieldType.php | 2 - civicrm/CRM/Custom/Form/DeleteField.php | 2 - civicrm/CRM/Custom/Form/DeleteGroup.php | 2 - civicrm/CRM/Custom/Form/Field.php | 8 +- civicrm/CRM/Custom/Form/Group.php | 2 - civicrm/CRM/Custom/Form/MoveField.php | 2 - civicrm/CRM/Custom/Form/Option.php | 2 - civicrm/CRM/Custom/Form/Preview.php | 2 - civicrm/CRM/Custom/Import/Form/DataSource.php | 2 - civicrm/CRM/Custom/Import/Parser.php | 2 - civicrm/CRM/Custom/Page/AJAX.php | 6 - civicrm/CRM/Custom/Page/Field.php | 2 - civicrm/CRM/Custom/Page/Group.php | 2 - civicrm/CRM/Custom/Page/Option.php | 2 - civicrm/CRM/Dashlet/Page/Activity.php | 2 - civicrm/CRM/Dashlet/Page/Blog.php | 2 - civicrm/CRM/Dashlet/Page/CaseDashboard.php | 2 - civicrm/CRM/Dashlet/Page/GettingStarted.php | 2 - civicrm/CRM/Dashlet/Page/MyCases.php | 2 - civicrm/CRM/Dedupe/BAO/Rule.php | 13 - civicrm/CRM/Dedupe/BAO/RuleGroup.php | 2 - civicrm/CRM/Dedupe/Finder.php | 4 +- civicrm/CRM/Dedupe/MergeHandler.php | 31 +- civicrm/CRM/Dedupe/Merger.php | 107 +- civicrm/CRM/Event/BAO/Participant.php | 48 +- civicrm/CRM/Event/BAO/ParticipantPayment.php | 2 - .../CRM/Event/BAO/ParticipantStatusType.php | 2 - civicrm/CRM/Event/Badge.php | 24 +- .../CRM/Event/Form/ManageEvent/Location.php | 2 - .../Form/ManageEvent/ScheduleReminders.php | 2 - .../CRM/Event/Form/ManageEvent/TabHeader.php | 3 +- .../Event/Form/ParticipantFeeSelection.php | 2 - civicrm/CRM/Event/Form/ParticipantView.php | 2 - .../Form/Registration/ParticipantConfirm.php | 7 +- .../CRM/Event/Form/Registration/Register.php | 3 +- .../CRM/Event/Form/Registration/ThankYou.php | 2 - civicrm/CRM/Event/Form/Search.php | 2 - civicrm/CRM/Event/Form/SearchEvent.php | 2 - civicrm/CRM/Event/Form/SelfSvcTransfer.php | 5 +- civicrm/CRM/Event/Form/SelfSvcUpdate.php | 5 +- civicrm/CRM/Event/Form/Task.php | 2 - civicrm/CRM/Event/Form/Task/AddToGroup.php | 2 - civicrm/CRM/Event/Form/Task/Cancel.php | 2 - civicrm/CRM/Event/Form/Task/Delete.php | 2 - .../CRM/Event/Form/Task/ParticipantStatus.php | 2 - civicrm/CRM/Event/Form/Task/PickProfile.php | 2 - civicrm/CRM/Event/Form/Task/Print.php | 2 - civicrm/CRM/Event/Form/Task/Result.php | 2 - civicrm/CRM/Event/Form/Task/SaveSearch.php | 2 - .../CRM/Event/Form/Task/SaveSearch/Update.php | 2 - .../Event/Form/Task/SearchTaskHookSample.php | 2 - civicrm/CRM/Event/Import/Controller.php | 2 - civicrm/CRM/Event/Import/Form/DataSource.php | 20 +- civicrm/CRM/Event/Import/Form/MapField.php | 2 - civicrm/CRM/Event/Import/Form/Preview.php | 2 - civicrm/CRM/Event/Import/Form/Summary.php | 2 - civicrm/CRM/Event/Import/Parser.php | 2 - .../CRM/Event/Import/Parser/Participant.php | 2 - civicrm/CRM/Event/Info.php | 2 - civicrm/CRM/Event/Page/AJAX.php | 2 - civicrm/CRM/Event/Page/EventInfo.php | 10 - civicrm/CRM/Event/Page/List.php | 7 +- civicrm/CRM/Event/Page/ManageEvent.php | 15 +- civicrm/CRM/Event/Page/ParticipantListing.php | 2 - .../Event/Page/ParticipantListing/Name.php | 2 - .../Page/ParticipantListing/NameAndEmail.php | 2 - .../ParticipantListing/NameStatusAndDate.php | 2 - .../Event/Page/ParticipantListing/Simple.php | 2 - civicrm/CRM/Event/Page/Tab.php | 2 - civicrm/CRM/Event/Page/UserDashboard.php | 2 - civicrm/CRM/Event/PseudoConstant.php | 2 - civicrm/CRM/Event/Selector/Search.php | 2 - civicrm/CRM/Event/Task.php | 1 - civicrm/CRM/Event/xml/Menu/Event.xml | 70 +- civicrm/CRM/Export/BAO/Export.php | 4 +- civicrm/CRM/Export/BAO/ExportProcessor.php | 79 +- civicrm/CRM/Export/Form/Map.php | 2 - civicrm/CRM/Export/Form/Select.php | 2 - civicrm/CRM/Extension/Manager/Report.php | 9 +- civicrm/CRM/Extension/Manager/Search.php | 9 +- civicrm/CRM/Financial/BAO/FinancialItem.php | 2 +- .../Financial/BAO/FinancialTypeAccount.php | 4 +- civicrm/CRM/Financial/BAO/Order.php | 1 - civicrm/CRM/Financial/BAO/Payment.php | 15 + .../CRM/Financial/BAO/PaymentProcessor.php | 26 +- .../CRM/Financial/Form/FinancialAccount.php | 2 +- civicrm/CRM/Friend/BAO/Friend.php | 1 - civicrm/CRM/Friend/Form/Contribute.php | 2 - civicrm/CRM/Friend/Form/Event.php | 2 - civicrm/CRM/Grant/BAO/Grant.php | 33 +- civicrm/CRM/Grant/Controller/Search.php | 2 - civicrm/CRM/Grant/Form/Grant.php | 12 +- civicrm/CRM/Grant/Form/GrantView.php | 2 - civicrm/CRM/Grant/Form/Search.php | 2 - civicrm/CRM/Grant/Form/Task/Delete.php | 2 - civicrm/CRM/Grant/Form/Task/Print.php | 2 - civicrm/CRM/Grant/Form/Task/Result.php | 2 - .../Grant/Form/Task/SearchTaskHookSample.php | 2 - civicrm/CRM/Grant/Form/Task/Update.php | 6 +- civicrm/CRM/Grant/Info.php | 2 - civicrm/CRM/Grant/Page/Tab.php | 2 - civicrm/CRM/Grant/Selector/Search.php | 2 - civicrm/CRM/Grant/StateMachine/Search.php | 2 - civicrm/CRM/Grant/Task.php | 2 - civicrm/CRM/Group/Controller.php | 2 - civicrm/CRM/Group/Form/Search.php | 2 - civicrm/CRM/Group/Page/AJAX.php | 5 - civicrm/CRM/Group/StateMachine.php | 2 - civicrm/CRM/Import/DataSource.php | 2 - civicrm/CRM/Import/DataSource/CSV.php | 32 +- civicrm/CRM/Import/DataSource/SQL.php | 4 +- civicrm/CRM/Import/Form/DataSource.php | 19 +- civicrm/CRM/Logging/Differ.php | 2 - civicrm/CRM/Logging/Schema.php | 6 +- civicrm/CRM/Mailing/BAO/Mailing.php | 6 + civicrm/CRM/Mailing/BAO/MailingJob.php | 10 +- civicrm/CRM/Mailing/Config.php | 2 + civicrm/CRM/Mailing/Event/BAO/Opened.php | 2 +- civicrm/CRM/Mailing/Event/BAO/Reply.php | 31 +- civicrm/CRM/Mailing/Event/BAO/Resubscribe.php | 32 +- civicrm/CRM/Mailing/Event/BAO/Subscribe.php | 31 +- .../Mailing/Event/BAO/TrackableURLOpen.php | 2 +- civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php | 33 +- civicrm/CRM/Mailing/Form/Subscribe.php | 25 +- civicrm/CRM/Mailing/xml/Menu/Mailing.xml | 2 + civicrm/CRM/Member/BAO/Membership.php | 155 +- civicrm/CRM/Member/BAO/MembershipBlock.php | 2 - civicrm/CRM/Member/BAO/MembershipLog.php | 2 - civicrm/CRM/Member/BAO/MembershipPayment.php | 2 - civicrm/CRM/Member/BAO/MembershipStatus.php | 103 +- civicrm/CRM/Member/BAO/MembershipType.php | 2 - civicrm/CRM/Member/Controller/Search.php | 2 - civicrm/CRM/Member/Form/Membership.php | 25 +- civicrm/CRM/Member/Form/MembershipConfig.php | 2 - civicrm/CRM/Member/Form/MembershipType.php | 1 - civicrm/CRM/Member/Form/MembershipView.php | 2 - civicrm/CRM/Member/Form/Search.php | 2 - civicrm/CRM/Member/Form/Task/Delete.php | 2 - civicrm/CRM/Member/Form/Task/Label.php | 2 - civicrm/CRM/Member/Form/Task/PDFLetter.php | 2 - civicrm/CRM/Member/Form/Task/PickProfile.php | 2 - civicrm/CRM/Member/Form/Task/Print.php | 2 - civicrm/CRM/Member/Form/Task/Result.php | 2 - .../Member/Form/Task/SearchTaskHookSample.php | 2 - civicrm/CRM/Member/Import/Controller.php | 2 - civicrm/CRM/Member/Import/Field.php | 2 - civicrm/CRM/Member/Import/Form/DataSource.php | 17 +- civicrm/CRM/Member/Import/Form/MapField.php | 2 - civicrm/CRM/Member/Import/Form/Preview.php | 2 - civicrm/CRM/Member/Import/Form/Summary.php | 2 - civicrm/CRM/Member/Import/Parser.php | 2 +- .../CRM/Member/Import/Parser/Membership.php | 4 +- civicrm/CRM/Member/Info.php | 2 - civicrm/CRM/Member/Page/AJAX.php | 2 - civicrm/CRM/Member/Page/DashBoard.php | 2 - civicrm/CRM/Member/Page/MembershipStatus.php | 2 - civicrm/CRM/Member/Page/MembershipType.php | 2 - civicrm/CRM/Member/Page/Tab.php | 2 - civicrm/CRM/Member/Page/UserDashboard.php | 2 - civicrm/CRM/Member/PseudoConstant.php | 2 - civicrm/CRM/Member/StateMachine/Search.php | 2 - civicrm/CRM/Member/StatusOverrideTypes.php | 1 - civicrm/CRM/Member/Task.php | 2 - civicrm/CRM/Note/Form/Note.php | 2 - civicrm/CRM/PCP/BAO/PCP.php | 7 +- civicrm/CRM/PCP/Controller/PCP.php | 2 - civicrm/CRM/PCP/Form/Contribute.php | 2 - civicrm/CRM/PCP/Form/Event.php | 2 - civicrm/CRM/PCP/Form/PCP.php | 2 - civicrm/CRM/PCP/Form/PCPAccount.php | 2 - civicrm/CRM/PCP/Page/PCP.php | 1 - civicrm/CRM/PCP/Page/PCPInfo.php | 2 - civicrm/CRM/PCP/StateMachine/PCP.php | 2 - civicrm/CRM/Price/BAO/LineItem.php | 16 +- civicrm/CRM/Price/BAO/PriceSet.php | 1 + civicrm/CRM/Price/Form/DeleteField.php | 2 - civicrm/CRM/Price/Form/Option.php | 2 - civicrm/CRM/Price/Form/Preview.php | 2 - civicrm/CRM/Price/Page/Field.php | 2 - civicrm/CRM/Price/Page/Option.php | 2 - civicrm/CRM/Price/Page/Set.php | 2 - civicrm/CRM/Profile/Form.php | 1 - civicrm/CRM/Profile/Form/Dynamic.php | 1 - civicrm/CRM/Profile/Form/Edit.php | 1 - civicrm/CRM/Profile/Page/Listings.php | 1 - .../Page/MultipleRecordFieldsListing.php | 1 - civicrm/CRM/Profile/Page/Router.php | 1 - civicrm/CRM/Profile/Page/View.php | 1 - civicrm/CRM/Profile/Selector/Listings.php | 2 +- civicrm/CRM/Queue/BAO/QueueItem.php | 2 - civicrm/CRM/Queue/Menu.php | 2 - civicrm/CRM/Report/BAO/Hook.php | 2 - civicrm/CRM/Report/BAO/HookInterface.php | 2 - civicrm/CRM/Report/Form.php | 262 ++-- civicrm/CRM/Report/Form/Activity.php | 3 +- civicrm/CRM/Report/Form/ActivitySummary.php | 3 +- .../Report/Form/Campaign/SurveyDetails.php | 2 - civicrm/CRM/Report/Form/Case/Demographics.php | 3 +- civicrm/CRM/Report/Form/Case/Detail.php | 2 - .../Report/Form/Contact/CurrentEmployer.php | 3 +- civicrm/CRM/Report/Form/Contact/Detail.php | 3 +- .../CRM/Report/Form/Contact/LoggingDetail.php | 2 - .../CRM/Report/Form/Contact/Relationship.php | 8 +- civicrm/CRM/Report/Form/Contact/Summary.php | 3 +- .../Report/Form/Contribute/Bookkeeping.php | 3 +- .../Form/Contribute/DeferredRevenue.php | 8 +- civicrm/CRM/Report/Form/Contribute/Detail.php | 24 +- civicrm/CRM/Report/Form/Contribute/Lybunt.php | 3 +- civicrm/CRM/Report/Form/Contribute/PCP.php | 2 - civicrm/CRM/Report/Form/Contribute/Recur.php | 5 +- .../Report/Form/Contribute/RecurSummary.php | 2 - civicrm/CRM/Report/Form/Contribute/Repeat.php | 3 +- .../CRM/Report/Form/Contribute/SoftCredit.php | 5 +- .../CRM/Report/Form/Contribute/Summary.php | 3 +- civicrm/CRM/Report/Form/Contribute/Sybunt.php | 3 +- .../CRM/Report/Form/Contribute/TopDonor.php | 3 +- civicrm/CRM/Report/Form/Event/Income.php | 2 - .../Form/Event/ParticipantListCount.php | 3 +- civicrm/CRM/Report/Form/Instance.php | 2 +- civicrm/CRM/Report/Form/Mailing/Bounce.php | 3 +- civicrm/CRM/Report/Form/Mailing/Clicks.php | 5 +- civicrm/CRM/Report/Form/Mailing/Detail.php | 3 +- civicrm/CRM/Report/Form/Mailing/Opened.php | 3 +- .../Report/Form/Member/ContributionDetail.php | 4 +- civicrm/CRM/Report/Form/Member/Detail.php | 123 +- civicrm/CRM/Report/Form/Member/Lapse.php | 5 +- civicrm/CRM/Report/Form/Member/Summary.php | 3 +- civicrm/CRM/Report/Form/Pledge/Detail.php | 3 +- civicrm/CRM/Report/Form/Pledge/Summary.php | 5 +- civicrm/CRM/Report/Form/Register.php | 2 - civicrm/CRM/Report/Info.php | 2 - civicrm/CRM/Report/Interface.php | 109 -- civicrm/CRM/Report/OutputHandler/Csv.php | 105 ++ civicrm/CRM/Report/OutputHandler/Pdf.php | 107 ++ civicrm/CRM/Report/OutputHandler/Print.php | 81 + civicrm/CRM/Report/Utils/Get.php | 2 - civicrm/CRM/Report/Utils/Report.php | 10 +- civicrm/CRM/SMS/Form/Provider.php | 2 +- civicrm/CRM/SMS/Form/Schedule.php | 12 +- civicrm/CRM/SMS/Message.php | 2 - civicrm/CRM/Tag/Form/Tag.php | 2 - civicrm/CRM/UF/Form/AbstractPreview.php | 2 - civicrm/CRM/UF/Form/AdvanceSetting.php | 21 +- civicrm/CRM/UF/Form/Field.php | 4 +- civicrm/CRM/UF/Form/Inline/PreviewById.php | 2 - civicrm/CRM/UF/Form/Preview.php | 2 - civicrm/CRM/UF/Page/AJAX.php | 2 - civicrm/CRM/UF/Page/Group.php | 2 - civicrm/CRM/UF/Page/ProfileEditor.php | 15 +- .../civicrm_msg_template.tpl | 16 - .../event_offline_receipt_html.tpl | 456 ------ .../event_offline_receipt_text.tpl | 274 ---- .../event_online_receipt_html.tpl | 450 ------ .../event_online_receipt_text.tpl | 277 ---- .../civicrm_msg_template.tpl | 16 - .../contribution_offline_receipt_html.tpl | 261 ---- .../contribution_offline_receipt_text.tpl | 97 -- .../event_offline_receipt_html.tpl | 456 ------ .../event_offline_receipt_text.tpl | 274 ---- .../event_online_receipt_html.tpl | 450 ------ .../event_online_receipt_text.tpl | 277 ---- .../membership_offline_receipt_html.tpl | 240 --- .../membership_offline_receipt_text.tpl | 90 -- .../membership_online_receipt_html.tpl | 514 ------- .../membership_online_receipt_text.tpl | 221 --- .../civicrm_msg_template.tpl | 16 - .../event_online_receipt_html.tpl | 449 ------ .../event_online_receipt_text.tpl | 277 ---- .../message_templates/pcp_notify_html.tpl | 96 -- .../civicrm_msg_template.tpl | 16 - .../contribution_online_receipt_html.tpl | 394 ----- .../contribution_online_receipt_text.tpl | 179 --- .../membership_online_receipt_html.tpl | 514 ------- .../membership_online_receipt_text.tpl | 221 --- .../civicrm_msg_template.tpl | 16 - .../message_templates/pcp_notify_html.tpl | 96 -- .../message_templates/pcp_notify_text.tpl | 20 - .../civicrm_msg_template.tpl | 16 - .../contribution_online_receipt_html.tpl | 396 ----- .../contribution_online_receipt_text.tpl | 181 --- .../civicrm_msg_template.tpl | 16 - .../event_online_receipt_html.tpl | 450 ------ .../event_online_receipt_text.tpl | 277 ---- .../civicrm_msg_template.tpl | 16 - .../contribution_dupalert_html.tpl | 86 -- .../contribution_dupalert_text.tpl | 17 - .../event_online_receipt_html.tpl | 450 ------ .../event_online_receipt_text.tpl | 277 ---- civicrm/CRM/Upgrade/Controller.php | 2 - civicrm/CRM/Upgrade/Form.php | 9 +- civicrm/CRM/Upgrade/Incremental/Base.php | 15 +- civicrm/CRM/Upgrade/Incremental/General.php | 2 - .../CRM/Upgrade/Incremental/SmartGroups.php | 1 - .../Incremental/php/FiveTwentyEight.php | 34 +- .../Incremental/php/FiveTwentyNine.php | 193 +++ .../Upgrade/Incremental/php/FiveTwentyOne.php | 5 +- .../Incremental/php/FiveTwentySeven.php | 12 +- .../CRM/Upgrade/Incremental/php/FourFour.php | 803 ---------- .../CRM/Upgrade/Incremental/php/FourSeven.php | 4 +- .../CRM/Upgrade/Incremental/php/FourThree.php | 1302 ----------------- .../Upgrade/Incremental/sql/4.3.0.mysql.tpl | 2 - .../Upgrade/Incremental/sql/4.3.1.mysql.tpl | 21 - .../Upgrade/Incremental/sql/4.3.2.mysql.tpl | 1 - .../Upgrade/Incremental/sql/4.3.3.mysql.tpl | 2 - .../Upgrade/Incremental/sql/4.3.4.mysql.tpl | 109 -- .../Upgrade/Incremental/sql/4.3.5.mysql.tpl | 11 - .../Upgrade/Incremental/sql/4.3.6.mysql.tpl | 96 -- .../Upgrade/Incremental/sql/4.3.7.mysql.tpl | 1 - .../Upgrade/Incremental/sql/4.3.8.mysql.tpl | 1 - .../Upgrade/Incremental/sql/4.3.9.mysql.tpl | 1 - .../Incremental/sql/4.3.alpha1.mysql.tpl | 876 ----------- .../Incremental/sql/4.3.alpha2.mysql.tpl | 40 - .../Incremental/sql/4.3.alpha3.mysql.tpl | 4 - .../Incremental/sql/4.3.beta1.mysql.tpl | 1 - .../Incremental/sql/4.3.beta2.mysql.tpl | 1 - .../Incremental/sql/4.3.beta3.mysql.tpl | 31 - .../Incremental/sql/4.3.beta4.mysql.tpl | 25 - .../Incremental/sql/4.3.beta5.mysql.tpl | 9 - .../Upgrade/Incremental/sql/4.4.0.mysql.tpl | 9 - .../Upgrade/Incremental/sql/4.4.1.mysql.tpl | 12 - .../Upgrade/Incremental/sql/4.4.2.mysql.tpl | 5 - .../Upgrade/Incremental/sql/4.4.3.mysql.tpl | 8 - .../Upgrade/Incremental/sql/4.4.4.mysql.tpl | 28 - .../Upgrade/Incremental/sql/4.4.5.mysql.tpl | 36 - .../Upgrade/Incremental/sql/4.4.6.mysql.tpl | 5 - .../Incremental/sql/4.4.alpha1.mysql.tpl | 161 -- .../Incremental/sql/4.4.beta1.mysql.tpl | 9 - .../Upgrade/Incremental/sql/5.28.0.mysql.tpl | 1 - .../Upgrade/Incremental/sql/5.28.1.mysql.tpl | 1 - .../Upgrade/Incremental/sql/5.28.2.mysql.tpl | 1 - .../Upgrade/Incremental/sql/5.28.3.mysql.tpl | 1 - .../Upgrade/Incremental/sql/5.28.4.mysql.tpl | 1 - .../Upgrade/Incremental/sql/5.29.0.mysql.tpl | 1 + .../Incremental/sql/5.29.alpha1.mysql.tpl | 47 + .../Incremental/sql/5.29.beta1.mysql.tpl | 1 + .../CRM/Upgrade/Incremental/sql/README.txt | 2 +- civicrm/CRM/Utils/Cache/Interface.php | 1 - civicrm/CRM/Utils/Cache/NaiveHasTrait.php | 1 - .../CRM/Utils/Cache/NaiveMultipleTrait.php | 1 - civicrm/CRM/Utils/Cache/Redis.php | 2 - civicrm/CRM/Utils/Check.php | 51 +- civicrm/CRM/Utils/Check/Component.php | 90 +- .../Utils/Check/Component/AddressParsing.php | 3 + civicrm/CRM/Utils/Check/Component/Case.php | 10 +- civicrm/CRM/Utils/Check/Component/Cms.php | 159 ++ civicrm/CRM/Utils/Check/Component/Env.php | 216 +-- .../Check/Component/FinancialTypeAcls.php | 4 + .../Utils/Check/Component/OptionGroups.php | 6 +- .../CRM/Utils/Check/Component/PriceFields.php | 2 +- civicrm/CRM/Utils/Check/Component/Schema.php | 9 +- .../CRM/Utils/Check/Component/Security.php | 30 +- civicrm/CRM/Utils/Check/Component/Source.php | 4 +- .../CRM/Utils/Check/Component/Timestamps.php | 2 +- civicrm/CRM/Utils/Check/Message.php | 5 + civicrm/CRM/Utils/EnglishNumber.php | 2 - civicrm/CRM/Utils/File.php | 25 +- civicrm/CRM/Utils/Hook.php | 42 +- civicrm/CRM/Utils/Hook/WordPress.php | 6 +- civicrm/CRM/Utils/JS.php | 1 + civicrm/CRM/Utils/Mail.php | 10 +- civicrm/CRM/Utils/Migrate/Import.php | 3 +- civicrm/CRM/Utils/PDF/Utils.php | 2 +- civicrm/CRM/Utils/REST.php | 2 +- civicrm/CRM/Utils/ReCAPTCHA.php | 2 +- civicrm/CRM/Utils/SQL/Select.php | 65 + civicrm/CRM/Utils/SQL/TempTable.php | 20 +- civicrm/CRM/Utils/String.php | 2 +- civicrm/CRM/Utils/System.php | 8 +- civicrm/CRM/Utils/System/Drupal8.php | 3 + civicrm/CRM/Utils/System/UnitTests.php | 2 - civicrm/CRM/Utils/System/WordPress.php | 47 +- civicrm/CRM/Utils/Token.php | 4 +- civicrm/CRM/Utils/VisualBundle.php | 2 - civicrm/CRM/Widget/Widget.php | 197 --- civicrm/Civi.php | 9 +- .../Action/Setting/AbstractSettingAction.php | 4 +- civicrm/Civi/Api4/Action/System/Check.php | 31 +- civicrm/Civi/Api4/ActivityContact.php | 2 +- civicrm/Civi/Api4/Address.php | 24 +- civicrm/Civi/Api4/Campaign.php | 8 +- civicrm/Civi/Api4/Contact.php | 16 +- civicrm/Civi/Api4/CustomValue.php | 48 +- civicrm/Civi/Api4/DashboardContact.php | 2 +- civicrm/Civi/Api4/Domain.php | 11 +- civicrm/Civi/Api4/Email.php | 2 - civicrm/Civi/Api4/Entity.php | 28 +- civicrm/Civi/Api4/EntityTag.php | 2 +- civicrm/Civi/Api4/Event.php | 10 +- civicrm/Civi/Api4/Event/Events.php | 2 - .../Civi/Api4/Event/PostSelectQueryEvent.php | 2 - .../Civi/Api4/Event/SchemaMapBuildEvent.php | 2 - .../ActivityPreCreationSubscriber.php | 5 +- .../ActivitySchemaMapSubscriber.php | 2 - .../Subscriber/ContactPreSaveSubscriber.php | 2 - .../ContributionPreSaveSubscriber.php | 2 - .../CustomFieldPreSaveSubscriber.php | 2 - .../CustomGroupPreCreationSubscriber.php | 2 - .../Generic/AbstractPrepareSubscriber.php | 2 - .../Subscriber/Generic/PreSaveSubscriber.php | 2 - .../Event/Subscriber/IsCurrentSubscriber.php | 2 - .../OptionValuePreCreationSubscriber.php | 5 +- civicrm/Civi/Api4/Generic/AbstractAction.php | 10 +- civicrm/Civi/Api4/Generic/AbstractEntity.php | 49 +- .../Civi/Api4/Generic/AbstractGetAction.php | 4 +- .../Civi/Api4/Generic/AbstractQueryAction.php | 2 - .../Civi/Api4/Generic/AbstractSaveAction.php | 9 +- .../Civi/Api4/Generic/BasicBatchAction.php | 6 +- .../Civi/Api4/Generic/BasicCreateAction.php | 6 +- civicrm/Civi/Api4/Generic/BasicEntity.php | 139 ++ civicrm/Civi/Api4/Generic/BasicGetAction.php | 14 +- .../Api4/Generic/BasicGetFieldsAction.php | 2 - civicrm/Civi/Api4/Generic/BasicSaveAction.php | 14 +- .../Civi/Api4/Generic/BasicUpdateAction.php | 4 +- civicrm/Civi/Api4/Generic/BridgeEntity.php | 21 + civicrm/Civi/Api4/Generic/DAOCreateAction.php | 2 - civicrm/Civi/Api4/Generic/DAOEntity.php | 58 +- civicrm/Civi/Api4/Generic/DAOGetAction.php | 24 +- .../Civi/Api4/Generic/DAOGetFieldsAction.php | 2 - civicrm/Civi/Api4/Generic/DAOSaveAction.php | 8 +- civicrm/Civi/Api4/Generic/DAOUpdateAction.php | 2 - .../Generic/Traits/ArrayQueryActionTrait.php | 4 +- .../Generic/Traits/CustomValueActionTrait.php | 2 - .../Api4/Generic/Traits/DAOActionTrait.php | 63 +- .../Api4/Generic/Traits/IsCurrentTrait.php | 2 - civicrm/Civi/Api4/Group.php | 2 - civicrm/Civi/Api4/GroupContact.php | 22 +- civicrm/Civi/Api4/GroupNesting.php | 2 - civicrm/Civi/Api4/MailSettings.php | 2 - civicrm/Civi/Api4/MappingField.php | 2 - civicrm/Civi/Api4/Navigation.php | 2 - civicrm/Civi/Api4/Note.php | 2 - civicrm/Civi/Api4/OpenID.php | 2 - civicrm/Civi/Api4/OptionGroup.php | 2 - civicrm/Civi/Api4/OptionValue.php | 2 - civicrm/Civi/Api4/Participant.php | 2 - civicrm/Civi/Api4/Phone.php | 2 - .../Api4/Provider/ActionObjectProvider.php | 3 +- civicrm/Civi/Api4/Query/Api4SelectQuery.php | 153 +- civicrm/Civi/Api4/Relationship.php | 10 +- civicrm/Civi/Api4/RelationshipCache.php | 49 + civicrm/Civi/Api4/Route.php | 21 +- civicrm/Civi/Api4/SavedSearch.php | 2 - ...vityToActivityContactAssigneesJoinable.php | 2 - .../Schema/Joinable/BridgeJoinable.php | 2 - .../Schema/Joinable/CustomGroupJoinable.php | 5 +- .../Api4/Service/Schema/Joinable/Joinable.php | 2 - civicrm/Civi/Api4/Service/Schema/Joiner.php | 2 - .../Civi/Api4/Service/Schema/SchemaMap.php | 2 - .../Api4/Service/Schema/SchemaMapBuilder.php | 4 +- civicrm/Civi/Api4/Service/Schema/Table.php | 2 - .../Api4/Service/Spec/CustomFieldSpec.php | 2 - civicrm/Civi/Api4/Service/Spec/FieldSpec.php | 2 - .../ActionScheduleCreationSpecProvider.php | 2 - .../Provider/ActivityCreationSpecProvider.php | 45 - .../Spec/Provider/ActivitySpecProvider.php | 60 + .../Provider/AddressCreationSpecProvider.php | 2 - .../Provider/ContactCreationSpecProvider.php | 2 - .../CustomFieldCreationSpecProvider.php | 2 - .../CustomGroupCreationSpecProvider.php | 2 - .../Spec/Provider/CustomValueSpecProvider.php | 2 - .../Provider/DefaultLocationTypeProvider.php | 2 - .../Provider/EmailCreationSpecProvider.php | 2 - .../EntityTagCreationSpecProvider.php | 2 - .../Provider/EventCreationSpecProvider.php | 2 - .../Provider/FieldDomainIdSpecProvider.php | 2 - .../Generic/SpecProviderInterface.php | 2 - .../Provider/GetActionDefaultsProvider.php | 2 - ...ymentProcessorTypeCreationSpecProvider.php | 26 +- .../Civi/Api4/Service/Spec/SpecGatherer.php | 7 +- civicrm/Civi/Api4/Setting.php | 38 +- civicrm/Civi/Api4/System.php | 31 +- civicrm/Civi/Api4/UFMatch.php | 4 +- civicrm/Civi/Api4/Utils/CoreUtil.php | 2 - civicrm/Civi/Api4/Utils/FormattingUtil.php | 2 - civicrm/Civi/Core/CiviEventDispatcher.php | 3 + civicrm/Civi/Core/Container.php | 48 +- civicrm/Civi/Install/Requirements.php | 11 +- civicrm/Civi/Report/OutputHandlerBase.php | 146 ++ civicrm/Civi/Report/OutputHandlerFactory.php | 101 ++ .../Civi/Report/OutputHandlerInterface.php | 121 ++ civicrm/Civi/Test/Api3TestTrait.php | 5 +- civicrm/Civi/Test/ContactTestTrait.php | 2 +- civicrm/Civi/Test/Data.php | 2 + civicrm/Civi/Test/DbTestTrait.php | 2 +- civicrm/Civi/Test/TAP.php | 22 +- civicrm/Civi/Test/TAPLegacy.php | 22 +- civicrm/ang/api4Explorer/Explorer.html | 7 +- civicrm/ang/api4Explorer/Explorer.js | 59 +- civicrm/ang/crmMailing/Recipients.js | 14 +- civicrm/ang/crmMailing/services.js | 2 +- civicrm/api/v3/Contribution.php | 10 +- civicrm/api/v3/Domain.php | 16 +- civicrm/api/v3/Job.php | 28 +- civicrm/api/v3/Mailing.php | 18 +- civicrm/api/v3/Order.php | 10 +- civicrm/api/v3/ReportTemplate.php | 3 + civicrm/api/v3/System.php | 7 +- civicrm/bin/regen.sh | 6 +- civicrm/civicrm-version.php | 2 +- civicrm/composer.json | 8 +- civicrm/composer.lock | 123 +- civicrm/css/api4-explorer.css | 4 - civicrm/css/civicrm.css | 15 +- .../eventcart}/CRM/Event/Cart/BAO/Cart.php | 0 .../CRM/Event/Cart/BAO/Conference.php | 0 .../CRM/Event/Cart/BAO/EventInCart.php | 0 .../CRM/Event/Cart/BAO/MerParticipant.php | 0 .../CRM/Event/Cart/Controller/Checkout.php | 0 .../eventcart}/CRM/Event/Cart/Form/Cart.php | 0 .../Cart/Form/Checkout/ConferenceEvents.php | 0 .../Form/Checkout/ParticipantsAndPrices.php | 0 .../CRM/Event/Cart/Form/Checkout/Payment.php | 0 .../CRM/Event/Cart/Form/Checkout/ThankYou.php | 0 .../CRM/Event/Cart/Form/MerParticipant.php | 0 .../CRM/Event/Cart/Page/AddToCart.php | 0 .../CRM/Event/Cart/Page/CheckoutAJAX.php | 0 .../CRM/Event/Cart/Page/RemoveFromCart.php | 0 .../CRM/Event/Cart/Page/ViewCart.php | 0 .../eventcart/CRM/Event/Cart/PageCallback.php | 41 + .../CRM/Event/Cart/StateMachine/Checkout.php | 0 civicrm/ext/eventcart/LICENSE.txt | 667 +++++++++ civicrm/ext/eventcart/README.md | 11 + civicrm/ext/eventcart/eventcart.civix.php | 477 ++++++ civicrm/ext/eventcart/eventcart.php | 133 ++ civicrm/ext/eventcart/images/screenshot.png | Bin 0 -> 11775 bytes civicrm/ext/eventcart/info.xml | 30 + .../eventcart/settings/Eventcart.setting.php | 38 + .../Cart/Form/Checkout/ConferenceEvents.tpl | 0 .../Event/Cart/Form/Checkout/Participant.tpl | 0 .../Form/Checkout/ParticipantsAndPrices.tpl | 0 .../CRM/Event/Cart/Form/Checkout/Payment.tpl | 0 .../CRM/Event/Cart/Form/Checkout/ThankYou.tpl | 0 .../CRM/Event/Cart/Form/viewCartLink.tpl | 0 .../CRM/Event/Cart/Page/AddToCart.tpl | 0 .../CRM/Event/Cart/Page/ViewCart.tpl | 0 .../templates/CRM/Event/Cart/eventlistpre.tpl | 2 + civicrm/ext/eventcart/xml/Menu/Eventcart.xml | 48 + civicrm/ext/flexmailer/info.xml | 8 +- .../FlexMailer/ConcurrentDeliveryTest.php | 2 +- .../Civi/FlexMailer/FlexMailerSystemTest.php | 2 +- .../FlexMailer/Listener/SimpleFilterTest.php | 2 +- .../sequentialcreditnotes.php | 2 +- civicrm/extern/authorizeIPN.php | 1 - civicrm/extern/ipn.php | 2 - civicrm/extern/pxIPN.php | 55 - civicrm/extern/widget.php | 1 - civicrm/i/crm-button-bg.gif | Bin 1458 -> 0 bytes civicrm/install/civicrm.php | 3 +- civicrm/js/Common.js | 67 +- civicrm/js/crm.ajax.js | 4 +- civicrm/js/jquery/jquery.crmEditable.js | 2 +- civicrm/js/view/crm.designer.js | 4 +- civicrm/packages/Net/Curl.php | 876 ----------- civicrm/packages/Net/DIME.php | 693 --------- civicrm/packages/VERSIONS.php | 4 - .../jquery/plugins/jquery.tableHeader.js | 2 +- .../jquery/plugins/jstree/jquery.jstree.js | 12 +- civicrm/release-notes.md | 11 + civicrm/release-notes/5.28.3.md | 6 - civicrm/release-notes/5.29.0.md | 1139 ++++++++++++++ civicrm/settings/Address.setting.php | 2 +- civicrm/settings/Campaign.setting.php | 2 +- civicrm/settings/Case.setting.php | 4 +- civicrm/settings/Contribute.setting.php | 3 +- civicrm/settings/Core.setting.php | 2 +- civicrm/settings/Developer.setting.php | 2 - civicrm/settings/Directory.setting.php | 2 - civicrm/settings/Event.setting.php | 16 - civicrm/settings/Extension.setting.php | 2 - civicrm/settings/Localization.setting.php | 2 - civicrm/settings/Mailing.setting.php | 23 +- civicrm/settings/Map.setting.php | 2 - civicrm/settings/Member.setting.php | 2 - civicrm/settings/Search.setting.php | 2 - civicrm/settings/Url.setting.php | 2 - .../setup/plugins/blocks/components.tpl.php | 10 + .../setup/plugins/init/Drupal.civi-setup.php | 2 +- .../FlushBackdrop.civi-setup.php | 7 + .../FlushDrupal.civi-setup.php | 7 + .../InstallComponents.civi-setup.php | 11 + .../SetLanguage.civi-setup.php | 6 + civicrm/setup/res/error.html | 17 - civicrm/setup/res/finished.Backdrop.php | 54 +- civicrm/setup/res/finished.Drupal.php | 14 +- civicrm/setup/res/installer.tpl.php | 21 + civicrm/setup/res/jquery.setupui.js | 34 + civicrm/setup/res/page.tpl.php | 31 + civicrm/setup/res/template.css | 15 +- civicrm/setup/res/template.php | 41 - civicrm/setup/src/Setup.php | 2 +- civicrm/setup/src/Setup/BasicRunner.php | 37 +- civicrm/setup/src/Setup/LocaleUtil.php | 4 + .../setup/src/Setup/UI/SetupController.php | 124 +- civicrm/setup/src/Setup/UI/SetupResponse.php | 95 ++ civicrm/sql/civicrm.mysql | 44 + civicrm/sql/civicrm_data.mysql | 10 +- civicrm/sql/civicrm_drop.mysql | 1 + civicrm/sql/civicrm_dummy_processor.mysql | 4 +- civicrm/sql/civicrm_generated.mysql | 84 +- civicrm/templates/CRM/ACL/Form/ACL.tpl | 2 +- civicrm/templates/CRM/ACL/Form/ACLBasic.tpl | 2 +- civicrm/templates/CRM/ACL/Form/EntityRole.tpl | 2 +- .../CRM/Activity/Form/Search/EmptyResults.tpl | 2 +- .../templates/CRM/Activity/Form/Selector.tpl | 4 +- .../CRM/Activity/Form/Task/Delete.tpl | 2 +- .../CRM/Activity/Form/Task/Print.tpl | 2 +- .../Form/Task/SearchTaskHookSample.tpl | 2 +- .../CRM/Activity/Page/UserDashboard.tpl | 2 +- .../templates/CRM/Admin/Form/ContactType.tpl | 2 +- .../templates/CRM/Admin/Form/Extensions.tpl | 16 +- civicrm/templates/CRM/Admin/Form/Job.tpl | 4 +- .../templates/CRM/Admin/Form/LabelFormats.tpl | 4 +- .../templates/CRM/Admin/Form/LocationType.tpl | 2 +- .../templates/CRM/Admin/Form/MailSettings.tpl | 2 +- civicrm/templates/CRM/Admin/Form/Mapping.tpl | 2 +- .../CRM/Admin/Form/MessageTemplates.tpl | 2 +- .../templates/CRM/Admin/Form/OptionGroup.tpl | 2 +- civicrm/templates/CRM/Admin/Form/Options.tpl | 2 +- .../CRM/Admin/Form/ParticipantStatusType.tpl | 2 +- .../CRM/Admin/Form/PaymentProcessor.tpl | 2 +- .../CRM/Admin/Form/PaymentProcessorType.tpl | 2 +- .../templates/CRM/Admin/Form/PdfFormats.tpl | 2 +- .../CRM/Admin/Form/ScheduleReminders.tpl | 2 +- .../CRM/Admin/Form/Setting/Debugging.tpl | 2 +- .../templates/CRM/Admin/Form/Setting/Mail.tpl | 3 +- .../CRM/Admin/Form/Setting/Miscellaneous.tpl | 8 +- .../templates/CRM/Admin/Form/Setting/Path.tpl | 2 +- .../CRM/Admin/Page/EventTemplate.tpl | 2 +- .../CRM/Admin/Page/Extensions/AddNew.tpl | 2 +- .../CRM/Admin/Page/Extensions/AddNewReq.tpl | 2 +- .../CRM/Admin/Page/Extensions/Main.tpl | 2 +- civicrm/templates/CRM/Admin/Page/Job.tpl | 2 +- civicrm/templates/CRM/Admin/Page/JobLog.tpl | 2 +- .../templates/CRM/Admin/Page/LabelFormats.tpl | 2 +- .../CRM/Admin/Page/MessageTemplates.hlp | 2 +- .../CRM/Admin/Page/MessageTemplates.tpl | 2 +- civicrm/templates/CRM/Admin/Page/Options.hlp | 3 +- .../CRM/Admin/Page/PaymentProcessor.hlp | 16 +- .../CRM/Admin/Page/PaymentProcessor.tpl | 2 +- .../templates/CRM/Admin/Page/PdfFormats.tpl | 2 +- .../CRM/Admin/Page/ScheduleReminders.tpl | 2 +- civicrm/templates/CRM/Badge/Form/Layout.tpl | 2 +- civicrm/templates/CRM/Batch/Form/Batch.tpl | 2 +- .../templates/CRM/Campaign/Form/Campaign.tpl | 2 +- civicrm/templates/CRM/Campaign/Form/Gotv.tpl | 2 +- .../templates/CRM/Campaign/Form/Petition.tpl | 2 +- .../CRM/Campaign/Form/Search/Campaign.tpl | 2 +- .../CRM/Campaign/Form/Search/EmptyResults.tpl | 2 +- .../CRM/Campaign/Form/Search/Petition.tpl | 2 +- .../CRM/Campaign/Form/Search/Survey.tpl | 2 +- .../CRM/Campaign/Form/Survey/Delete.tpl | 2 +- .../CRM/Campaign/Form/Survey/Main.tpl | 2 +- .../CRM/Campaign/Form/Task/Interview.tpl | 2 +- .../CRM/Campaign/Form/Task/Print.tpl | 2 +- .../CRM/Campaign/Form/Task/Release.tpl | 2 +- .../CRM/Campaign/Form/Task/Reserve.tpl | 2 +- .../templates/CRM/Campaign/Page/Petition.tpl | 2 +- .../CRM/Campaign/Page/Petition/Confirm.tpl | 2 +- .../CRM/Campaign/Page/SurveyType.tpl | 4 +- civicrm/templates/CRM/Campaign/Page/Vote.tpl | 2 +- civicrm/templates/CRM/Case/Form/Case.tpl | 2 +- .../templates/CRM/Case/Form/EditClient.tpl | 2 +- .../CRM/Case/Form/Search/EmptyResults.tpl | 2 +- .../templates/CRM/Case/Form/Task/Delete.tpl | 2 +- .../templates/CRM/Case/Form/Task/Print.tpl | 2 +- .../templates/CRM/Case/Form/Task/Restore.tpl | 2 +- .../Case/Form/Task/SearchTaskHookSample.tpl | 2 +- .../CRM/Case/Page/ConfigureError.tpl | 2 +- civicrm/templates/CRM/Case/Page/Tab.tpl | 4 +- .../CRM/Contact/Form/Edit/Address.tpl | 2 +- civicrm/templates/CRM/Contact/Form/Merge.tpl | 4 +- .../Contact/Form/Search/Criteria/Basic.tpl | 2 +- .../Form/Search/Criteria/Fields/sort_name.tpl | 8 +- .../Form/Search/Custom/EmptyResults.tpl | 2 +- .../CRM/Contact/Form/Search/EmptyResults.tpl | 2 +- .../CRM/Contact/Form/Task/Delete.tpl | 2 +- .../CRM/Contact/Form/Task/EmailCommon.tpl | 14 +- .../CRM/Contact/Form/Task/HookSample.tpl | 2 +- .../templates/CRM/Contact/Form/Task/Print.tpl | 2 +- .../CRM/Contact/Form/Task/Unhold.tpl | 2 +- .../CRM/Contact/Import/Form/DataSource.tpl | 2 +- .../CRM/Contact/Page/CustomSearch.hlp | 2 +- .../Contact/Page/View/ContactSmartGroup.tpl | 2 +- .../CRM/Contact/Page/View/Delete.tpl | 2 +- .../templates/CRM/Contact/Page/View/Group.tpl | 2 +- .../CRM/Contact/Page/View/GroupContact.tpl | 2 +- .../templates/CRM/Contact/Page/View/Log.tpl | 2 +- .../templates/CRM/Contact/Page/View/Note.tpl | 2 +- .../CRM/Contact/Page/View/Summary.js | 14 +- .../Page/View/UserDashBoard/GroupContact.tpl | 2 +- .../CRM/Contribute/Form/AcceptCreditCard.tpl | 2 +- .../CRM/Contribute/Form/AdditionalPayment.tpl | 2 +- .../Contribute/Form/CancelSubscription.tpl | 2 +- .../CRM/Contribute/Form/Contribution.tpl | 4 +- .../CRM/Contribute/Form/Contribution/Main.tpl | 19 +- .../Form/ContributionPage/AddProduct.tpl | 2 +- .../Form/ContributionPage/Amount.tpl | 6 +- .../Form/ContributionPage/Delete.tpl | 2 +- .../Form/ContributionPage/Widget.tpl | 2 +- .../CRM/Contribute/Form/ManagePremiums.tpl | 2 +- .../CRM/Contribute/Form/PCP/Delete.tpl | 2 +- .../CRM/Contribute/Form/PaymentInstrument.tpl | 2 +- .../Contribute/Form/Search/EmptyResults.tpl | 2 +- .../CRM/Contribute/Form/Task/Delete.tpl | 2 +- .../CRM/Contribute/Form/Task/Invoice.tpl | 2 +- .../CRM/Contribute/Form/Task/PDF.tpl | 2 +- .../CRM/Contribute/Form/Task/Print.tpl | 2 +- .../Form/Task/SearchTaskHookSample.tpl | 2 +- .../CRM/Contribute/Form/Task/Status.tpl | 87 +- .../CRM/Contribute/Form/UpdateBilling.tpl | 2 +- .../CRM/Contribute/Page/ContributionPage.tpl | 2 +- .../Page/ContributionRecurPayments.tpl | 2 +- .../CRM/Contribute/Page/ContributionType.tpl | 2 +- .../CRM/Contribute/Page/PcpUserDashboard.tpl | 2 +- .../templates/CRM/Contribute/Page/Premium.tpl | 4 +- civicrm/templates/CRM/Contribute/Page/Tab.tpl | 2 +- .../CRM/Contribute/Page/UserDashboard.tpl | 2 +- .../templates/CRM/Core/Form/EntityForm.tpl | 2 +- .../CRM/Custom/Form/ChangeFieldType.tpl | 2 +- .../templates/CRM/Custom/Form/DeleteField.tpl | 2 +- .../templates/CRM/Custom/Form/DeleteFile.tpl | 2 +- .../templates/CRM/Custom/Form/DeleteGroup.tpl | 2 +- civicrm/templates/CRM/Custom/Form/Field.tpl | 2 +- civicrm/templates/CRM/Custom/Form/Option.tpl | 2 +- civicrm/templates/CRM/Custom/Page/Option.tpl | 2 +- civicrm/templates/CRM/Dashlet/Page/Blog.tpl | 2 +- .../CRM/Event/Form/ManageEvent/Delete.tpl | 2 +- .../templates/CRM/Event/Form/Participant.tpl | 2 +- .../CRM/Event/Form/Registration/Register.tpl | 7 +- .../CRM/Event/Form/Search/EmptyResults.tpl | 2 +- .../templates/CRM/Event/Form/Task/Cancel.tpl | 2 +- .../templates/CRM/Event/Form/Task/Delete.tpl | 2 +- .../templates/CRM/Event/Form/Task/Print.tpl | 2 +- .../Event/Form/Task/SearchTaskHookSample.tpl | 2 +- .../templates/CRM/Event/Page/DashBoard.tpl | 2 +- civicrm/templates/CRM/Event/Page/List.tpl | 9 +- .../templates/CRM/Event/Page/ManageEvent.tpl | 4 +- .../Event/Page/ParticipantListing/Name.tpl | 2 +- .../Page/ParticipantListing/NameAndEmail.tpl | 2 +- .../ParticipantListing/NameStatusAndDate.tpl | 2 +- civicrm/templates/CRM/Event/Page/Tab.tpl | 2 +- .../CRM/Event/Page/UserDashboard.tpl | 2 +- .../templates/CRM/Financial/Form/Export.tpl | 2 +- .../CRM/Financial/Form/FinancialAccount.tpl | 2 +- .../CRM/Financial/Form/FinancialBatch.tpl | 2 +- .../Financial/Form/FinancialTypeAccount.tpl | 2 +- .../CRM/Financial/Page/FinancialAccount.tpl | 2 +- .../CRM/Financial/Page/FinancialType.tpl | 2 +- .../Financial/Page/FinancialTypeAccount.tpl | 2 +- civicrm/templates/CRM/Grant/Form/Grant.tpl | 2 +- .../CRM/Grant/Form/Search/EmptyResults.tpl | 2 +- .../templates/CRM/Grant/Form/Task/Delete.tpl | 2 +- .../templates/CRM/Grant/Form/Task/Print.tpl | 2 +- .../Grant/Form/Task/SearchTaskHookSample.tpl | 2 +- civicrm/templates/CRM/Grant/Page/Tab.tpl | 2 +- .../templates/CRM/Logging/ReportDetail.tpl | 4 +- .../CRM/Mailing/Form/InsertTokens.tpl | 29 +- .../templates/CRM/Mailing/Form/Settings.hlp | 4 + .../templates/CRM/Mailing/Form/Task/Print.tpl | 2 +- civicrm/templates/CRM/Mailing/Page/Browse.tpl | 8 +- .../templates/CRM/Mailing/Page/Confirm.tpl | 2 +- civicrm/templates/CRM/Mailing/Page/Event.tpl | 2 +- .../CRM/Mailing/Page/Resubscribe.tpl | 2 +- .../templates/CRM/Member/Form/Membership.tpl | 6 +- .../CRM/Member/Form/MembershipRenewal.tpl | 4 +- .../CRM/Member/Form/MembershipStatus.tpl | 2 +- .../CRM/Member/Form/MembershipType.tpl | 2 +- .../CRM/Member/Form/Search/EmptyResults.tpl | 2 +- .../templates/CRM/Member/Form/Task/Delete.tpl | 2 +- .../Member/Form/Task/SearchTaskHookSample.tpl | 2 +- .../CRM/Member/Page/MembershipType.tpl | 2 +- civicrm/templates/CRM/Member/Page/Tab.tpl | 2 +- .../CRM/Member/Page/UserDashboard.tpl | 2 +- civicrm/templates/CRM/PCP/Form/PCP/Delete.tpl | 2 +- civicrm/templates/CRM/PCP/Page/PCP.tpl | 2 +- civicrm/templates/CRM/PCP/Page/PCPInfo.tpl | 2 +- civicrm/templates/CRM/Pledge/Form/Pledge.tpl | 6 +- .../templates/CRM/Pledge/Form/PledgeView.tpl | 2 +- .../CRM/Pledge/Form/Search/EmptyResults.tpl | 2 +- .../templates/CRM/Pledge/Form/Task/Delete.tpl | 2 +- .../templates/CRM/Pledge/Form/Task/Print.tpl | 2 +- .../Pledge/Form/Task/SearchTaskHookSample.tpl | 2 +- civicrm/templates/CRM/Pledge/Page/Tab.tpl | 2 +- .../CRM/Pledge/Page/UserDashboard.tpl | 2 +- .../templates/CRM/Price/Form/Calculate.tpl | 2 +- .../templates/CRM/Price/Form/DeleteField.tpl | 2 +- civicrm/templates/CRM/Price/Form/Option.tpl | 2 +- civicrm/templates/CRM/Price/Form/PriceSet.tpl | 7 + civicrm/templates/CRM/Price/Page/Field.tpl | 4 +- civicrm/templates/CRM/Price/Page/Option.tpl | 2 +- civicrm/templates/CRM/Price/Page/Set.tpl | 2 +- .../templates/CRM/Profile/Form/Dynamic.tpl | 10 +- civicrm/templates/CRM/Profile/Form/Search.tpl | 4 +- .../templates/CRM/Profile/Page/Listings.tpl | 2 +- .../Page/MultipleRecordFieldsListing.tpl | 2 +- .../CRM/Report/Form/ErrorMessage.tpl | 2 +- .../CRM/Report/Form/Layout/Table.tpl | 6 +- .../templates/CRM/Report/Form/Register.tpl | 2 +- .../CRM/Report/Form/Tabs/GroupBy.tpl | 10 +- .../CRM/Report/Form/Tabs/Settings.hlp | 2 +- .../CRM/Report/Page/InstanceList.tpl | 2 +- .../CRM/Report/Page/TemplateList.tpl | 2 +- civicrm/templates/CRM/SMS/Form/Group.tpl | 2 +- civicrm/templates/CRM/SMS/Form/Provider.tpl | 4 +- civicrm/templates/CRM/SMS/Page/Provider.tpl | 5 +- civicrm/templates/CRM/UF/Form/Field.tpl | 2 +- civicrm/templates/CRM/UF/Form/Group.tpl | 2 +- civicrm/templates/CRM/UF/Page/Field.tpl | 2 +- civicrm/templates/CRM/UF/Page/Group.tpl | 2 +- .../CRM/common/civicrm.settings.php.template | 31 +- civicrm/templates/CRM/common/info.tpl | 4 +- civicrm/templates/CRM/common/l10n.js.tpl | 10 +- civicrm/templates/CRM/common/success.tpl | 3 +- civicrm/vendor/autoload.php | 2 +- civicrm/vendor/composer/autoload_classmap.php | 2 +- .../vendor/composer/autoload_namespaces.php | 2 +- civicrm/vendor/composer/autoload_real.php | 14 +- civicrm/vendor/composer/autoload_static.php | 15 +- civicrm/vendor/composer/include_paths.php | 1 + civicrm/vendor/composer/installed.json | 101 +- civicrm/vendor/dompdf/dompdf/README.md | 53 +- civicrm/vendor/dompdf/dompdf/VERSION | 2 +- civicrm/vendor/dompdf/dompdf/composer.json | 18 +- civicrm/vendor/dompdf/dompdf/lib/Cpdf.php | 371 ++--- .../dompdf/dompdf/lib/html5lib/Data.php | 4 +- .../dompdf/lib/html5lib/InputStream.php | 18 +- .../dompdf/dompdf/lib/html5lib/Parser.php | 4 +- .../dompdf/dompdf/lib/html5lib/Tokenizer.php | 416 +++--- .../dompdf/lib/html5lib/TreeBuilder.php | 398 ++--- .../dompdf/dompdf/lib/res/broken_image.svg | 4 +- civicrm/vendor/dompdf/dompdf/lib/res/html.css | 9 +- .../vendor/dompdf/dompdf/src/Adapter/CPDF.php | 219 +-- .../vendor/dompdf/dompdf/src/Adapter/GD.php | 71 +- .../dompdf/dompdf/src/Adapter/PDFLib.php | 180 ++- .../vendor/dompdf/dompdf/src/Autoloader.php | 8 +- civicrm/vendor/dompdf/dompdf/src/Canvas.php | 10 +- civicrm/vendor/dompdf/dompdf/src/Cellmap.php | 49 +- .../dompdf/src/Css/AttributeTranslator.php | 177 ++- .../vendor/dompdf/dompdf/src/Css/Color.php | 14 +- .../vendor/dompdf/dompdf/src/Css/Style.php | 905 +++++++----- .../dompdf/dompdf/src/Css/Stylesheet.php | 102 +- civicrm/vendor/dompdf/dompdf/src/Dompdf.php | 211 +-- .../vendor/dompdf/dompdf/src/FontMetrics.php | 64 +- civicrm/vendor/dompdf/dompdf/src/Frame.php | 185 ++- .../dompdf/dompdf/src/Frame/FrameTree.php | 8 +- .../dompdf/src/Frame/FrameTreeIterator.php | 4 +- .../FrameDecorator/AbstractFrameDecorator.php | 4 +- .../dompdf/src/FrameDecorator/Block.php | 12 +- .../dompdf/src/FrameDecorator/Inline.php | 2 +- .../dompdf/src/FrameDecorator/ListBullet.php | 2 +- .../dompdf/dompdf/src/FrameDecorator/Page.php | 11 +- .../dompdf/src/FrameDecorator/Table.php | 18 +- .../dompdf/src/FrameDecorator/TableCell.php | 8 +- .../dompdf/src/FrameDecorator/TableRow.php | 2 +- .../dompdf/dompdf/src/FrameDecorator/Text.php | 6 +- .../FrameReflower/AbstractFrameReflower.php | 28 +- .../dompdf/dompdf/src/FrameReflower/Block.php | 34 +- .../dompdf/dompdf/src/FrameReflower/Image.php | 2 +- .../dompdf/dompdf/src/FrameReflower/Page.php | 6 +- .../dompdf/dompdf/src/FrameReflower/Table.php | 32 +- .../dompdf/src/FrameReflower/TableCell.php | 16 +- .../dompdf/dompdf/src/FrameReflower/Text.php | 46 +- civicrm/vendor/dompdf/dompdf/src/Helpers.php | 168 ++- .../vendor/dompdf/dompdf/src/Image/Cache.php | 18 +- civicrm/vendor/dompdf/dompdf/src/LineBox.php | 10 +- civicrm/vendor/dompdf/dompdf/src/Options.php | 6 +- .../vendor/dompdf/dompdf/src/PhpEvaluator.php | 2 +- .../dompdf/dompdf/src/Positioner/Absolute.php | 2 +- .../dompdf/src/Positioner/ListBullet.php | 6 +- civicrm/vendor/dompdf/dompdf/src/Renderer.php | 10 +- .../dompdf/src/Renderer/AbstractRenderer.php | 45 +- .../dompdf/dompdf/src/Renderer/Block.php | 24 +- .../dompdf/dompdf/src/Renderer/Image.php | 8 +- .../dompdf/dompdf/src/Renderer/Inline.php | 82 +- .../dompdf/dompdf/src/Renderer/ListBullet.php | 8 +- .../dompdf/dompdf/src/Renderer/TableCell.php | 120 +- .../dompdf/src/Renderer/TableRowGroup.php | 4 +- .../dompdf/dompdf/src/Renderer/Text.php | 6 +- civicrm/vendor/pear/mail_mime/.gitattributes | 4 + .../pear/mail_mime}/Mail/mime.php | 350 +++-- .../pear/mail_mime}/Mail/mimePart.php | 98 +- civicrm/vendor/pear/mail_mime/PATCHES.txt | 7 + civicrm/vendor/pear/mail_mime/README | 19 + civicrm/vendor/pear/mail_mime/composer.json | 34 + civicrm/vendor/phenx/php-font-lib/.travis.yml | 15 +- .../vendor/phenx/php-font-lib/composer.json | 2 +- .../sample-fonts/NotoSansShavian-Regular.ttf | Bin 0 -> 6020 bytes .../src/FontLib/AdobeFontMetrics.php | 2 +- .../src/FontLib/Table/Type/cmap.php | 120 +- .../src/FontLib/Table/Type/hmtx.php | 6 +- .../src/FontLib/Table/Type/loca.php | 4 +- .../src/FontLib/TrueType/File.php | 2 +- .../Sabberworm/CSS/CSSList/CSSBlockList.php | 31 +- .../lib/Sabberworm/CSS/CSSList/Document.php | 3 - .../xml/schema/Contact/RelationshipCache.xml | 197 +++ civicrm/xml/schema/Contact/files.xml | 1 + civicrm/xml/schema/Event/Cart/Cart.xml | 1 + civicrm/xml/schema/Event/Cart/EventInCart.xml | 1 + civicrm/xml/templates/civicrm_country.tpl | 2 +- civicrm/xml/templates/civicrm_data.tpl | 4 +- .../xml/templates/civicrm_state_province.tpl | 2 +- civicrm/xml/version.xml | 2 +- wp-rest/Plugin.php | 1 - 1106 files changed, 11726 insertions(+), 22160 deletions(-) create mode 100644 civicrm/CRM/Contact/BAO/RelationshipCache.php create mode 100644 civicrm/CRM/Contact/DAO/RelationshipCache.php delete mode 100644 civicrm/CRM/Core/BAO/Cache/Psr16.php delete mode 100644 civicrm/CRM/Core/Payment/PaymentExpress.php delete mode 100644 civicrm/CRM/Core/Payment/PaymentExpressIPN.php delete mode 100644 civicrm/CRM/Core/Payment/PaymentExpressUtils.php delete mode 100644 civicrm/CRM/Report/Interface.php create mode 100644 civicrm/CRM/Report/OutputHandler/Csv.php create mode 100644 civicrm/CRM/Report/OutputHandler/Pdf.php create mode 100644 civicrm/CRM/Report/OutputHandler/Print.php delete mode 100644 civicrm/CRM/Upgrade/4.3.5.msg_template/civicrm_msg_template.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/civicrm_msg_template.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha3.msg_template/civicrm_msg_template.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/pcp_notify_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta1.msg_template/civicrm_msg_template.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta2.msg_template/civicrm_msg_template.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta3.msg_template/civicrm_msg_template.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.4.3.msg_template/civicrm_msg_template.tpl delete mode 100644 civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.4.alpha1.msg_template/civicrm_msg_template.tpl delete mode 100644 civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_text.tpl delete mode 100644 civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_html.tpl delete mode 100644 civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_text.tpl create mode 100644 civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php delete mode 100644 civicrm/CRM/Upgrade/Incremental/php/FourFour.php delete mode 100644 civicrm/CRM/Upgrade/Incremental/php/FourThree.php delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.0.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.1.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.2.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.3.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.4.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.5.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.6.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.7.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.8.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.9.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha1.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha2.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha3.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.beta1.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.beta2.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.beta3.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.beta4.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.3.beta5.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.4.0.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.4.1.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.4.2.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.4.3.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.4.4.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.4.5.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.4.6.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.4.alpha1.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/4.4.beta1.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.28.0.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.28.1.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.28.2.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.28.3.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.28.4.mysql.tpl create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.29.0.mysql.tpl create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.29.alpha1.mysql.tpl create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.29.beta1.mysql.tpl create mode 100644 civicrm/CRM/Utils/Check/Component/Cms.php delete mode 100644 civicrm/CRM/Widget/Widget.php create mode 100644 civicrm/Civi/Api4/Generic/BasicEntity.php create mode 100644 civicrm/Civi/Api4/Generic/BridgeEntity.php create mode 100644 civicrm/Civi/Api4/RelationshipCache.php delete mode 100644 civicrm/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php create mode 100644 civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php create mode 100644 civicrm/Civi/Report/OutputHandlerBase.php create mode 100644 civicrm/Civi/Report/OutputHandlerFactory.php create mode 100644 civicrm/Civi/Report/OutputHandlerInterface.php rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/BAO/Cart.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/BAO/Conference.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/BAO/EventInCart.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/BAO/MerParticipant.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Controller/Checkout.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Form/Cart.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Form/Checkout/ConferenceEvents.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Form/Checkout/Payment.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Form/Checkout/ThankYou.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Form/MerParticipant.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Page/AddToCart.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Page/CheckoutAJAX.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Page/RemoveFromCart.php (100%) rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/Page/ViewCart.php (100%) create mode 100644 civicrm/ext/eventcart/CRM/Event/Cart/PageCallback.php rename civicrm/{ => ext/eventcart}/CRM/Event/Cart/StateMachine/Checkout.php (100%) create mode 100644 civicrm/ext/eventcart/LICENSE.txt create mode 100644 civicrm/ext/eventcart/README.md create mode 100644 civicrm/ext/eventcart/eventcart.civix.php create mode 100644 civicrm/ext/eventcart/eventcart.php create mode 100644 civicrm/ext/eventcart/images/screenshot.png create mode 100644 civicrm/ext/eventcart/info.xml create mode 100644 civicrm/ext/eventcart/settings/Eventcart.setting.php rename civicrm/{ => ext/eventcart}/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl (100%) rename civicrm/{ => ext/eventcart}/templates/CRM/Event/Cart/Form/Checkout/Participant.tpl (100%) rename civicrm/{ => ext/eventcart}/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl (100%) rename civicrm/{ => ext/eventcart}/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl (100%) rename civicrm/{ => ext/eventcart}/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl (100%) rename civicrm/{ => ext/eventcart}/templates/CRM/Event/Cart/Form/viewCartLink.tpl (100%) rename civicrm/{ => ext/eventcart}/templates/CRM/Event/Cart/Page/AddToCart.tpl (100%) rename civicrm/{ => ext/eventcart}/templates/CRM/Event/Cart/Page/ViewCart.tpl (100%) create mode 100644 civicrm/ext/eventcart/templates/CRM/Event/Cart/eventlistpre.tpl create mode 100644 civicrm/ext/eventcart/xml/Menu/Eventcart.xml delete mode 100644 civicrm/extern/pxIPN.php delete mode 100644 civicrm/i/crm-button-bg.gif delete mode 100644 civicrm/packages/Net/Curl.php delete mode 100644 civicrm/packages/Net/DIME.php create mode 100644 civicrm/release-notes/5.29.0.md delete mode 100644 civicrm/setup/res/error.html create mode 100644 civicrm/setup/res/installer.tpl.php create mode 100644 civicrm/setup/res/jquery.setupui.js create mode 100644 civicrm/setup/res/page.tpl.php delete mode 100644 civicrm/setup/res/template.php create mode 100644 civicrm/setup/src/Setup/UI/SetupResponse.php create mode 100644 civicrm/vendor/pear/mail_mime/.gitattributes rename civicrm/{packages => vendor/pear/mail_mime}/Mail/mime.php (87%) rename civicrm/{packages => vendor/pear/mail_mime}/Mail/mimePart.php (93%) create mode 100644 civicrm/vendor/pear/mail_mime/PATCHES.txt create mode 100644 civicrm/vendor/pear/mail_mime/README create mode 100644 civicrm/vendor/pear/mail_mime/composer.json create mode 100644 civicrm/vendor/phenx/php-font-lib/sample-fonts/NotoSansShavian-Regular.ttf create mode 100644 civicrm/xml/schema/Contact/RelationshipCache.xml diff --git a/civicrm.php b/civicrm.php index fd9c8d3dae..62bb020b46 100644 --- a/civicrm.php +++ b/civicrm.php @@ -2,7 +2,7 @@ /* Plugin Name: CiviCRM Description: CiviCRM - Growing and Sustaining Relationships -Version: 5.28.4 +Version: 5.29.0 Requires at least: 4.9 Requires PHP: 7.1 Author: CiviCRM LLC @@ -56,7 +56,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Set version here: when it changes, will force JS to reload -define( 'CIVICRM_PLUGIN_VERSION', '5.28.4' ); +define( 'CIVICRM_PLUGIN_VERSION', '5.29.0' ); // Store reference to this file if (!defined('CIVICRM_PLUGIN_FILE')) { @@ -387,6 +387,9 @@ class CiviCRM_For_WordPress { // Register all hooks on init add_action( 'init', array( $this, 'register_hooks' ) ); + // Filter Heartbeat on CiviCRM admin pages as late as is practical. + add_filter( 'heartbeat_settings', array( $this, 'heartbeat' ), 1000, 1 ); + /** * Broadcast that this plugin is now loaded. * @@ -444,6 +447,56 @@ class CiviCRM_For_WordPress { } + /** + * Slow down the frequency of WordPress heartbeat calls. + * + * Heartbeat is important to WordPress for a number of tasks - e.g. checking + * continued authentication whilst on a page - but it does consume server + * resources. Reducing the frequency of calls minimises the impact on servers + * and can make CiviCRM more responsive. + * + * @since 5.29 + * + * @param array $settings The existing heartbeat settings. + * @return array $settings The modified heartbeat settings. + */ + public function heartbeat( $settings ) { + + // Access script identifier. + global $pagenow; + + // Bail if not admin. + if (!is_admin()) { + return $settings; + } + + // Process the requested URL. + $requested_url = filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_URL); + if ( $requested_url ) { + $current_url = wp_unslash($requested_url); + } else { + $current_url = admin_url(); + } + $current_screen = wp_parse_url($current_url); + + // Bail if this is not CiviCRM admin. + if ($pagenow != 'admin.php' || false === strpos($current_screen['query'], 'page=CiviCRM')) { + return $settings; + } + + // Defer to any previously set value, but only if it's greater than ours. + if (!empty($settings['interval']) && intval($settings['interval']) > 120) { + return $settings; + } + + // Slow down heartbeat. + $settings['interval'] = 120; + + return $settings; + + } + + /** * Set broad CiviCRM context. * diff --git a/civicrm/CRM/ACL/API.php b/civicrm/CRM/ACL/API.php index ba4991dc2d..17982fb7ba 100644 --- a/civicrm/CRM/ACL/API.php +++ b/civicrm/CRM/ACL/API.php @@ -189,7 +189,7 @@ class CRM_ACL_API { } if (!$contactID) { - $contactID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $contactID = CRM_Core_Session::getLoggedInContactID(); } $key = "{$tableName}_{$type}_{$contactID}"; diff --git a/civicrm/CRM/ACL/BAO/ACL.php b/civicrm/CRM/ACL/BAO/ACL.php index 6b523272a3..988340c94d 100644 --- a/civicrm/CRM/ACL/BAO/ACL.php +++ b/civicrm/CRM/ACL/BAO/ACL.php @@ -28,39 +28,6 @@ class CRM_ACL_BAO_ACL extends CRM_ACL_DAO_ACL { public static $_fieldKeys = NULL; - /** - * Get ACL entity table. - * @deprecated - * @return array|null - */ - public static function entityTable() { - CRM_Core_Error::deprecatedFunctionWarning('unused function to be removed'); - if (!self::$_entityTable) { - self::$_entityTable = [ - 'civicrm_contact' => ts('Contact'), - 'civicrm_acl_role' => ts('ACL Role'), - ]; - } - return self::$_entityTable; - } - - /** - * @return array|null - * @deprecated - */ - public static function objectTable() { - CRM_Core_Error::deprecatedFunctionWarning('unused function to be removed'); - if (!self::$_objectTable) { - self::$_objectTable = [ - 'civicrm_contact' => ts('Contact'), - 'civicrm_group' => ts('Group'), - 'civicrm_saved_search' => ts('Contact Group'), - 'civicrm_admin' => ts('Import'), - ]; - } - return self::$_objectTable; - } - /** * Available operations for pseudoconstant. * @@ -80,44 +47,6 @@ class CRM_ACL_BAO_ACL extends CRM_ACL_DAO_ACL { return self::$_operation; } - /** - * Given a table and id pair, return the filter clause - * - * @param string $table - * The table owning the object. - * @param int $id - * The ID of the object. - * @param array $tables - * Tables that will be needed in the FROM. - * @deprecated - * - * @return string|null - * WHERE-style clause to filter results, - * or null if $table or $id is null - * - * @throws \CRM_Core_Exception - */ - public static function getClause($table, $id, &$tables) { - CRM_Core_Error::deprecatedFunctionWarning('unused function to be removed'); - $table = CRM_Utils_Type::escape($table, 'String'); - $id = CRM_Utils_Type::escape($id, 'Integer'); - $whereTables = []; - - $ssTable = CRM_Contact_BAO_SavedSearch::getTableName(); - - if (empty($table)) { - return NULL; - } - elseif ($table == $ssTable) { - return CRM_Contact_BAO_SavedSearch::whereClause($id, $tables, $whereTables); - } - elseif (!empty($id)) { - $tables[$table] = TRUE; - return "$table.id = $id"; - } - return NULL; - } - /** * Construct an associative array of an ACL rule's properties * diff --git a/civicrm/CRM/ACL/Form/WordPress/Permissions.php b/civicrm/CRM/ACL/Form/WordPress/Permissions.php index de224f26a4..a59131ffeb 100644 --- a/civicrm/CRM/ACL/Form/WordPress/Permissions.php +++ b/civicrm/CRM/ACL/Form/WordPress/Permissions.php @@ -135,7 +135,7 @@ class CRM_ACL_Form_WordPress_Permissions extends CRM_Core_Form { } //Add the selected wordpress capabilities for the role - $rolePermissions = $params[$role]; + $rolePermissions = $params[$role] ?? []; if (!empty($rolePermissions)) { foreach ($rolePermissions as $key => $capability) { $roleObj->add_cap($key); diff --git a/civicrm/CRM/Activity/BAO/Activity.php b/civicrm/CRM/Activity/BAO/Activity.php index cea9b53355..3c8a0eb155 100644 --- a/civicrm/CRM/Activity/BAO/Activity.php +++ b/civicrm/CRM/Activity/BAO/Activity.php @@ -1783,16 +1783,14 @@ WHERE activity.id IN ($activityIds)"; * particular component object. * * @return string + * @throws \CRM_Core_Exception */ public static function getActivitySubject($entityObj) { + // @todo determine the subject on the appropriate entity rather than from the activity. switch ($entityObj->__table) { case 'civicrm_membership': - $membershipType = CRM_Member_PseudoConstant::membershipType($entityObj->membership_type_id); - $subject = $membershipType ? $membershipType : ts('Membership'); - - if (is_array($subject)) { - $subject = implode(", ", $subject); - } + $membershipType = CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'membership_type_id', $entityObj->membership_type_id); + $subject = $membershipType ?: ts('Membership'); if (!CRM_Utils_System::isNull($entityObj->source)) { $subject .= " - {$entityObj->source}"; @@ -1803,7 +1801,7 @@ WHERE activity.id IN ($activityIds)"; $subject .= sprintf(' (by %s)', $displayName); } - $subject .= " - Status: " . CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipStatus', $entityObj->status_id, 'label'); + $subject .= ' - Status: ' . CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'status_id', $entityObj->status_id); return $subject; case 'civicrm_participant': @@ -2132,91 +2130,75 @@ AND cl.modified_id = c.id self::$_exportableFields[$name] = []; // TODO: ideally we should retrieve all fields from xml, in this case since activity processing is done - // my case hence we have defined fields as case_* - if ($name === 'Activity') { - $exportableFields = CRM_Activity_DAO_Activity::export(); - $exportableFields['source_contact_id'] = [ - 'title' => ts('Source Contact ID'), - 'type' => CRM_Utils_Type::T_INT, - ]; - $exportableFields['source_contact'] = [ - 'title' => ts('Source Contact'), + $exportableFields = CRM_Activity_DAO_Activity::export(); + $exportableFields['source_contact_id'] = [ + 'title' => ts('Source Contact ID'), + 'type' => CRM_Utils_Type::T_INT, + ]; + $exportableFields['source_contact'] = [ + 'title' => ts('Source Contact'), + 'type' => CRM_Utils_Type::T_STRING, + ]; + + // @todo - remove these - they are added by CRM_Core_DAO::appendPseudoConstantsToFields + // below. That search label stuff is referenced in search builder but is likely just + // a hack that duplicates, maybe differently, other functionality. + $activityFields = [ + 'activity_type' => [ + 'title' => ts('Activity Type'), + 'name' => 'activity_type', 'type' => CRM_Utils_Type::T_STRING, - ]; + 'searchByLabel' => TRUE, + ], + 'activity_status' => [ + 'title' => ts('Activity Status'), + 'name' => 'activity_status', + 'type' => CRM_Utils_Type::T_STRING, + 'searchByLabel' => TRUE, + ], + 'activity_priority' => [ + 'title' => ts('Activity Priority'), + 'name' => 'activity_priority', + 'type' => CRM_Utils_Type::T_STRING, + 'searchByLabel' => TRUE, + ], + ]; + $fields = array_merge($activityFields, $exportableFields); + $fields['activity_type_id']['title'] = ts('Activity Type ID'); + $fields['activity_priority_id'] = $fields['priority_id']; - // @todo - remove these - they are added by CRM_Core_DAO::appendPseudoConstantsToFields - // below. That search label stuff is referenced in search builder but is likely just - // a hack that duplicates, maybe differently, other functionality. - $Activityfields = [ - 'activity_type' => [ - 'title' => ts('Activity Type'), - 'name' => 'activity_type', - 'type' => CRM_Utils_Type::T_STRING, - 'searchByLabel' => TRUE, - ], - 'activity_status' => [ - 'title' => ts('Activity Status'), - 'name' => 'activity_status', - 'type' => CRM_Utils_Type::T_STRING, - 'searchByLabel' => TRUE, - ], - 'activity_priority' => [ - 'title' => ts('Activity Priority'), - 'name' => 'activity_priority', - 'type' => CRM_Utils_Type::T_STRING, - 'searchByLabel' => TRUE, - ], - ]; - $fields = array_merge($Activityfields, $exportableFields); - $fields['activity_type_id']['title'] = ts('Activity Type ID'); - } - else { + if ($name === 'Case') { + // Now add "case_activity" fields // Set title to activity fields. - $fields = [ - 'case_activity_subject' => [ - 'title' => ts('Activity Subject'), - 'type' => CRM_Utils_Type::T_STRING, - ], + $caseActivityFields = [ 'case_source_contact_id' => [ 'title' => ts('Activity Reporter'), 'type' => CRM_Utils_Type::T_STRING, ], - 'case_recent_activity_date' => [ - 'title' => ts('Activity Actual Date'), + 'case_activity_date_time' => [ + 'title' => ts('Activity Date'), 'type' => CRM_Utils_Type::T_DATE, ], - 'case_scheduled_activity_date' => [ - 'title' => ts('Activity Scheduled Date'), - 'type' => CRM_Utils_Type::T_DATE, - ], - 'case_recent_activity_type' => [ + 'case_activity_type' => [ 'title' => ts('Activity Type'), 'type' => CRM_Utils_Type::T_STRING, ], - 'case_activity_status' => [ - 'title' => ts('Activity Status'), - 'type' => CRM_Utils_Type::T_STRING, - ], - 'case_activity_duration' => [ - 'title' => ts('Activity Duration'), - 'type' => CRM_Utils_Type::T_INT, - ], 'case_activity_medium_id' => [ 'title' => ts('Activity Medium'), 'type' => CRM_Utils_Type::T_INT, ], - 'case_activity_details' => [ - 'title' => ts('Activity Details'), - 'type' => CRM_Utils_Type::T_TEXT, - ], 'case_activity_is_auto' => [ 'title' => ts('Activity Auto-generated?'), 'type' => CRM_Utils_Type::T_BOOLEAN, ], ]; + $caseStandardFields = ['activity_subject', 'activity_status', 'activity_duration', 'activity_details']; + foreach ($caseStandardFields as $key) { + $caseActivityFields['case_' . $key] = $fields[$key]; + } + $fields = $caseActivityFields; } - - // add custom data for case activities + // Add custom data $fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Activity')); CRM_Core_DAO::appendPseudoConstantsToFields($fields); self::$_exportableFields[$name] = $fields; @@ -2455,6 +2437,7 @@ INNER JOIN civicrm_option_group grp ON (grp.id = option_group_id AND grp.name = foreach ($types as $type) { $permittedActivityTypes[$type['activity_type_id']] = (int) $type['activity_type_id']; } + asort($permittedActivityTypes); Civi::$statics[__CLASS__]['permitted_activity_types'][$userID] = $permittedActivityTypes; } return Civi::$statics[__CLASS__]['permitted_activity_types'][$userID]; diff --git a/civicrm/CRM/Activity/BAO/Query.php b/civicrm/CRM/Activity/BAO/Query.php index c36e6829a7..20dd823853 100644 --- a/civicrm/CRM/Activity/BAO/Query.php +++ b/civicrm/CRM/Activity/BAO/Query.php @@ -272,7 +272,7 @@ class CRM_Activity_BAO_Query { $val = explode(',', $val); foreach ($val as $tId) { if (is_numeric($tId)) { - $value[$tId] = 1; + $value[] = $tId; } } } diff --git a/civicrm/CRM/Activity/Form/Search.php b/civicrm/CRM/Activity/Form/Search.php index 56035b42a1..bbda19840d 100644 --- a/civicrm/CRM/Activity/Form/Search.php +++ b/civicrm/CRM/Activity/Form/Search.php @@ -182,8 +182,6 @@ class CRM_Activity_Form_Search extends CRM_Core_Form_Search { $this->_formValues["activity_test"] = 0; } - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues); $this->set('queryParams', $this->_queryParams); diff --git a/civicrm/CRM/Activity/Import/Form/DataSource.php b/civicrm/CRM/Activity/Import/Form/DataSource.php index 598951badc..c67c553230 100644 --- a/civicrm/CRM/Activity/Import/Form/DataSource.php +++ b/civicrm/CRM/Activity/Import/Form/DataSource.php @@ -31,20 +31,11 @@ class CRM_Activity_Import_Form_DataSource extends CRM_Import_Form_DataSource { parent::buildQuickForm(); // FIXME: This 'onDuplicate' form element is never used -- copy/paste error? - $duplicateOptions = []; - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Skip'), CRM_Import_Parser::DUPLICATE_SKIP - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Update'), CRM_Import_Parser::DUPLICATE_UPDATE - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Fill'), CRM_Import_Parser::DUPLICATE_FILL - ); - - $this->addGroup($duplicateOptions, 'onDuplicate', - ts('On duplicate entries') - ); + $this->addRadio('onDuplicate', ts('On duplicate entries'), [ + CRM_Import_Parser::DUPLICATE_SKIP => ts('Skip'), + CRM_Import_Parser::DUPLICATE_UPDATE => ts('Update'), + CRM_Import_Parser::DUPLICATE_FILL => ts('Fill'), + ]); } /** diff --git a/civicrm/CRM/Activity/Page/AJAX.php b/civicrm/CRM/Activity/Page/AJAX.php index 1b07ef68a3..65262d50f9 100644 --- a/civicrm/CRM/Activity/Page/AJAX.php +++ b/civicrm/CRM/Activity/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** @@ -379,7 +378,7 @@ class CRM_Activity_Page_AJAX { /** * Get activities for the contact. * - * @return array + * @throws \CRM_Core_Exception */ public static function getContactActivity() { $requiredParameters = [ @@ -420,10 +419,10 @@ class CRM_Activity_Page_AJAX { unset($optionalParameters['context']); foreach ($optionalParameters as $searchField => $dataType) { $formSearchField = $searchField; - if ($searchField == 'activity_type_id') { + if ($searchField === 'activity_type_id') { $formSearchField = 'activity_type_filter_id'; } - elseif ($searchField == 'activity_type_exclude_id') { + elseif ($searchField === 'activity_type_exclude_id') { $formSearchField = 'activity_type_exclude_filter_id'; } if (!empty($params[$searchField])) { @@ -431,7 +430,7 @@ class CRM_Activity_Page_AJAX { if (in_array($searchField, ['activity_date_time_low', 'activity_date_time_high'])) { $activityFilter['activity_date_time_relative'] = 0; } - elseif ($searchField == 'activity_status_id') { + elseif ($searchField === 'activity_status_id') { $activityFilter['status_id'] = explode(',', $activityFilter[$searchField]); } } @@ -439,9 +438,6 @@ class CRM_Activity_Page_AJAX { Civi::contactSettings()->set('activity_tab_filter', $activityFilter); } - if (!empty($_GET['is_unit_test'])) { - return [$activities, $activityFilter]; - } CRM_Utils_JSON::output($activities); } diff --git a/civicrm/CRM/Admin/Form/Job.php b/civicrm/CRM/Admin/Form/Job.php index e304420e0c..0f69059f7b 100644 --- a/civicrm/CRM/Admin/Form/Job.php +++ b/civicrm/CRM/Admin/Form/Job.php @@ -56,7 +56,7 @@ class CRM_Admin_Form_Job extends CRM_Admin_Form { } if ($this->_action & CRM_Core_Action::VIEW) { - $this->assign('jobName', self::getJobName($this->_id)); + $this->assign('jobName', self::getJobName($this->_id)); $this->addButtons([ [ 'type' => 'submit', @@ -70,7 +70,6 @@ class CRM_Admin_Form_Job extends CRM_Admin_Form { ]); return; } - $attributes = CRM_Core_DAO::getAttribute('CRM_Core_DAO_Job'); @@ -242,8 +241,7 @@ class CRM_Admin_Form_Job extends CRM_Admin_Form { // 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) { - // pass "wiki" as 6th param to docURL2 if you are linking to a page in wiki.civicrm.org - $docLink = CRM_Utils_System::docURL2("Managing Scheduled Jobs", NULL, NULL, NULL, NULL, "wiki"); + $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/PaymentProcessor.php b/civicrm/CRM/Admin/Form/PaymentProcessor.php index 5b5e669580..f72e2a91ac 100644 --- a/civicrm/CRM/Admin/Form/PaymentProcessor.php +++ b/civicrm/CRM/Admin/Form/PaymentProcessor.php @@ -21,6 +21,16 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form { use CRM_Core_Form_EntityFormTrait; + /** + * @var int + * Test Payment Processor ID + */ + protected $_testID; + + /** + * @var \CRM_Core_DAO_PaymentProcessor + * Payment Processor DAO Object + */ protected $_paymentProcessorDAO; /** diff --git a/civicrm/CRM/Admin/Form/Setting/Localization.php b/civicrm/CRM/Admin/Form/Setting/Localization.php index 55bb965cf4..d33ebb369d 100644 --- a/civicrm/CRM/Admin/Form/Setting/Localization.php +++ b/civicrm/CRM/Admin/Form/Setting/Localization.php @@ -181,9 +181,8 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting { // add a new db locale if the requested language is not yet supported by the db if (empty($values['makeSinglelingual']) && !empty($values['addLanguage'])) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if (!substr_count($domain->locales, $values['addLanguage'])) { + $locales = CRM_Core_I18n::getMultilingual(); + if (!in_array($values['addLanguage'], $locales)) { CRM_Core_I18n_Schema::addLocale($values['addLanguage'], $values['lcMessages']); } $values['languageLimit'][$values['addLanguage']] = 1; @@ -276,22 +275,15 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting { * @return array */ public static function getDefaultLocaleOptions() { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - $locales = CRM_Core_I18n::languages(); - if ($domain->locales) { + $locales = CRM_Core_I18n::getMultilingual(); + $languages = CRM_Core_I18n::languages(); + if ($locales) { // for multi-lingual sites, populate default language drop-down with available languages - $defaultLocaleOptions = []; - foreach ($locales as $loc => $lang) { - if (substr_count($domain->locales, $loc)) { - $defaultLocaleOptions[$loc] = $lang; - } - } + return array_intersect_key($languages, array_flip($locales)); } else { - $defaultLocaleOptions = $locales; + return $languages; } - return $defaultLocaleOptions; } /** @@ -333,8 +325,6 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting { $ufm = new CRM_Core_DAO_UFMatch(); $ufm->contact_id = $session->get('userID'); if ($newLocale && $ufm->find(TRUE)) { - $ufm->language = $newLocale; - $ufm->save(); $session->set('lcMessages', $newLocale); } } diff --git a/civicrm/CRM/Admin/Form/Setting/Mail.php b/civicrm/CRM/Admin/Form/Setting/Mail.php index 2d16958f04..eb99863fc4 100644 --- a/civicrm/CRM/Admin/Form/Setting/Mail.php +++ b/civicrm/CRM/Admin/Form/Setting/Mail.php @@ -26,6 +26,8 @@ class CRM_Admin_Form_Setting_Mail extends CRM_Admin_Form_Setting { 'mailerJobSize' => CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'mailerJobsMax' => CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'verpSeparator' => CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, + // dev/core#1768 Make this interval configurable. + 'civimail_sync_interval' => CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'replyTo' => CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, ]; @@ -35,7 +37,6 @@ class CRM_Admin_Form_Setting_Mail extends CRM_Admin_Form_Setting { public function buildQuickForm() { CRM_Utils_System::setTitle(ts('Settings - CiviMail')); $this->addFormRule(['CRM_Admin_Form_Setting_Mail', 'formRule']); - parent::buildQuickForm(); } @@ -46,7 +47,6 @@ class CRM_Admin_Form_Setting_Mail extends CRM_Admin_Form_Setting { */ public static function formRule($fields) { $errors = []; - if (CRM_Utils_Array::value('mailerJobSize', $fields) > 0) { if (CRM_Utils_Array::value('mailerJobSize', $fields) < 1000) { $errors['mailerJobSize'] = ts('The job size must be at least 1000 or set to 0 (unlimited).'); @@ -57,7 +57,10 @@ class CRM_Admin_Form_Setting_Mail extends CRM_Admin_Form_Setting { $errors['mailerJobSize'] = ts('A job size smaller than the batch limit will negate the effect of the batch limit.'); } } - + // dev/core#1768 Check the civimail_sync_interval setting. + if (CRM_Utils_Array::value('civimail_sync_interval', $fields) < 1) { + $errors['civimail_sync_interval'] = ts('Error - the synchronization interval must be at least 1'); + } return empty($errors) ? TRUE : $errors; } diff --git a/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php b/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php index bfc248663a..94fce1edaf 100644 --- a/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php +++ b/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php @@ -75,6 +75,8 @@ class CRM_Admin_Form_Setting_Miscellaneous extends CRM_Admin_Form_Setting { CRM_Utils_System::setTitle(ts('Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)')); $this->assign('validTriggerPermission', CRM_Core_DAO::checkTriggerViewPermission(FALSE)); + // dev/core#1812 Assign multilingual status. + $this->assign('isMultilingual', CRM_Core_I18n::isMultilingual()); $this->addFormRule(['CRM_Admin_Form_Setting_Miscellaneous', 'formRule'], $this); diff --git a/civicrm/CRM/Admin/Page/Job.php b/civicrm/CRM/Admin/Page/Job.php index e8ba06d9d5..2164d2b7ce 100644 --- a/civicrm/CRM/Admin/Page/Job.php +++ b/civicrm/CRM/Admin/Page/Job.php @@ -142,6 +142,17 @@ class CRM_Admin_Page_Job extends CRM_Core_Page_Basic { if (CRM_Core_Config::environment() != 'Production') { CRM_Core_Session::setStatus(ts('Execution of scheduled jobs has been turned off by default since this is a non-production environment. You can override this for particular jobs by adding runInNonProductionEnvironment=TRUE as a parameter.'), ts("Non-production Environment"), "warning", array('expires' => 0)); } + else { + $cronError = Civi\Api4\System::check(FALSE) + ->addWhere('name', '=', 'checkLastCron') + ->addWhere('severity_id', '>', 1) + ->setIncludeDisabled(TRUE) + ->execute() + ->first(); + if ($cronError) { + CRM_Core_Session::setStatus($cronError['message'], $cronError['title'], 'alert', ['expires' => 0]); + } + } $sj = new CRM_Core_JobManager(); $rows = $temp = []; diff --git a/civicrm/CRM/Badge/BAO/Badge.php b/civicrm/CRM/Badge/BAO/Badge.php index 5dc49c849d..fc98961f7a 100644 --- a/civicrm/CRM/Badge/BAO/Badge.php +++ b/civicrm/CRM/Badge/BAO/Badge.php @@ -1,25 +1,11 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | 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. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | 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 | +--------------------------------------------------------------------+ */ diff --git a/civicrm/CRM/Badge/Page/AJAX.php b/civicrm/CRM/Badge/Page/AJAX.php index 77049368e1..d1d0ee4563 100644 --- a/civicrm/CRM/Badge/Page/AJAX.php +++ b/civicrm/CRM/Badge/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ class CRM_Badge_Page_AJAX { diff --git a/civicrm/CRM/Campaign/Page/AJAX.php b/civicrm/CRM/Campaign/Page/AJAX.php index 8a29ee97b6..e2d4d6ff02 100644 --- a/civicrm/CRM/Campaign/Page/AJAX.php +++ b/civicrm/CRM/Campaign/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Case/BAO/Query.php b/civicrm/CRM/Case/BAO/Query.php index 71a5e0f147..6958dc6674 100644 --- a/civicrm/CRM/Case/BAO/Query.php +++ b/civicrm/CRM/Case/BAO/Query.php @@ -100,9 +100,9 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_tables['case_relation_type'] = $query->_whereTables['case_relation_type'] = 1; } - if (!empty($query->_returnProperties['case_recent_activity_date'])) { - $query->_select['case_recent_activity_date'] = "case_activity.activity_date_time as case_recent_activity_date"; - $query->_element['case_recent_activity_date'] = 1; + if (!empty($query->_returnProperties['case_activity_date_time'])) { + $query->_select['case_activity_date_time'] = "case_activity.activity_date_time as case_activity_date_time"; + $query->_element['case_activity_date_time'] = 1; $query->_tables['case_activity'] = $query->_whereTables['case_activity'] = 1; } @@ -121,6 +121,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_tables['civicrm_case'] = 1; } + // @todo switch to a more standard case_source_contact as the key where we want the name not the id. if (!empty($query->_returnProperties['case_source_contact_id'])) { $query->_select['case_source_contact_id'] = "civicrm_case_reporter.sort_name as case_source_contact_id"; $query->_element['case_source_contact_id'] = 1; @@ -134,7 +135,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_select['case_activity_status_id'] = "rec_activity_status.id as case_activity_status_id"; $query->_element['case_activity_status_id'] = 1; $query->_tables['case_activity'] = 1; - $query->_tables['recent_activity_status'] = 1; + $query->_tables['case_activity_status'] = 1; $query->_tables['civicrm_case_contact'] = 1; $query->_tables['civicrm_case'] = 1; } @@ -143,7 +144,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_select['case_activity_status'] = "rec_activity_status.label as case_activity_status"; $query->_element['case_activity_status'] = 1; $query->_tables['case_activity'] = 1; - $query->_tables['recent_activity_status'] = 1; + $query->_tables['case_activity_status'] = 1; $query->_tables['civicrm_case_contact'] = 1; $query->_tables['civicrm_case'] = 1; } @@ -157,7 +158,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { } if (!empty($query->_returnProperties['case_activity_medium_id'])) { - $query->_select['case_activity_medium_id'] = "recent_activity_medium.label as case_activity_medium_id"; + $query->_select['case_activity_medium_id'] = "case_activity_medium.label as case_activity_medium_id"; $query->_element['case_activity_medium_id'] = 1; $query->_tables['case_activity'] = 1; $query->_tables['case_activity_medium'] = 1; @@ -181,16 +182,16 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_tables['civicrm_case'] = 1; } - if (!empty($query->_returnProperties['case_scheduled_activity_date'])) { - $query->_select['case_scheduled_activity_date'] = "case_activity.activity_date_time as case_scheduled_activity_date"; - $query->_element['case_scheduled_activity_date'] = 1; + if (!empty($query->_returnProperties['case_activity_date_time'])) { + $query->_select['case_activity_date_time'] = "case_activity.activity_date_time as case_activity_date_time"; + $query->_element['case_activity_date_time'] = 1; $query->_tables['case_activity'] = 1; $query->_tables['civicrm_case_contact'] = 1; $query->_tables['civicrm_case'] = 1; } - if (!empty($query->_returnProperties['case_recent_activity_type'])) { - $query->_select['case_recent_activity_type'] = "rec_activity_type.label as case_recent_activity_type"; - $query->_element['case_recent_activity_type'] = 1; + if (!empty($query->_returnProperties['case_activity_type'])) { + $query->_select['case_activity_type'] = "rec_activity_type.label as case_activity_type"; + $query->_element['case_activity_type'] = 1; $query->_tables['case_activity'] = 1; $query->_tables['case_activity_type'] = 1; $query->_tables['civicrm_case_contact'] = 1; @@ -320,6 +321,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->handleWhereFromMetadata($fieldSpec, $name, $value, $op); return; + // @todo switch to a more standard case_source_contact as the key where we want the name not the id. case 'case_source_contact_id': $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_case_reporter.sort_name", $op, $value, 'String'); $query->_qill[$grouping][] = ts("Activity Reporter %1 '%2'", [1 => $op, 2 => $value]); @@ -329,31 +331,19 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $query->_tables['civicrm_case_contact'] = $query->_whereTables['civicrm_case_contact'] = 1; return; - case 'case_recent_activity_date': + case 'case_activity_date_time': $date = CRM_Utils_Date::format($value); $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("case_activity.activity_date_time", $op, $date, 'Date'); if ($date) { $date = CRM_Utils_Date::customFormat($date); - $query->_qill[$grouping][] = ts("Activity Actual Date %1 %2", [1 => $op, 2 => $date]); + $query->_qill[$grouping][] = ts("Activity Date %1 %2", [1 => $op, 2 => $date]); } $query->_tables['case_activity'] = $query->_whereTables['case_activity'] = 1; $query->_tables['civicrm_case'] = $query->_whereTables['civicrm_case'] = 1; $query->_tables['civicrm_case_contact'] = $query->_whereTables['civicrm_case_contact'] = 1; return; - case 'case_scheduled_activity_date': - $date = CRM_Utils_Date::format($value); - $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("case_activity.activity_date_time", $op, $date, 'Date'); - if ($date) { - $date = CRM_Utils_Date::customFormat($date); - $query->_qill[$grouping][] = ts("Activity Schedule Date %1 %2", [1 => $op, 2 => $date]); - } - $query->_tables['case_activity'] = $query->_whereTables['case_activity'] = 1; - $query->_tables['civicrm_case'] = $query->_whereTables['civicrm_case'] = 1; - $query->_tables['civicrm_case_contact'] = $query->_whereTables['civicrm_case_contact'] = 1; - return; - - case 'case_recent_activity_type': + case 'case_activity_type': $names = $value; if (($activityType = CRM_Core_PseudoConstant::getLabel('CRM_Activity_BAO_Activity', 'activity_type_id', $value)) != FALSE) { $names = $activityType; @@ -374,7 +364,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { } $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("case_activity.status_id", $op, $value, 'Int'); - $query->_qill[$grouping][] = ts("Activity Type %1 %2", [1 => $op, 2 => $names]); + $query->_qill[$grouping][] = ts("Activity Status %1 %2", [1 => $op, 2 => $names]); $query->_tables['case_activity'] = $query->_whereTables['case_activity'] = 1; $query->_tables['civicrm_case'] = $query->_whereTables['civicrm_case'] = 1; $query->_tables['case_activity_status'] = 1; @@ -537,7 +527,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query { $from .= " $side JOIN civicrm_option_value rec_activity_type ON (case_activity.activity_type_id = rec_activity_type.value AND option_group_activity_type.id = rec_activity_type.option_group_id ) "; break; - case 'recent_activity_status': + case 'case_activity_status': $from .= " $side JOIN civicrm_option_group option_group_activity_status ON (option_group_activity_status.name = 'activity_status')"; $from .= " $side JOIN civicrm_option_value rec_activity_status ON (case_activity.status_id = rec_activity_status.value AND option_group_activity_status.id = rec_activity_status.option_group_id ) "; break; @@ -555,7 +545,7 @@ case_relation_type.id = case_relationship.relationship_type_id )"; case 'case_activity_medium': $from .= " $side JOIN civicrm_option_group option_group_activity_medium ON (option_group_activity_medium.name = 'encounter_medium')"; - $from .= " $side JOIN civicrm_option_value recent_activity_medium ON (case_activity.medium_id = recent_activity_medium.value AND option_group_activity_medium.id = recent_activity_medium.option_group_id ) "; + $from .= " $side JOIN civicrm_option_value case_activity_medium ON (case_activity.medium_id = case_activity_medium.value AND option_group_activity_medium.id = case_activity_medium.option_group_id ) "; break; case 'case_activity': @@ -607,11 +597,9 @@ case_relation_type.id = case_relationship.relationship_type_id )"; 'case_type' => 1, 'case_role' => 1, 'case_deleted' => 1, - 'case_recent_activity_date' => 1, - 'case_recent_activity_type' => 1, - 'case_scheduled_activity_date' => 1, + 'case_activity_date_time' => 1, + 'case_activity_type' => 1, 'phone' => 1, - // 'case_scheduled_activity_type'=> 1 ]; if ($includeCustomFields) { @@ -643,6 +631,7 @@ case_relation_type.id = case_relationship.relationship_type_id )"; 'case_start_date' => 1, 'case_end_date' => 1, 'case_subject' => 1, + // @todo switch to a more standard case_source_contact as the key where we want the name not the id. 'case_source_contact_id' => 1, 'case_activity_status' => 1, 'case_activity_duration' => 1, diff --git a/civicrm/CRM/Case/Form/ActivityToCase.php b/civicrm/CRM/Case/Form/ActivityToCase.php index 6611302e27..e591c8405a 100644 --- a/civicrm/CRM/Case/Form/ActivityToCase.php +++ b/civicrm/CRM/Case/Form/ActivityToCase.php @@ -60,7 +60,7 @@ class CRM_Case_Form_ActivityToCase extends CRM_Core_Form { $params = ['id' => $this->_activityId]; CRM_Activity_BAO_Activity::retrieve($params, $defaults); - $defaults['file_on_case_activity_subject'] = $defaults['subject']; + $defaults['file_on_case_activity_subject'] = $defaults['subject'] ?? ''; $defaults['file_on_case_target_contact_id'] = $defaults['target_contact']; // If this contact has an open case, supply it as a default diff --git a/civicrm/CRM/Case/Form/Search.php b/civicrm/CRM/Case/Form/Search.php index 8d971a851f..b22ab8c08e 100644 --- a/civicrm/CRM/Case/Form/Search.php +++ b/civicrm/CRM/Case/Form/Search.php @@ -202,8 +202,6 @@ class CRM_Case_Form_Search extends CRM_Core_Form_Search { if (empty($this->_formValues['case_deleted'])) { $this->_formValues['case_deleted'] = 0; } - // @todo - stop changing formValues - respect submitted form values, change a working array. - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); // @todo - stop changing formValues - respect submitted form values, change a working array. $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues); diff --git a/civicrm/CRM/Case/Info.php b/civicrm/CRM/Case/Info.php index bf9d4adca5..ef3bcb41df 100644 --- a/civicrm/CRM/Case/Info.php +++ b/civicrm/CRM/Case/Info.php @@ -255,12 +255,10 @@ class CRM_Case_Info extends CRM_Core_Component_Info { $dao = new CRM_Core_DAO(); $db = $dao->getDatabaseConnection(); - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - $multiLingual = (bool) $domain->locales; + $locales = CRM_Core_I18n::getMultilingual(); $smarty = CRM_Core_Smarty::singleton(); - $smarty->assign('multilingual', $multiLingual); - $smarty->assign('locales', explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales)); + $smarty->assign('multilingual', (bool) $locales); + $smarty->assign('locales', $locales); if (!$lineMode) { diff --git a/civicrm/CRM/Case/Page/AJAX.php b/civicrm/CRM/Case/Page/AJAX.php index abf2858d87..09ed2df5be 100644 --- a/civicrm/CRM/Case/Page/AJAX.php +++ b/civicrm/CRM/Case/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Case/XMLProcessor/Process.php b/civicrm/CRM/Case/XMLProcessor/Process.php index 3ee34f9987..3a75649f0b 100644 --- a/civicrm/CRM/Case/XMLProcessor/Process.php +++ b/civicrm/CRM/Case/XMLProcessor/Process.php @@ -465,7 +465,7 @@ AND a.is_deleted = 0 ]; } - $activityParams['assignee_contact_id'] = $this->getDefaultAssigneeForActivity($activityParams, $activityTypeXML); + $activityParams['assignee_contact_id'] = $this->getDefaultAssigneeForActivity($activityParams, $activityTypeXML, $params['caseID']); //parsing date to default preference format $params['activity_date_time'] = CRM_Utils_Date::processDate($params['activity_date_time']); @@ -565,10 +565,11 @@ AND a.is_deleted = 0 * * @param array $activityParams * @param object $activityTypeXML + * @param int $caseId * * @return int|null the ID of the default assignee contact or null if none. */ - protected function getDefaultAssigneeForActivity($activityParams, $activityTypeXML) { + protected function getDefaultAssigneeForActivity($activityParams, $activityTypeXML, $caseId) { if (!isset($activityTypeXML->default_assignee_type)) { return NULL; } @@ -577,7 +578,7 @@ AND a.is_deleted = 0 switch ($activityTypeXML->default_assignee_type) { case $defaultAssigneeOptionsValues['BY_RELATIONSHIP']: - return $this->getDefaultAssigneeByRelationship($activityParams, $activityTypeXML); + return $this->getDefaultAssigneeByRelationship($activityParams, $activityTypeXML, $caseId); break; case $defaultAssigneeOptionsValues['SPECIFIC_CONTACT']: @@ -622,10 +623,11 @@ AND a.is_deleted = 0 * * @param array $activityParams * @param object $activityTypeXML + * @param int $caseId * * @return int|null the ID of the default assignee contact or null if none. */ - protected function getDefaultAssigneeByRelationship($activityParams, $activityTypeXML) { + protected function getDefaultAssigneeByRelationship($activityParams, $activityTypeXML, $caseId) { $isDefaultRelationshipDefined = isset($activityTypeXML->default_assignee_relationship) && preg_match('/\d+_[ab]_[ab]/', $activityTypeXML->default_assignee_relationship); @@ -642,6 +644,8 @@ AND a.is_deleted = 0 'relationship_type_id' => $relTypeId, "contact_id_$b" => $targetContactId, 'is_active' => 1, + 'case_id' => $caseId, + 'options' => ['limit' => 1], ]; if ($this->isBidirectionalRelationshipType($relTypeId)) { @@ -650,6 +654,10 @@ AND a.is_deleted = 0 } $relationships = civicrm_api3('Relationship', 'get', $params); + if (empty($relationships['count'])) { + $params['case_id'] = ['IS NULL' => 1]; + $relationships = civicrm_api3('Relationship', 'get', $params); + } if ($relationships['count']) { $relationship = CRM_Utils_Array::first($relationships['values']); diff --git a/civicrm/CRM/Case/XMLRepository.php b/civicrm/CRM/Case/XMLRepository.php index 8e1853bd59..9317db9b23 100644 --- a/civicrm/CRM/Case/XMLRepository.php +++ b/civicrm/CRM/Case/XMLRepository.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * The XMLRepository is responsible for loading XML for case-types. * It includes any bulk operations that apply across the list of all XML * documents of all case-types. diff --git a/civicrm/CRM/Contact/BAO/Contact.php b/civicrm/CRM/Contact/BAO/Contact.php index 2bb378d1d3..6a105253d6 100644 --- a/civicrm/CRM/Contact/BAO/Contact.php +++ b/civicrm/CRM/Contact/BAO/Contact.php @@ -27,12 +27,12 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact { const DROP_STRIP_FUNCTION_43 = "DROP FUNCTION IF EXISTS civicrm_strip_non_numeric"; const CREATE_STRIP_FUNCTION_43 = " - CREATE FUNCTION civicrm_strip_non_numeric(input VARCHAR(255) CHARACTER SET utf8) - RETURNS VARCHAR(255) CHARACTER SET utf8 + CREATE FUNCTION civicrm_strip_non_numeric(input VARCHAR(255)) + RETURNS VARCHAR(255) DETERMINISTIC NO SQL BEGIN - DECLARE output VARCHAR(255) CHARACTER SET utf8 DEFAULT ''; + DECLARE output VARCHAR(255) DEFAULT ''; DECLARE iterator INT DEFAULT 1; WHILE iterator < (LENGTH(input) + 1) DO IF SUBSTRING(input, iterator, 1) IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9') THEN @@ -304,7 +304,7 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact { } } - if (array_key_exists('group', $params)) { + if (!empty($params['group'])) { $contactIds = [$params['contact_id']]; foreach ($params['group'] as $groupId => $flag) { if ($flag == 1) { @@ -1958,10 +1958,14 @@ ORDER BY civicrm_email.is_primary DESC"; * * @return int * contact id created/edited + * + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception + * @throws \Civi\API\Exception\UnauthorizedException */ public static function createProfileContact( &$params, - &$fields = [], + $fields = [], $contactID = NULL, $addToGroupID = NULL, $ufGroupId = NULL, @@ -2021,7 +2025,7 @@ ORDER BY civicrm_email.is_primary DESC"; } // Process group and tag - if (!empty($fields['group'])) { + if (isset($params['group'])) { $method = 'Admin'; // this for sure means we are coming in via profile since i added it to fix // removing contacts from user groups -- lobo @@ -2049,8 +2053,6 @@ ORDER BY civicrm_email.is_primary DESC"; CRM_Contact_BAO_GroupContact::addContactsToGroup($contactIds, $addToGroupID); } - CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush(); - if ($editHook) { CRM_Utils_Hook::post('edit', 'Profile', $contactID, $params); } @@ -3401,15 +3403,6 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id ) * @see CRM_Core_DAO::triggerRebuild */ public static function triggerInfo(&$info, $tableName = NULL) { - //during upgrade, first check for valid version and then create triggers - //i.e the columns created_date and modified_date are introduced in 4.3.alpha1 so dont create triggers for older version - if (CRM_Core_Config::isUpgradeMode()) { - $currentVer = CRM_Core_BAO_Domain::version(TRUE); - //if current version is less than 4.3.alpha1 dont create below triggers - if (version_compare($currentVer, '4.3.alpha1') < 0) { - return; - } - } // Modifications to these records should update the contact timestamps. \Civi\Core\SqlTrigger\TimestampTriggers::create('civicrm_contact', 'Contact') diff --git a/civicrm/CRM/Contact/BAO/Contact/Permission.php b/civicrm/CRM/Contact/BAO/Contact/Permission.php index 964fc47295..1aae3cea9a 100644 --- a/civicrm/CRM/Contact/BAO/Contact/Permission.php +++ b/civicrm/CRM/Contact/BAO/Contact/Permission.php @@ -307,17 +307,16 @@ AND $operationClause if (CRM_Core_Permission::check('view all contacts') || CRM_Core_Permission::check('edit all contacts') ) { - if (is_array($contactAlias)) { + if (!CRM_Core_Permission::check('access deleted contacts')) { $wheres = []; - foreach ($contactAlias as $alias) { + foreach ((array) $contactAlias as $alias) { // CRM-6181 $wheres[] = "$alias.is_deleted = 0"; } return [NULL, '(' . implode(' AND ', $wheres) . ')']; } else { - // CRM-6181 - return [NULL, "$contactAlias.is_deleted = 0"]; + return [NULL, '( 1 )']; } } @@ -332,14 +331,17 @@ AND $operationClause } $fromClause = implode(" ", $clauses); - $whereClase = NULL; + $whereClause = NULL; } else { $fromClause = " INNER JOIN civicrm_acl_contact_cache aclContactCache ON {$contactAlias}.id = aclContactCache.contact_id "; - $whereClase = " aclContactCache.user_id = $contactID AND $contactAlias.is_deleted = 0"; + $whereClause = " aclContactCache.user_id = $contactID"; + if (!CRM_Core_Permission::check('access deleted contacts')) { + $whereClause .= " AND $contactAlias.is_deleted = 0"; + } } - return [$fromClause, $whereClase]; + return [$fromClause, $whereClause]; } /** diff --git a/civicrm/CRM/Contact/BAO/ContactType.php b/civicrm/CRM/Contact/BAO/ContactType.php index b356a39616..4284efa467 100644 --- a/civicrm/CRM/Contact/BAO/ContactType.php +++ b/civicrm/CRM/Contact/BAO/ContactType.php @@ -67,7 +67,7 @@ class CRM_Contact_BAO_ContactType extends CRM_Contact_DAO_ContactType { public static function basicTypeInfo($includeInactive = FALSE) { $cacheKey = 'CRM_CT_BTI_' . (int) $includeInactive; if (!Civi::cache('contactTypes')->has($cacheKey)) { - $contactType = ContactType::get()->setCheckPermissions(FALSE)->setSelect(['*'])->addWhere('parent_id', 'IS NULL'); + $contactType = ContactType::get(FALSE)->setSelect(['*'])->addWhere('parent_id', 'IS NULL'); if ($includeInactive === FALSE) { $contactType->addWhere('is_active', '=', 1); } @@ -887,7 +887,7 @@ WHERE ($subtypeClause)"; */ protected static function getAllContactTypes() { if (!Civi::cache('contactTypes')->has('all')) { - $contactTypes = (array) ContactType::get()->setCheckPermissions(FALSE) + $contactTypes = (array) ContactType::get(FALSE) ->setSelect(['id', 'name', 'label', 'description', 'is_active', 'is_reserved', 'image_URL', 'parent_id', 'parent_id:name', 'parent_id:label']) ->execute()->indexBy('name'); diff --git a/civicrm/CRM/Contact/BAO/Group.php b/civicrm/CRM/Contact/BAO/Group.php index 8ce1289fae..fae22f03b8 100644 --- a/civicrm/CRM/Contact/BAO/Group.php +++ b/civicrm/CRM/Contact/BAO/Group.php @@ -1055,7 +1055,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { $groups = []; $args = [1 => [$groupIdString, 'String']]; $query = " -SELECT id, title, description, visibility, parents +SELECT id, title, description, visibility, parents, saved_search_id FROM civicrm_group WHERE id IN $groupIdString "; @@ -1081,7 +1081,7 @@ WHERE id IN $groupIdString $parent = self::filterActiveGroups($parentArray); $tree[$parent][] = [ 'id' => $dao->id, - 'title' => $dao->title, + 'title' => empty($dao->saved_search_id) ? $dao->title : '* ' . $dao->title, 'visibility' => $dao->visibility, 'description' => $dao->description, ]; @@ -1089,7 +1089,7 @@ WHERE id IN $groupIdString else { $roots[] = [ 'id' => $dao->id, - 'title' => $dao->title, + 'title' => empty($dao->saved_search_id) ? $dao->title : '* ' . $dao->title, 'visibility' => $dao->visibility, 'description' => $dao->description, ]; @@ -1100,6 +1100,7 @@ WHERE id IN $groupIdString for ($i = 0; $i < count($roots); $i++) { self::buildGroupHierarchy($hierarchy, $roots[$i], $tree, $titleOnly, $spacer, 0); } + return $hierarchy; } @@ -1122,8 +1123,9 @@ WHERE id IN $groupIdString $hierarchy[$group['id']] = $spaces . $group['title']; } else { - $hierarchy[$group['id']] = [ - 'title' => $spaces . $group['title'], + $hierarchy[] = [ + 'id' => $group['id'], + 'text' => $spaces . $group['title'], 'description' => $group['description'], 'visibility' => $group['visibility'], ]; diff --git a/civicrm/CRM/Contact/BAO/GroupContact.php b/civicrm/CRM/Contact/BAO/GroupContact.php index 9058101d05..8e44e6aa40 100644 --- a/civicrm/CRM/Contact/BAO/GroupContact.php +++ b/civicrm/CRM/Contact/BAO/GroupContact.php @@ -487,27 +487,23 @@ SELECT * } /** - * Takes an associative array and creates / removes - * contacts from the groups + * Creates / removes contacts from the groups * + * FIXME: Nonstandard create function; only called from CRM_Contact_BAO_Contact::createProfileContact * * @param array $params - * (reference ) an assoc array of name/value pairs. - * @param array $contactId + * Name/value pairs. + * @param int $contactId * Contact id. * - * @param bool $visibility + * @param bool $ignorePermission + * if ignorePermission is true we are coming in via profile mean $method = 'Web' + * * @param string $method */ - public static function create(&$params, $contactId, $visibility = FALSE, $method = 'Admin') { - $contactIds = []; - $contactIds[] = $contactId; - - //if $visibility is true we are coming in via profile mean $method = 'Web' - $ignorePermission = FALSE; - if ($visibility) { - $ignorePermission = TRUE; - } + public static function create($params, $contactId, $ignorePermission = FALSE, $method = 'Admin') { + $contactIds = [$contactId]; + $contactGroup = []; if ($contactId) { $contactGroupList = CRM_Contact_BAO_GroupContact::getContactGroup($contactId, 'Added', @@ -522,18 +518,13 @@ SELECT * } // get the list of all the groups - $allGroup = CRM_Contact_BAO_GroupContact::getGroupList(0, $visibility); + $allGroup = CRM_Contact_BAO_GroupContact::getGroupList(0, $ignorePermission); // this fix is done to prevent warning generated by array_key_exits incase of empty array is given as input if (!is_array($params)) { $params = []; } - // this fix is done to prevent warning generated by array_key_exits incase of empty array is given as input - if (!isset($contactGroup) || !is_array($contactGroup)) { - $contactGroup = []; - } - // check which values has to be add/remove contact from group foreach ($allGroup as $key => $varValue) { if (!empty($params[$key]) && !array_key_exists($key, $contactGroup)) { diff --git a/civicrm/CRM/Contact/BAO/GroupContactCache.php b/civicrm/CRM/Contact/BAO/GroupContactCache.php index 8b9487b858..d4700184f8 100644 --- a/civicrm/CRM/Contact/BAO/GroupContactCache.php +++ b/civicrm/CRM/Contact/BAO/GroupContactCache.php @@ -314,36 +314,19 @@ WHERE id IN ( $groupIDs ) return; } $params = [1 => [self::getCacheInvalidDateTime(), 'String']]; - // @todo this is consistent with previous behaviour but as the first query could take several seconds the second - // could become inaccurate. It seems to make more sense to fetch them first & delete from an array (which would - // also reduce joins). If we do this we should also consider how best to iterate the groups. If we do them one at - // a time we could call a hook, allowing people to manage the frequency on their groups, or possibly custom searches - // might do that too. However, for 2000 groups that's 2000 iterations. If we do all once we potentially create a - // slow query. It's worth noting the speed issue generally relates to the size of the group but if one slow group - // is in a query with 500 fast ones all 500 get locked. One approach might be to calculate group size or the - // number of groups & then process all at once or many query runs depending on what is found. Of course those - // preliminary queries would need speed testing. - CRM_Core_DAO::executeQuery( - " - DELETE gc - FROM civicrm_group_contact_cache gc - INNER JOIN civicrm_group g ON g.id = gc.group_id - WHERE g.cache_date <= %1 - ", - $params - ); + $groupsDAO = CRM_Core_DAO::executeQuery("SELECT id FROM civicrm_group WHERE cache_date <= %1", $params); + $expiredGroups = []; + while ($groupsDAO->fetch()) { + $expiredGroups[] = $groupsDAO->id; + } + if (!empty($expiredGroups)) { + $expiredGroups = implode(',', $expiredGroups); + CRM_Core_DAO::executeQuery("DELETE FROM civicrm_group_contact_cache WHERE group_id IN ({$expiredGroups})"); - // Clear these out without resetting them because we are not building caches here, only clearing them, - // so the state is 'as if they had never been built'. - CRM_Core_DAO::executeQuery( - " - UPDATE civicrm_group g - SET cache_date = NULL, - refresh_date = NULL - WHERE g.cache_date <= %1 - ", - $params - ); + // Clear these out without resetting them because we are not building caches here, only clearing them, + // so the state is 'as if they had never been built'. + CRM_Core_DAO::executeQuery("UPDATE civicrm_group SET cache_date = NULL, refresh_date = NULL WHERE id IN ({$expiredGroups})"); + } $lock->release(); } @@ -396,9 +379,7 @@ WHERE id IN ( $groupIDs ) public static function deterministicCacheFlush() { if (self::smartGroupCacheTimeout() == 0) { CRM_Core_DAO::executeQuery("TRUNCATE civicrm_group_contact_cache"); - CRM_Core_DAO::executeQuery(" - UPDATE civicrm_group g - SET cache_date = null, refresh_date = null"); + CRM_Core_DAO::executeQuery("UPDATE civicrm_group SET cache_date = NULL, refresh_date = NULL"); } else { self::flushCaches(); diff --git a/civicrm/CRM/Contact/BAO/Individual.php b/civicrm/CRM/Contact/BAO/Individual.php index 679e9229f5..af28e7a244 100644 --- a/civicrm/CRM/Contact/BAO/Individual.php +++ b/civicrm/CRM/Contact/BAO/Individual.php @@ -50,9 +50,9 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact { } $sortName = $displayName = ''; - $firstName = CRM_Utils_Array::value('first_name', $params, ''); - $middleName = CRM_Utils_Array::value('middle_name', $params, ''); - $lastName = CRM_Utils_Array::value('last_name', $params, ''); + $firstName = trim($params['first_name'] ?? ''); + $middleName = trim($params['middle_name'] ?? ''); + $lastName = trim($params['last_name'] ?? ''); $nickName = CRM_Utils_Array::value('nick_name', $params, ''); $prefix_id = CRM_Utils_Array::value('prefix_id', $params, ''); $suffix_id = CRM_Utils_Array::value('suffix_id', $params, ''); @@ -162,11 +162,6 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact { } } - //first trim before further processing. - foreach (['lastName', 'firstName', 'middleName'] as $fld) { - $$fld = trim($$fld); - } - if ($lastName || $firstName || $middleName) { // make sure we have values for all the name fields. $formatted = $params; diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php index 4986afdace..a6b2545d8b 100644 --- a/civicrm/CRM/Contact/BAO/Query.php +++ b/civicrm/CRM/Contact/BAO/Query.php @@ -517,6 +517,7 @@ class CRM_Contact_BAO_Query { // add activity fields $this->_fields = array_merge($this->_fields, CRM_Activity_BAO_Activity::exportableFields()); + $this->_fields = array_merge($this->_fields, CRM_Activity_BAO_Activity::exportableFields('Case')); // Add hack as no unique name is defined for the field but the search form is in denial. $this->_fields['activity_priority_id'] = $this->_fields['priority_id']; @@ -612,7 +613,7 @@ class CRM_Contact_BAO_Query { * * this code is primarily for search builder use case where different clauses can specify if they want deleted. * - * CRM-11971 + * @see https://issues.civicrm.org/jira/browse/CRM-11971 */ public function buildParamsLookup() { $trashParamExists = FALSE; @@ -1487,6 +1488,9 @@ class CRM_Contact_BAO_Query { } if (!empty($this->_permissionWhereClause) && empty($this->_displayRelationshipType)) { + if (!empty($this->_permissionFromClause)) { + $from .= " $this->_permissionFromClause"; + } if (empty($where)) { $where = "WHERE $this->_permissionWhereClause"; } @@ -1587,6 +1591,7 @@ class CRM_Contact_BAO_Query { } self::filterCountryFromValuesIfStateExists($formValues); + CRM_Core_BAO_CustomValue::fixCustomFieldValue($formValues); foreach ($formValues as $id => $values) { if (self::isAlreadyProcessedForQueryFormat($values)) { @@ -3265,7 +3270,6 @@ WHERE $smartGroupClause public function tag(&$values) { list($name, $op, $value, $grouping, $wildcard) = $values; - list($qillop, $qillVal) = self::buildQillForFieldValue('CRM_Core_DAO_EntityTag', "tag_id", $value, $op, ['onlyActive' => FALSE]); // API/Search Builder format array(operator => array(values)) if (is_array($value)) { if (in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) { @@ -3277,6 +3281,19 @@ WHERE $smartGroupClause } } + if (strpos($op, 'NULL') || strpos($op, 'EMPTY')) { + $value = NULL; + } + + $tagTree = CRM_Core_BAO_Tag::getChildTags(); + foreach ((array) $value as $tagID) { + if (!empty($tagTree[$tagID])) { + $value = array_unique(array_merge($value, $tagTree[$tagID])); + } + } + + list($qillop, $qillVal) = self::buildQillForFieldValue('CRM_Core_DAO_EntityTag', "tag_id", $value, $op, ['onlyActive' => FALSE]); + // implode array, then remove all spaces $value = str_replace(' ', '', implode(',', (array) $value)); if (!empty($value)) { @@ -4590,6 +4607,9 @@ civicrm_relationship.start_date > {$today} $options = $query->_options; if (!empty($query->_permissionWhereClause)) { + if (!empty($query->_permissionFromClause) && !stripos($from, 'aclContactCache')) { + $from .= " $query->_permissionFromClause"; + } if (empty($where)) { $where = "WHERE $query->_permissionWhereClause"; } @@ -4776,7 +4796,7 @@ civicrm_relationship.start_date > {$today} * Country is implicit from the state, but including both results in * a poor query as there is no combined index on state AND country. * - * CRM-18125 + * @see https://issues.civicrm.org/jira/browse/CRM-18125 * * @param array $formValues */ @@ -4969,10 +4989,7 @@ civicrm_relationship.start_date > {$today} $sqlParts = $this->getSearchSQLParts(NULL, NULL, NULL, FALSE, FALSE, TRUE); $query = "SELECT DISTINCT LEFT(contact_a.sort_name, 1) as sort_name {$sqlParts['from']} - {$sqlParts['where']} - {$sqlParts['having']} - GROUP BY sort_name - ORDER BY sort_name asc"; + {$sqlParts['where']}"; $dao = CRM_Core_DAO::executeQuery($query); return $dao; } @@ -5038,17 +5055,22 @@ civicrm_relationship.start_date > {$today} */ public function generatePermissionClause($onlyDeleted = FALSE, $count = FALSE) { if (!$this->_skipPermission) { - $this->_permissionWhereClause = CRM_ACL_API::whereClause( - CRM_Core_Permission::VIEW, - $this->_tables, - $this->_whereTables, - NULL, - $onlyDeleted, - $this->_skipDeleteClause - ); + $permissionClauses = CRM_Contact_BAO_Contact_Permission::cacheClause(); + $this->_permissionWhereClause = $permissionClauses[1]; + $this->_permissionFromClause = $permissionClauses[0]; - if (!$onlyDeleted && CRM_Core_Permission::check('access deleted contacts')) { - $this->_permissionWhereClause = str_replace(' ( 1 ) ', '(contact_a.is_deleted = 0)', $this->_permissionWhereClause); + if (CRM_Core_Permission::check('access deleted contacts')) { + if (!$onlyDeleted) { + $this->_permissionWhereClause = str_replace('( 1 )', '(contact_a.is_deleted = 0)', $this->_permissionWhereClause); + } + else { + if ($this->_permissionWhereClause === '( 1 )') { + $this->_permissionWhereClause = str_replace('( 1 )', '(contact_a.is_deleted)', $this->_permissionWhereClause); + } + else { + $this->_permissionWhereClause .= " AND (contact_a.is_deleted) "; + } + } } if (isset($this->_tables['civicrm_activity'])) { @@ -5072,19 +5094,6 @@ civicrm_relationship.start_date > {$today} $this->_permissionWhereClause .= '(' . implode(' AND ', $clauses) . ')'; } } - - // regenerate fromClause since permission might have added tables - if ($this->_permissionWhereClause) { - //fix for row count in qill (in contribute/membership find) - if (!$count) { - $this->_useDistinct = TRUE; - } - //CRM-15231 - $this->_fromClause = self::fromClause($this->_tables, NULL, NULL, $this->_primaryLocation, $this->_mode); - $this->_simpleFromClause = self::fromClause($this->_whereTables, NULL, NULL, $this->_primaryLocation, $this->_mode); - // note : this modifies _fromClause and _simpleFromClause - $this->includePseudoFieldsJoin($this->_sort); - } } else { // add delete clause if needed even if we are skipping permission @@ -5116,6 +5125,9 @@ civicrm_relationship.start_date > {$today} */ public function summaryContribution($context = NULL) { list($innerselect, $from, $where, $having) = $this->query(TRUE); + if (!empty($this->_permissionFromClause) && !stripos($from, 'aclContactCache')) { + $from .= " $this->_permissionFromClause"; + } if ($this->_permissionWhereClause) { $where .= " AND " . $this->_permissionWhereClause; } @@ -5819,6 +5831,9 @@ AND displayRelType.is_active = 1 $from = str_replace("INNER JOIN", "LEFT JOIN", $from); $from .= $qcache['from']; $where = $qcache['where']; + if (!empty($this->_permissionFromClause) && !stripos($from, 'aclContactCache')) { + $from .= " $this->_permissionFromClause"; + } if (!empty($this->_permissionWhereClause)) { $where .= "AND $this->_permissionWhereClause"; } diff --git a/civicrm/CRM/Contact/BAO/RelationshipCache.php b/civicrm/CRM/Contact/BAO/RelationshipCache.php new file mode 100644 index 0000000000..edb76cd1db --- /dev/null +++ b/civicrm/CRM/Contact/BAO/RelationshipCache.php @@ -0,0 +1,153 @@ +<?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 | + +--------------------------------------------------------------------+ + */ + +/** + * Class CRM_Contact_BAO_RelationshipCache. + */ +class CRM_Contact_BAO_RelationshipCache extends CRM_Contact_DAO_RelationshipCache { + + /** + * The "mappings" array defines the values to put into `civicrm_relationship_cache` + * using data from `civicrm_relationship rel` and `civicrm_relationship_type reltype`. + * + * @var array + * Array(string $intoColumn => string $selectValue) + */ + private static $mappings = [ + 'a_b' => [ + 'relationship_id' => 'rel.id', + 'relationship_type_id' => 'rel.relationship_type_id', + 'orientation' => '"a_b"', + 'near_contact_id' => 'rel.contact_id_a', + 'near_relation' => 'reltype.name_a_b', + 'far_contact_id' => 'rel.contact_id_b', + 'far_relation' => 'reltype.name_b_a', + 'start_date' => 'rel.start_date', + 'end_date' => 'rel.end_date', + 'is_active' => 'rel.is_active', + ], + 'b_a' => [ + 'relationship_id' => 'rel.id', + 'relationship_type_id' => 'rel.relationship_type_id', + 'orientation' => '"b_a"', + 'near_contact_id' => 'rel.contact_id_b', + 'near_relation' => 'reltype.name_b_a', + 'far_contact_id' => 'rel.contact_id_a', + 'far_relation' => 'reltype.name_a_b', + 'start_date' => 'rel.start_date', + 'end_date' => 'rel.end_date', + 'is_active' => 'rel.is_active', + ], + ]; + + /** + * A list of fields which uniquely identify a row. + * + * @var array + */ + private static $keyFields = ['relationship_id', 'orientation']; + + /** + * A list of of fields in `civicrm_relationship_type` which (if changed) + * will necessitate an update to the cache. + * + * @var array + */ + private static $relTypeWatchFields = ['name_a_b', 'name_b_a']; + + /** + * Add our list of triggers to the global list. + * + * @param \Civi\Core\Event\GenericHookEvent $e + * @see \CRM_Utils_Hook::triggerInfo + */ + public static function onHookTriggerInfo($e) { + $relUpdates = self::createInsertUpdateQueries(); + foreach ($relUpdates as $relUpdate) { + /** + * This trigger runs whenever a "civicrm_relationship" record is inserted or updated. + * + * Goal: Ensure that every relationship record has two corresponding entries in the + * cache, the forward relationship (A=>B) and reverse relationship (B=>A). + */ + $triggers[] = [ + 'table' => 'civicrm_relationship', + 'when' => 'AFTER', + 'event' => ['INSERT', 'UPDATE'], + 'sql' => $relUpdate->copy()->where('rel.id = NEW.id')->toSQL() . ";\n", + ]; + + $triggers[] = [ + /** + * This trigger runs whenever a "civicrm_relationship_type" record is updated. + * + * Goal: Ensure that the denormalized fields ("name_b_a"/"name_a_b" <=> "relation") remain current. + */ + 'table' => 'civicrm_relationship_type', + 'when' => 'AFTER', + 'event' => ['UPDATE'], + 'sql' => sprintf("\nIF (%s) THEN\n %s;\n END IF;\n", + + // Condition + implode(' OR ', array_map(function ($col) { + return "(OLD.$col != NEW.$col COLLATE utf8_bin)"; + }, self::$relTypeWatchFields)), + + // Action + $relUpdate->copy()->where('rel.relationship_type_id = NEW.id')->toSQL() + ), + ]; + } + + // Note: We do not need a DELETE trigger to maintain `civicrm_relationship_cache` because it uses `<onDelete>CASCADE</onDelete>`. + + $st = new \Civi\Core\SqlTrigger\StaticTriggers($triggers); + $st->onTriggerInfo($e); + } + + /** + * Read all records from civicrm_relationship and populate the cache. + * Each ordinary relationship in `civicrm_relationship` becomes two + * distinct records in the cache (one for A=>B relations; and one for B=>A). + * + * This method is primarily written (a) for manual testing and (b) in case + * a broken DBMS, screwy import, buggy code, etc causes a corruption. + * + * NOTE: This is closely related to FiveTwentyNine::populateRelationshipCache(), + * except that the upgrader users pagination. + */ + public static function rebuild() { + $relUpdates = self::createInsertUpdateQueries(); + + CRM_Core_DAO::executeQuery('TRUNCATE civicrm_relationship_cache'); + foreach ($relUpdates as $relUpdate) { + $relUpdate->execute(); + } + } + + /** + * Prepare a list of SQL queries that map data from civicrm_relationship + * to civicrm_relationship_cache. + * + * @return CRM_Utils_SQL_Select[] + * A list of SQL queries - one for each mapping. + */ + public static function createInsertUpdateQueries() { + $queries = []; + foreach (self::$mappings as $name => $mapping) { + $queries[$name] = CRM_Utils_SQL_Select::from('civicrm_relationship rel') + ->join('reltype', 'INNER JOIN civicrm_relationship_type reltype ON rel.relationship_type_id = reltype.id') + ->syncInto('civicrm_relationship_cache', self::$keyFields, $mapping); + } + return $queries; + } + +} diff --git a/civicrm/CRM/Contact/BAO/SavedSearch.php b/civicrm/CRM/Contact/BAO/SavedSearch.php index 7e1ddd302e..c5cd15e6e4 100644 --- a/civicrm/CRM/Contact/BAO/SavedSearch.php +++ b/civicrm/CRM/Contact/BAO/SavedSearch.php @@ -208,8 +208,7 @@ class CRM_Contact_BAO_SavedSearch extends CRM_Contact_DAO_SavedSearch { * @throws \CiviCRM_API3_Exception */ public static function getSearchParams($id) { - $savedSearch = \Civi\Api4\SavedSearch::get() - ->setCheckPermissions(FALSE) + $savedSearch = \Civi\Api4\SavedSearch::get(FALSE) ->addWhere('id', '=', $id) ->execute() ->first(); diff --git a/civicrm/CRM/Contact/DAO/RelationshipCache.php b/civicrm/CRM/Contact/DAO/RelationshipCache.php new file mode 100644 index 0000000000..ddb541bb70 --- /dev/null +++ b/civicrm/CRM/Contact/DAO/RelationshipCache.php @@ -0,0 +1,441 @@ +<?php + +/** + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + * + * Generated from xml/schema/CRM/Contact/RelationshipCache.xml + * DO NOT EDIT. Generated by CRM_Core_CodeGen + * (GenCodeChecksum:d511533f30d5d2d8deac82664a6288d1) + */ + +/** + * Database access object for the RelationshipCache entity. + */ +class CRM_Contact_DAO_RelationshipCache extends CRM_Core_DAO { + + /** + * Static instance to hold the table name. + * + * @var string + */ + public static $_tableName = 'civicrm_relationship_cache'; + + /** + * Icon associated with this entity. + * + * @var string + */ + public static $_icon = 'fa-handshake-o'; + + /** + * Should CiviCRM log any modifications to this table in the civicrm_log table. + * + * @var bool + */ + public static $_log = FALSE; + + /** + * Relationship Cache ID + * + * @var int + */ + public $id; + + /** + * id of the relationship (FK to civicrm_relationship.id) + * + * @var int + */ + public $relationship_id; + + /** + * id of the relationship type + * + * @var int + */ + public $relationship_type_id; + + /** + * The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship. + * + * @var string + */ + public $orientation; + + /** + * id of the first contact + * + * @var int + */ + public $near_contact_id; + + /** + * name for relationship of near_contact to far_contact. + * + * @var string + */ + public $near_relation; + + /** + * id of the second contact + * + * @var int + */ + public $far_contact_id; + + /** + * name for relationship of far_contact to near_contact. + * + * @var string + */ + public $far_relation; + + /** + * is the relationship active ? + * + * @var bool + */ + public $is_active; + + /** + * date when the relationship started + * + * @var date + */ + public $start_date; + + /** + * date when the relationship ended + * + * @var date + */ + public $end_date; + + /** + * Class constructor. + */ + public function __construct() { + $this->__table = 'civicrm_relationship_cache'; + parent::__construct(); + } + + /** + * Returns localized title of this entity. + */ + public static function getEntityTitle() { + return ts('Relationship Caches'); + } + + /** + * 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(), 'relationship_id', 'civicrm_relationship', 'id'); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'relationship_type_id', 'civicrm_relationship_type', 'id'); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'near_contact_id', 'civicrm_contact', 'id'); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'far_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' => ts('Relationship Cache ID'), + 'description' => ts('Relationship Cache ID'), + 'required' => TRUE, + 'where' => 'civicrm_relationship_cache.id', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'add' => '5.29', + ], + 'relationship_id' => [ + 'name' => 'relationship_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Relationship'), + 'description' => ts('id of the relationship (FK to civicrm_relationship.id)'), + 'required' => TRUE, + 'where' => 'civicrm_relationship_cache.relationship_id', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'FKClassName' => 'CRM_Contact_DAO_Relationship', + 'add' => '5.29', + ], + 'relationship_type_id' => [ + 'name' => 'relationship_type_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Relationship Type'), + 'description' => ts('id of the relationship type'), + 'required' => TRUE, + 'where' => 'civicrm_relationship_cache.relationship_type_id', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'FKClassName' => 'CRM_Contact_DAO_RelationshipType', + 'add' => '5.29', + ], + 'orientation' => [ + 'name' => 'orientation', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Orientation (a_b or b_a)'), + 'description' => ts('The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.'), + 'required' => TRUE, + 'maxlength' => 3, + 'size' => CRM_Utils_Type::FOUR, + 'where' => 'civicrm_relationship_cache.orientation', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_SelectValues::relationshipOrientation', + ], + 'add' => '5.29', + ], + 'near_contact_id' => [ + 'name' => 'near_contact_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Contact ID (Near side)'), + 'description' => ts('id of the first contact'), + 'required' => TRUE, + 'where' => 'civicrm_relationship_cache.near_contact_id', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'FKClassName' => 'CRM_Contact_DAO_Contact', + 'html' => [ + 'type' => 'EntityRef', + ], + 'add' => '5.29', + ], + 'near_relation' => [ + 'name' => 'near_relation', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Relationship Name (Near side)'), + 'description' => ts('name for relationship of near_contact to far_contact.'), + 'maxlength' => 64, + 'size' => CRM_Utils_Type::BIG, + 'where' => 'civicrm_relationship_cache.near_relation', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_PseudoConstant::relationshipTypeOptions', + ], + 'add' => '5.29', + ], + 'far_contact_id' => [ + 'name' => 'far_contact_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Contact ID (Far side)'), + 'description' => ts('id of the second contact'), + 'required' => TRUE, + 'where' => 'civicrm_relationship_cache.far_contact_id', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'FKClassName' => 'CRM_Contact_DAO_Contact', + 'html' => [ + 'type' => 'EntityRef', + ], + 'add' => '5.29', + ], + 'far_relation' => [ + 'name' => 'far_relation', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Relationship Name (Near side)'), + 'description' => ts('name for relationship of far_contact to near_contact.'), + 'maxlength' => 64, + 'size' => CRM_Utils_Type::BIG, + 'where' => 'civicrm_relationship_cache.far_relation', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_PseudoConstant::relationshipTypeOptions', + ], + 'add' => '5.29', + ], + 'is_active' => [ + 'name' => 'is_active', + 'type' => CRM_Utils_Type::T_BOOLEAN, + 'title' => ts('Relationship Is Active'), + 'description' => ts('is the relationship active ?'), + 'where' => 'civicrm_relationship_cache.is_active', + 'default' => '1', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'html' => [ + 'type' => 'CheckBox', + ], + 'add' => '5.29', + ], + 'relationship_start_date' => [ + 'name' => 'start_date', + 'type' => CRM_Utils_Type::T_DATE, + 'title' => ts('Relationship Start Date'), + 'description' => ts('date when the relationship started'), + 'where' => 'civicrm_relationship_cache.start_date', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'html' => [ + 'type' => 'Select Date', + 'formatType' => 'activityDate', + ], + 'add' => '5.29', + ], + 'relationship_end_date' => [ + 'name' => 'end_date', + 'type' => CRM_Utils_Type::T_DATE, + 'title' => ts('Relationship End Date'), + 'description' => ts('date when the relationship ended'), + 'where' => 'civicrm_relationship_cache.end_date', + 'table_name' => 'civicrm_relationship_cache', + 'entity' => 'RelationshipCache', + 'bao' => 'CRM_Contact_BAO_RelationshipCache', + 'localizable' => 0, + 'html' => [ + 'type' => 'Select Date', + 'formatType' => 'activityDate', + ], + 'add' => '5.29', + ], + ]; + 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__, 'relationship_cache', $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__, 'relationship_cache', $prefix, []); + return $r; + } + + /** + * Returns the list of indices + * + * @param bool $localize + * + * @return array + */ + public static function indices($localize = TRUE) { + $indices = [ + 'UI_relationship' => [ + 'name' => 'UI_relationship', + 'field' => [ + 0 => 'relationship_id', + 1 => 'orientation', + ], + 'localizable' => FALSE, + 'unique' => TRUE, + 'sig' => 'civicrm_relationship_cache::1::relationship_id::orientation', + ], + 'index_nearid_nearrelation' => [ + 'name' => 'index_nearid_nearrelation', + 'field' => [ + 0 => 'near_contact_id', + 1 => 'near_relation', + ], + 'localizable' => FALSE, + 'sig' => 'civicrm_relationship_cache::0::near_contact_id::near_relation', + ], + 'index_nearid_farrelation' => [ + 'name' => 'index_nearid_farrelation', + 'field' => [ + 0 => 'near_contact_id', + 1 => 'far_relation', + ], + 'localizable' => FALSE, + 'sig' => 'civicrm_relationship_cache::0::near_contact_id::far_relation', + ], + 'index_near_relation' => [ + 'name' => 'index_near_relation', + 'field' => [ + 0 => 'near_relation', + ], + 'localizable' => FALSE, + 'sig' => 'civicrm_relationship_cache::0::near_relation', + ], + ]; + return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices; + } + +} diff --git a/civicrm/CRM/Contact/Form/Contact.php b/civicrm/CRM/Contact/Form/Contact.php index 3a1d69fc16..04e3c8a897 100644 --- a/civicrm/CRM/Contact/Form/Contact.php +++ b/civicrm/CRM/Contact/Form/Contact.php @@ -367,8 +367,8 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { else { $contactSubType = $this->_contactSubType; // need contact sub type to build related grouptree array during post process - if (!empty($_POST['contact_sub_type'])) { - $contactSubType = $_POST['contact_sub_type']; + if (!empty($_POST['qfKey'])) { + $contactSubType = $_POST['contact_sub_type'] ?? NULL; } //only custom data has preprocess hence directly call it CRM_Custom_Form_CustomData::preProcess($this, NULL, $contactSubType, @@ -870,8 +870,10 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { } $group = $params['group'] ?? NULL; - if (!empty($group) && is_array($group)) { - unset($params['group']); + $params['group'] = ($params['group'] == '') ? [] : $params['group']; + if (!empty($group)) { + $group = is_array($group) ? $group : explode(',', $group); + $params['group'] = []; foreach ($group as $key => $value) { $params['group'][$value] = 1; } diff --git a/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php b/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php index c7d2692715..9299246d9b 100644 --- a/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php +++ b/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php @@ -102,17 +102,17 @@ class CRM_Contact_Form_Edit_TagsAndGroups { } if ($groupElementType == 'select') { - $groupsOptions[$id] = $group['title']; + $groupsOptions[$id] = $group; } else { $form->_tagGroup[$fName][$id]['description'] = $group['description']; - $elements[] = &$form->addElement('advcheckbox', $id, NULL, $group['title'], $attributes); + $elements[] = &$form->addElement('advcheckbox', $id, NULL, $group['text'], $attributes); } } if ($groupElementType == 'select' && !empty($groupsOptions)) { - $form->add('select', $fName, $groupName, $groupsOptions, FALSE, - ['id' => $fName, 'multiple' => 'multiple', 'class' => 'crm-select2 twenty'] + $form->add('select2', $fName, $groupName, $groupsOptions, FALSE, + ['placeholder' => '- select -', 'multiple' => TRUE, 'class' => 'twenty'] ); $form->assign('groupCount', count($groupsOptions)); } @@ -166,11 +166,11 @@ class CRM_Contact_Form_Edit_TagsAndGroups { $contactGroup = CRM_Contact_BAO_GroupContact::getContactGroup($id, 'Added', NULL, FALSE, TRUE); if ($contactGroup) { - foreach ($contactGroup as $group) { - if ($groupElementType == 'select') { - $defaults[$fName][] = $group['group_id']; - } - else { + if ($groupElementType == 'select') { + $defaults[$fName] = implode(',', CRM_Utils_Array::collect('group_id', $contactGroup)); + } + else { + foreach ($contactGroup as $group) { $defaults[$fName . '[' . $group['group_id'] . ']'] = 1; } } diff --git a/civicrm/CRM/Contact/Form/GroupContact.php b/civicrm/CRM/Contact/Form/GroupContact.php index b2e326e960..79d4c29c1d 100644 --- a/civicrm/CRM/Contact/Form/GroupContact.php +++ b/civicrm/CRM/Contact/Form/GroupContact.php @@ -73,7 +73,7 @@ class CRM_Contact_Form_GroupContact extends CRM_Core_Form { if ($onlyPublicGroups && $group['visibility'] == 'User and User Admin Only') { continue; } - $allGroups[$id] = $group; + $allGroups[$group['id']] = $group; } } else { diff --git a/civicrm/CRM/Contact/Form/Merge.php b/civicrm/CRM/Contact/Form/Merge.php index e81d31c32f..be4c5894a9 100644 --- a/civicrm/CRM/Contact/Form/Merge.php +++ b/civicrm/CRM/Contact/Form/Merge.php @@ -229,9 +229,9 @@ class CRM_Contact_Form_Merge extends CRM_Core_Form { } // add related table elements - foreach ($rowsElementsAndInfo['rel_table_elements'] as $relTableElement) { - $this->addElement($relTableElement[0], $relTableElement[1]); - $this->_defaults[$relTableElement[1]] = 1; + foreach (array_keys($rowsElementsAndInfo['rel_tables']) as $relTableElement) { + $this->addElement('checkbox', $relTableElement); + $this->_defaults[$relTableElement] = 1; } $this->assign('rel_tables', $rowsElementsAndInfo['rel_tables']); @@ -376,7 +376,7 @@ class CRM_Contact_Form_Merge extends CRM_Core_Form { CRM_Utils_System::permissionDenied(); } // ensure that oid is not the current user, if so refuse to do the merge - if (CRM_Core_Session::singleton()->getLoggedInContactID() == $oid) { + if (CRM_Core_Session::getLoggedInContactID() == $oid) { $message = ts('The contact record which is linked to the currently logged in user account - \'%1\' - cannot be deleted.', [1 => CRM_Core_Session::singleton()->getLoggedInContactDisplayName()] ); diff --git a/civicrm/CRM/Contact/Form/Search/Advanced.php b/civicrm/CRM/Contact/Form/Search/Advanced.php index 9336eb604f..e579c74331 100644 --- a/civicrm/CRM/Contact/Form/Search/Advanced.php +++ b/civicrm/CRM/Contact/Form/Search/Advanced.php @@ -189,7 +189,7 @@ class CRM_Contact_Form_Search_Advanced extends CRM_Contact_Form_Search { 'privacy_toggle' => 1, 'operator' => 'AND', ], $defaults); - $this->normalizeDefaultValues($defaults); + $defaults = $this->normalizeDefaultValues($defaults); //991/Subtypes not respected when editing smart group criteria if (!empty($defaults['contact_type']) && !empty($this->_formValues['contact_sub_type'])) { @@ -297,8 +297,6 @@ class CRM_Contact_Form_Search_Advanced extends CRM_Contact_Form_Search { $this->_sortByCharacter = NULL; } - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - $this->_params = CRM_Contact_BAO_Query::convertFormValues($this->_formValues, 0, FALSE, NULL, $this->entityReferenceFields); $this->_returnProperties = &$this->returnProperties(); parent::postProcess(); diff --git a/civicrm/CRM/Contact/Form/Search/Basic.php b/civicrm/CRM/Contact/Form/Search/Basic.php index 1b6ae423fa..c1e8438231 100644 --- a/civicrm/CRM/Contact/Form/Search/Basic.php +++ b/civicrm/CRM/Contact/Form/Search/Basic.php @@ -49,13 +49,14 @@ class CRM_Contact_Form_Search_Basic extends CRM_Contact_Form_Search { // add select for groups // Get hierarchical listing of groups, respecting ACLs for CRM-16836. - $groupHierarchy = CRM_Contact_BAO_Group::getGroupsHierarchy($this->_group, NULL, ' ', TRUE); + $groupHierarchy = CRM_Contact_BAO_Group::getGroupsHierarchy($this->_group, NULL, ' '); if (!empty($searchOptions['groups'])) { $this->addField('group', [ 'entity' => 'group_contact', 'label' => ts('in'), 'placeholder' => ts('- any group -'), 'options' => $groupHierarchy, + 'type' => 'Select2', ]); } diff --git a/civicrm/CRM/Contact/Form/Search/Criteria.php b/civicrm/CRM/Contact/Form/Search/Criteria.php index dbfb6ebe6a..bd2d5829da 100644 --- a/civicrm/CRM/Contact/Form/Search/Criteria.php +++ b/civicrm/CRM/Contact/Form/Search/Criteria.php @@ -45,7 +45,7 @@ class CRM_Contact_Form_Search_Criteria { $groupHierarchy = CRM_Contact_BAO_Group::getGroupsHierarchy($form->_group, NULL, ' ', TRUE); $form->add('select', 'group', ts('Groups'), $groupHierarchy, FALSE, - ['id' => 'group', 'multiple' => 'multiple', 'class' => 'crm-select2'] + ['id' => 'group', 'multiple' => 'multiple', 'class' => 'crm-select2'] ); $groupOptions = CRM_Core_BAO_OptionValue::getOptionValuesAssocArrayFromName('group_type'); $form->add('select', 'group_type', ts('Group Types'), $groupOptions, FALSE, @@ -323,6 +323,8 @@ class CRM_Contact_Form_Search_Criteria { return [ // For now an empty array is still left in place for ordering. 'sort_name' => [], + 'first_name' => [], + 'last_name' => [], 'email' => ['name' => 'email'], 'contact_type' => ['name' => 'contact_type'], 'group' => [ @@ -556,15 +558,12 @@ class CRM_Contact_Form_Search_Criteria { $form->addSearchFieldMetadata(['Contact' => self::getFilteredSearchFieldMetadata('demographic')]); $form->addFormFieldsFromMetadata(); // radio button for gender - $genderOptions = []; + $genderOptionsAttributes = []; $gender = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'gender_id'); foreach ($gender as $key => $var) { - $genderOptions[$key] = $form->createElement('radio', NULL, - ts('Gender'), $var, $key, - ['id' => "civicrm_gender_{$var}_{$key}"] - ); + $genderOptionsAttributes[$key] = ['id' => "civicrm_gender_{$var}_{$key}"]; } - $form->addGroup($genderOptions, 'gender_id', ts('Gender'))->setAttribute('allowClear', TRUE); + $form->addRadio('gender_id', ts('Gender'), $gender, ['allowClear' => TRUE], NULL, FALSE, $genderOptionsAttributes); $form->add('number', 'age_low', ts('Min Age'), ['class' => 'four', 'min' => 0]); $form->addRule('age_low', ts('Please enter a positive integer'), 'positiveInteger'); diff --git a/civicrm/CRM/Contact/Form/Task.php b/civicrm/CRM/Contact/Form/Task.php index 7a7d57093f..2f7695dc7d 100644 --- a/civicrm/CRM/Contact/Form/Task.php +++ b/civicrm/CRM/Contact/Form/Task.php @@ -334,7 +334,7 @@ class CRM_Contact_Form_Task extends CRM_Core_Form_Task { /** * Replace ids of household members in $this->_contactIds with the id of their household. * - * CRM-8338 + * @see https://issues.civicrm.org/jira/browse/CRM-8338 */ public function mergeContactIdsByHousehold() { if (empty($this->_contactIds)) { diff --git a/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php b/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php index fddf30a8f9..51ac8c9ad6 100644 --- a/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php +++ b/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php @@ -235,7 +235,7 @@ class CRM_Contact_Form_Task_PDFLetterCommon extends CRM_Core_Form_Task_PDFLetter $activityParams = [ 'subject' => $subject, 'campaign_id' => $campaign_id, - 'source_contact_id' => CRM_Core_Session::singleton()->getLoggedInContactID(), + 'source_contact_id' => CRM_Core_Session::getLoggedInContactID(), 'activity_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Print PDF Letter'), 'activity_date_time' => date('YmdHis'), 'details' => $html_message, diff --git a/civicrm/CRM/Contact/Form/Task/Useradd.php b/civicrm/CRM/Contact/Form/Task/Useradd.php index b9a8056721..385405c6a2 100644 --- a/civicrm/CRM/Contact/Form/Task/Useradd.php +++ b/civicrm/CRM/Contact/Form/Task/Useradd.php @@ -73,6 +73,7 @@ class CRM_Contact_Form_Task_Useradd extends CRM_Core_Form { $this->addRule('cms_pass', 'Password is required', 'required'); $this->addRule(['cms_pass', 'cms_confirm_pass'], 'ERROR: Password mismatch', 'compare'); $this->add('text', 'email', ts('Email:'), ['class' => 'huge'])->freeze(); + $this->addRule('email', 'Email is required', 'required'); $this->add('hidden', 'contactID'); //add a rule to check username uniqueness @@ -101,8 +102,12 @@ class CRM_Contact_Form_Task_Useradd extends CRM_Core_Form { // store the submitted values in an array $params = $this->exportValues(); - CRM_Core_BAO_CMSUser::create($params, 'email'); - CRM_Core_Session::setStatus('', ts('User Added'), 'success'); + if (CRM_Core_BAO_CMSUser::create($params, 'email') === FALSE) { + CRM_Core_Error::statusBounce(ts('Error creating CMS user account.')); + } + else { + CRM_Core_Session::setStatus(ts('User Added'), '', 'success'); + } } /** diff --git a/civicrm/CRM/Contact/Import/Form/DataSource.php b/civicrm/CRM/Contact/Import/Form/DataSource.php index 97ffa8453d..ac13033e8e 100644 --- a/civicrm/CRM/Contact/Import/Form/DataSource.php +++ b/civicrm/CRM/Contact/Import/Form/DataSource.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -139,23 +137,12 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Core_Form { ); // duplicate handling options - $duplicateOptions = []; - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Skip'), CRM_Import_Parser::DUPLICATE_SKIP - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Update'), CRM_Import_Parser::DUPLICATE_UPDATE - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Fill'), CRM_Import_Parser::DUPLICATE_FILL - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('No Duplicate Checking'), CRM_Import_Parser::DUPLICATE_NOCHECK - ); - - $this->addGroup($duplicateOptions, 'onDuplicate', - ts('For Duplicate Contacts') - ); + $this->addRadio('onDuplicate', ts('For Duplicate Contacts'), [ + CRM_Import_Parser::DUPLICATE_SKIP => ts('Skip'), + CRM_Import_Parser::DUPLICATE_UPDATE => ts('Update'), + CRM_Import_Parser::DUPLICATE_FILL => ts('Fill'), + CRM_Import_Parser::DUPLICATE_NOCHECK => ts('No Duplicate Checking'), + ]); $mappingArray = CRM_Core_BAO_Mapping::getMappings('Import Contact'); @@ -164,26 +151,20 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Core_Form { $js = ['onClick' => "buildSubTypes();buildDedupeRules();"]; // contact types option - $contactOptions = []; + $contactTypeOptions = $contactTypeAttributes = []; if (CRM_Contact_BAO_ContactType::isActive('Individual')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Individual'), CRM_Import_Parser::CONTACT_INDIVIDUAL, $js - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_INDIVIDUAL] = ts('Individual'); + $contactTypeAttributes[CRM_Import_Parser::CONTACT_INDIVIDUAL] = $js; } if (CRM_Contact_BAO_ContactType::isActive('Household')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Household'), CRM_Import_Parser::CONTACT_HOUSEHOLD, $js - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_HOUSEHOLD] = ts('Household'); + $contactTypeAttributes[CRM_Import_Parser::CONTACT_HOUSEHOLD] = $js; } if (CRM_Contact_BAO_ContactType::isActive('Organization')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Organization'), CRM_Import_Parser::CONTACT_ORGANIZATION, $js - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_ORGANIZATION] = ts('Organization'); + $contactTypeAttributes[CRM_Import_Parser::CONTACT_ORGANIZATION] = $js; } - - $this->addGroup($contactOptions, 'contactType', - ts('Contact Type') - ); + $this->addRadio('contactType', ts('Contact Type'), $contactTypeOptions, [], NULL, FALSE, $contactTypeAttributes); $this->addElement('select', 'subType', ts('Subtype')); $this->addElement('select', 'dedupe', ts('Dedupe Rule')); diff --git a/civicrm/CRM/Contact/Import/ImportJob.php b/civicrm/CRM/Contact/Import/ImportJob.php index b598bd3cd3..75d570e637 100644 --- a/civicrm/CRM/Contact/Import/ImportJob.php +++ b/civicrm/CRM/Contact/Import/ImportJob.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -62,13 +60,13 @@ class CRM_Contact_Import_ImportJob { if (!$createSql) { throw new CRM_Core_Exception(ts('Either an existing table name or an SQL query to build one are required')); } - - // FIXME: we should regen this table's name if it exists rather than drop it - if (!$tableName) { - $tableName = 'civicrm_import_job_' . md5(uniqid(rand(), TRUE)); + if ($tableName) { + // Drop previous table if passed in and create new one. + $db->query("DROP TABLE IF EXISTS $tableName"); } - $db->query("DROP TABLE IF EXISTS $tableName"); - $db->query("CREATE TABLE $tableName ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci $createSql"); + $table = CRM_Utils_SQL_TempTable::build()->setDurable(); + $tableName = $table->getName(); + $table->createWithQuery($createSql); } if (!$tableName) { @@ -143,7 +141,7 @@ class CRM_Contact_Import_ImportJob { //need to differentiate non location elements. // @todo merge this with duplicate code on MapField class. if ($selOne && (is_numeric($selOne) || $selOne === 'Primary')) { - if ($fldName == 'url') { + if ($fldName === 'url') { $header[] = $websiteTypes[$selOne]; $parserParameters['mapperWebsiteType'][$key] = $selOne; } @@ -151,11 +149,11 @@ class CRM_Contact_Import_ImportJob { $header[] = $locationTypes[$selOne]; $parserParameters['mapperLocType'][$key] = $selOne; if ($selTwo && is_numeric($selTwo)) { - if ($fldName == 'phone') { + if ($fldName === 'phone') { $header[] = $phoneTypes[$selTwo]; $parserParameters['mapperPhoneType'][$key] = $selTwo; } - elseif ($fldName == 'im') { + elseif ($fldName === 'im') { $header[] = $imProviders[$selTwo]; $parserParameters['mapperImProvider'][$key] = $selTwo; } @@ -339,6 +337,7 @@ class CRM_Contact_Import_ImportJob { * @param $newTagDesc * * @return array|bool + * @throws \CRM_Core_Exception */ private function _tagImportedContactsWithNewTag( $contactIds, diff --git a/civicrm/CRM/Contact/Import/Parser/Contact.php b/civicrm/CRM/Contact/Import/Parser/Contact.php index 760d16059b..dc3441baaa 100644 --- a/civicrm/CRM/Contact/Import/Parser/Contact.php +++ b/civicrm/CRM/Contact/Import/Parser/Contact.php @@ -1955,7 +1955,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Contact_Import_Parser { * 1) the chosen dedupe rule falling back to * 2) a check for the external ID. * - * CRM-17275 + * @see https://issues.civicrm.org/jira/browse/CRM-17275 * * @param array $params * diff --git a/civicrm/CRM/Contact/Page/AJAX.php b/civicrm/CRM/Contact/Page/AJAX.php index 4b91252858..7f3e4412ac 100644 --- a/civicrm/CRM/Contact/Page/AJAX.php +++ b/civicrm/CRM/Contact/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Contact/Page/View/UserDashBoard.php b/civicrm/CRM/Contact/Page/View/UserDashBoard.php index 347824cceb..8cba50bcb0 100644 --- a/civicrm/CRM/Contact/Page/View/UserDashBoard.php +++ b/civicrm/CRM/Contact/Page/View/UserDashBoard.php @@ -47,7 +47,7 @@ class CRM_Contact_Page_View_UserDashBoard extends CRM_Core_Page { } $this->_contactId = CRM_Utils_Request::retrieve('id', 'Positive', $this); - $userID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $userID = CRM_Core_Session::getLoggedInContactID(); $userChecksum = $this->getUserChecksum(); $validUser = FALSE; diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php index c209e67fcd..e5d83dd6cf 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution.php +++ b/civicrm/CRM/Contribute/BAO/Contribution.php @@ -9,6 +9,10 @@ +--------------------------------------------------------------------+ */ +use Civi\Api4\Activity; +use Civi\Api4\ContributionPage; +use Civi\Api4\ContributionRecur; + /** * * @package CRM @@ -461,6 +465,7 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { * * @return CRM_Contribute_BAO_Contribution * + * @throws \API_Exception * @throws \CRM_Core_Exception * @throws \CiviCRM_API3_Exception */ @@ -512,26 +517,33 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { $transaction->commit(); - $activity = civicrm_api3('Activity', 'get', [ - 'source_record_id' => $contribution->id, - 'options' => ['limit' => 1], - 'sequential' => 1, - 'activity_type_id' => 'Contribution', - 'return' => ['id', 'campaign'], - ]); - - //CRM-18406: Update activity when edit contribution. - if ($activity['count']) { - // CRM-13237 : if activity record found, update it with campaign id of contribution - // @todo compare campaign ids first. - CRM_Core_DAO::setFieldValue('CRM_Activity_BAO_Activity', $activity['id'], 'campaign_id', $contribution->campaign_id); - $contribution->activity_id = $activity['id']; - } - if (empty($contribution->contact_id)) { $contribution->find(TRUE); } - CRM_Activity_BAO_Activity::addActivity($contribution, 'Contribution'); + + $isCompleted = ('Completed' === CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution->contribution_status_id)); + if (!empty($params['on_behalf']) + || $isCompleted + ) { + $existingActivity = Activity::get(FALSE)->setWhere([ + ['source_record_id', '=', $contribution->id], + ['activity_type_id:name', '=', 'Contribution'], + ])->execute()->first(); + + $campaignParams = isset($params['campaign_id']) ? ['campaign_id' => ($params['campaign_id'] ?? NULL)] : []; + Activity::save(FALSE)->addRecord(array_merge([ + 'activity_type_id:name' => 'Contribution', + 'source_record_id' => $contribution->id, + 'source_contact_id' => CRM_Core_Session::getLoggedInContactID() ?: $contribution->contact_id, + 'target_contact_id' => CRM_Core_Session::getLoggedInContactID() ? [$contribution->contact_id] : [], + 'activity_date_time' => $contribution->receive_date, + 'is_test' => (bool) $contribution->is_test, + 'status_id:name' => $isCompleted ? 'Completed' : 'Scheduled', + 'skipRecentView' => TRUE, + 'subject' => CRM_Activity_BAO_Activity::getActivitySubject($contribution), + 'id' => $existingActivity['id'] ?? NULL, + ], $campaignParams))->execute(); + } // do not add to recent items for import, CRM-4399 if (empty($params['skipRecentView'])) { @@ -1335,6 +1347,38 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { return $rows; } + /** + * Should an email receipt be sent for this contribution on completion. + * + * @param array $input + * @param int $contributionPageID + * @param int $recurringContributionID + * + * @return bool + * @throws \API_Exception + * @throws \Civi\API\Exception\UnauthorizedException + */ + protected static function isEmailReceipt(array $input, $contributionPageID, $recurringContributionID): bool { + if (isset($input['is_email_receipt'])) { + return (bool) $input['is_email_receipt']; + } + if ($recurringContributionID) { + //CRM-13273 - is_email_receipt setting on recurring contribution should take precedence over contribution page setting + // but CRM-16124 if $input['is_email_receipt'] is set then that should not be overridden. + // dev/core#1245 this maybe not the desired effect because the default value for is_email_receipt is set to 0 rather than 1 in + // Instance that had the table added via an upgrade in 4.1 + // see also https://github.com/civicrm/civicrm-svn/commit/7f39befd60bc735408d7866b02b3ac7fff1d4eea#diff-9ad8e290180451a2d6eacbd3d1ca7966R354 + // https://lab.civicrm.org/dev/core/issues/1245 + return (bool) ContributionRecur::get(FALSE)->addWhere('id', '=', $recurringContributionID)->addSelect('is_email_receipt')->execute()->first()['is_email_receipt']; + } + if ($contributionPageID) { + return (bool) ContributionPage::get(FALSE)->addWhere('id', '=', $contributionPageID)->addSelect('is_email_receipt')->execute()->first()['is_email_receipt']; + } + // This would be the case for backoffice (where is_email_receipt is not passed in) or events, where Event::sendMail will filter + // again anyway. + return TRUE; + } + /** * @inheritDoc */ @@ -2565,12 +2609,11 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ * @param CRM_Contribute_BAO_Contribution $contribution * @param array $input * @param array $contributionParams - * @param int $paymentProcessorID * - * @return bool + * @return bool|array * @throws CiviCRM_API3_Exception */ - protected static function repeatTransaction(&$contribution, &$input, $contributionParams, $paymentProcessorID) { + protected static function repeatTransaction(&$contribution, &$input, $contributionParams) { if (!empty($contribution->id)) { return FALSE; } @@ -2601,17 +2644,21 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ ]) ); $input['line_item'] = $contributionParams['line_item'] = $templateContribution['line_item']; - $contributionParams['status_id'] = 'Pending'; - if (isset($contributionParams['financial_type_id'])) { - // Give precedence to passed in type. + + if (isset($contributionParams['financial_type_id']) && count($input['line_item']) === 1) { + // We permit the financial type to be overridden for single line items. + // More comments on this are in getTemplateTransaction. $contribution->financial_type_id = $contributionParams['financial_type_id']; } else { $contributionParams['financial_type_id'] = $templateContribution['financial_type_id']; } - $contributionParams['contact_id'] = $templateContribution['contact_id']; - $contributionParams['source'] = empty($templateContribution['source']) ? ts('Recurring contribution') : $templateContribution['source']; + foreach (['contact_id', 'currency', 'source'] as $fieldName) { + $contributionParams[$fieldName] = $templateContribution[$fieldName]; + } + + $contributionParams['source'] = $contributionParams['source'] ?: ts('Recurring contribution'); //CRM-18805 -- Contribution page not recorded on recurring transactions, Recurring contribution payments //do not create CC or BCC emails or profile notifications. @@ -2626,9 +2673,9 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ $createContribution = civicrm_api3('Contribution', 'create', $contributionParams); $contribution->id = $createContribution['id']; - CRM_Contribute_BAO_ContributionRecur::copyCustomValues($contributionParams['contribution_recur_id'], $contribution->id); + $contribution->copyCustomFields($templateContribution['id'], $contribution->id); self::handleMembershipIDOverride($contribution->id, $input); - return TRUE; + return $createContribution; } } @@ -2917,7 +2964,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac //not really sure what params might be passed in but lets merge em into values $values = array_merge($this->_gatherMessageValues($input, $values, $ids), $values); - $values['is_email_receipt'] = $this->isEmailReceipt($input, $values); + $values['is_email_receipt'] = !$returnMessageText; if (!empty($input['receipt_date'])) { $values['receipt_date'] = $input['receipt_date']; } @@ -3099,7 +3146,11 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac //get soft contributions $softContributions = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($this->id, TRUE); if (!empty($softContributions)) { - $values['softContributions'] = $softContributions['soft_credit']; + // For pcp soft credit, there is no 'soft_credit' member it comes + // back in different array members, but shortly after returning from + // this function it calls _assignMessageVariablesToTemplate which does + // its own lookup of any pcp soft credit, so we can skip it here. + $values['softContributions'] = $softContributions['soft_credit'] ?? NULL; } if (isset($this->contribution_page_id)) { // This is a call we want to use less, in favour of loading related objects. @@ -3915,6 +3966,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac 'Refunded' => ['Cancelled', 'Completed'], 'Partially paid' => ['Completed'], 'Pending refund' => ['Completed', 'Refunded'], + 'Failed' => ['Pending'], ]; if (!in_array($contributionStatuses[$fields['contribution_status_id']], @@ -3930,7 +3982,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac /** * Delete contribution of contact. * - * CRM-12155 + * @see https://issues.civicrm.org/jira/browse/CRM-12155 * * @param int $contactId * Contact id. @@ -3995,7 +4047,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac /** * Validate financial type. * - * CRM-13231 + * @see https://issues.civicrm.org/jira/browse/CRM-13231 * * @param int $financialTypeId * Financial Type id. @@ -4391,8 +4443,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * @param array $input * @param array $ids * @param array $objects - * @param CRM_Core_Transaction $transaction - * It is not recommended to pass this in. The calling function handle it's own roll back if it wants it. * @param bool $isPostPaymentCreate * Is this being called from the payment.create api. If so the api has taken care of financial entities. * Note that our goal is that this would only ever be called from payment.create and never handle financials (only @@ -4402,10 +4452,8 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * @throws \CRM_Core_Exception * @throws \CiviCRM_API3_Exception */ - public static function completeOrder($input, &$ids, $objects, $transaction = NULL, $isPostPaymentCreate = FALSE) { - if (!$transaction) { - $transaction = new CRM_Core_Transaction(); - } + public static function completeOrder($input, &$ids, $objects, $isPostPaymentCreate = FALSE) { + $transaction = new CRM_Core_Transaction(); $contribution = $objects['contribution']; $primaryContributionID = $contribution->id ?? $objects['first_contribution']->id; // The previous details are used when calculating line items so keep it before any code that 'does something' @@ -4425,10 +4473,8 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac 'contribution_status_id', 'card_type_id', 'pan_truncation', + 'financial_type_id', ]; - if (self::isSingleLineItem($primaryContributionID)) { - $inputContributionWhiteList[] = 'financial_type_id'; - } $participant = $objects['participant'] ?? NULL; $recurContrib = $objects['contributionRecur'] ?? NULL; @@ -4453,11 +4499,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac ], array_intersect_key($input, array_fill_keys($inputContributionWhiteList, 1) )); - // CRM-20678 Ensure that the currency is correct in subseqent transcations. - if (empty($contributionParams['currency']) && isset($objects['first_contribution']->currency)) { - $contributionParams['currency'] = $objects['first_contribution']->currency; - } - $contributionParams['payment_processor'] = $input['payment_processor'] = $paymentProcessorId; // If paymentProcessor is not set then the payment_instrument_id would not be correct. @@ -4471,48 +4512,12 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } $changeDate = CRM_Utils_Array::value('trxn_date', $input, date('YmdHis')); - if (empty($contributionParams['receive_date']) && $changeDate) { - $contributionParams['receive_date'] = $changeDate; - } - - self::repeatTransaction($contribution, $input, $contributionParams, $paymentProcessorId); - $contributionParams['financial_type_id'] = $contribution->financial_type_id; - - $values = []; - if (isset($input['is_email_receipt'])) { - $values['is_email_receipt'] = $input['is_email_receipt']; - } + $contributionResult = self::repeatTransaction($contribution, $input, $contributionParams); if ($input['component'] == 'contribute') { - if ($contribution->contribution_page_id) { - // Figure out what we gain from this. - // Note that we may have overwritten the is_email_receipt input, fix that below. - CRM_Contribute_BAO_ContributionPage::setValues($contribution->contribution_page_id, $values); - } - elseif ($recurContrib && $recurringContributionID) { - $values['amount'] = $recurContrib->amount; - $values['financial_type_id'] = $objects['contributionType']->id; - $values['title'] = $source = ts('Offline Recurring Contribution'); - } - - if (isset($input['is_email_receipt'])) { - // CRM-19601 - we may have overwritten this above. - $values['is_email_receipt'] = $input['is_email_receipt']; - } - elseif ($recurContrib && $recurringContributionID) { - //CRM-13273 - is_email_receipt setting on recurring contribution should take precedence over contribution page setting - // but CRM-16124 if $input['is_email_receipt'] is set then that should not be overridden. - // dev/core#1245 this maybe not the desired effect because the default value for is_email_receipt is set to 0 rather than 1 in - // Instance that had the table added via an upgrade in 4.1 - // see also https://github.com/civicrm/civicrm-svn/commit/7f39befd60bc735408d7866b02b3ac7fff1d4eea#diff-9ad8e290180451a2d6eacbd3d1ca7966R354 - // https://lab.civicrm.org/dev/core/issues/1245 - $values['is_email_receipt'] = $recurContrib->is_email_receipt; - } - if ($contributionParams['contribution_status_id'] === $completedContributionStatusID) { self::updateMembershipBasedOnCompletionOfContribution( $contribution, - $primaryContributionID, $changeDate ); } @@ -4532,10 +4537,9 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac $contributionParams['id'] = $contribution->id; $contributionParams['is_post_payment_create'] = $isPostPaymentCreate; - // CRM-19309 - if you update the contribution here with financial_type_id it can/will mess with $lineItem - // unsetting it here does NOT cause any other contribution test to fail! - unset($contributionParams['financial_type_id']); - $contributionResult = civicrm_api3('Contribution', 'create', $contributionParams); + if (!$contributionResult) { + $contributionResult = civicrm_api3('Contribution', 'create', $contributionParams); + } // Add new soft credit against current $contribution. if (!empty($objects['contributionRecur']) && $objects['contributionRecur']->id) { @@ -4550,13 +4554,15 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } $contribution->contribution_status_id = $contributionParams['contribution_status_id']; - CRM_Core_Error::debug_log_message("Contribution record updated successfully"); + CRM_Core_Error::debug_log_message('Contribution record updated successfully'); $transaction->commit(); + // @todo - check if Contribution::create does this, test, remove. CRM_Contribute_BAO_ContributionRecur::updateRecurLinkedPledge($contribution->id, $recurringContributionID, $contributionParams['contribution_status_id'], $input['amount']); // create an activity record + // @todo - check if Contribution::create does this, test, remove. if ($input['component'] == 'contribute') { //CRM-4027 $targetContactID = NULL; @@ -4567,11 +4573,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac CRM_Activity_BAO_Activity::addActivity($contribution, NULL, $targetContactID); } - // CRM-9132 legacy behaviour was that receipts were sent out in all instances. Still sending - // when array_key 'is_email_receipt doesn't exist in case some instances where is needs setting haven't been set - if (!array_key_exists('is_email_receipt', $values) || - $values['is_email_receipt'] == 1 - ) { + if (self::isEmailReceipt($input, $contribution->contribution_page_id, $recurringContributionID)) { civicrm_api3('Contribution', 'sendconfirmation', [ 'id' => $contribution->id, 'payment_processor_id' => $paymentProcessorId, @@ -4596,8 +4598,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * @param array $ids * Related object IDs. * @param int $contributionID - * @param array $values - * Values related to objects that have already been loaded. * @param bool $returnMessageText * Should text be returned instead of sent. This. * is because the function is also used to generate pdfs @@ -4607,9 +4607,8 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * @throws \CiviCRM_API3_Exception * @throws \Exception */ - public static function sendMail(&$input, &$ids, $contributionID, &$values, - $returnMessageText = FALSE) { - + public static function sendMail($input, $ids, $contributionID, $returnMessageText = FALSE) { + $values = []; $contribution = new CRM_Contribute_BAO_Contribution(); $contribution->id = $contributionID; if (!$contribution->find(TRUE)) { @@ -5211,13 +5210,12 @@ LEFT JOIN civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co * load them in this function. Code clean up would compensate for any minor performance implication. * * @param \CRM_Contribute_BAO_Contribution $contribution - * @param int $primaryContributionID * @param string $changeDate * * @throws \CRM_Core_Exception * @throws \CiviCRM_API3_Exception */ - public static function updateMembershipBasedOnCompletionOfContribution($contribution, $primaryContributionID, $changeDate) { + public static function updateMembershipBasedOnCompletionOfContribution($contribution, $changeDate) { $memberships = self::getRelatedMemberships($contribution->id); foreach ($memberships as $membership) { $membershipParams = [ @@ -5254,10 +5252,11 @@ LIMIT 1;"; // Passing num_terms to the api triggers date calculations, but for pending memberships these may be already calculated. // sigh - they should be consistent but removing the end date check causes test failures & maybe UI too? // The api assumes num_terms is a special sauce for 'is_renewal' so we need to not pass it when updating a pending to completed. + // ... except testCompleteTransactionMembershipPriceSetTwoTerms hits this line so the above is obviously not true.... // @todo once apiv4 ships with core switch to that & find sanity. $membershipParams['num_terms'] = $contribution->getNumTermsByContributionAndMembershipType( $membershipParams['membership_type_id'], - $primaryContributionID + $contribution->id ); } // @todo remove all this stuff in favour of letting the api call further down handle in @@ -5273,6 +5272,8 @@ LIMIT 1;"; * In BAO/Membership.php(renewMembership function), we skip the extend membership date and status * when Contribution mode is notify and membership is for renewal ) */ + // Test cover for this is in testRepeattransactionRenewMembershipOldMembership + // Be afraid. CRM_Member_BAO_Membership::fixMembershipStatusBeforeRenew($currentMembership, $changeDate); // @todo - we should pass membership_type_id instead of null here but not @@ -5707,23 +5708,6 @@ LIMIT 1;"; } } - /** - * Should an email receipt be sent for this contribution when complete. - * - * @param array $input - * - * @return mixed - */ - protected function isEmailReceipt($input) { - if (isset($input['is_email_receipt'])) { - return $input['is_email_receipt']; - } - if (!empty($this->_relatedObjects['contribution_page_id'])) { - return $this->_relatedObjects['contribution_page_id']->is_email_receipt; - } - return TRUE; - } - /** * Function to replace contribution tokens. * diff --git a/civicrm/CRM/Contribute/BAO/Contribution/Utils.php b/civicrm/CRM/Contribute/BAO/Contribution/Utils.php index a9e84fac1e..21fd4716d4 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution/Utils.php +++ b/civicrm/CRM/Contribute/BAO/Contribution/Utils.php @@ -83,6 +83,9 @@ class CRM_Contribute_BAO_Contribution_Utils { $form->_values['amount'] = $form->_params['amount']; } + if (isset($paymentParams['contribution_source'])) { + $paymentParams['source'] = $paymentParams['contribution_source']; + } if ($isPaymentTransaction) { $contributionParams = [ 'id' => $paymentParams['contribution_id'] ?? NULL, @@ -142,9 +145,6 @@ class CRM_Contribute_BAO_Contribution_Utils { $paymentParams['contributionID'] = $contribution->id; $paymentParams['contributionPageID'] = $contribution->contribution_page_id; - if (isset($paymentParams['contribution_source'])) { - $paymentParams['source'] = $paymentParams['contribution_source']; - } if (!empty($form->_params['is_recur']) && $contribution->contribution_recur_id) { $paymentParams['contributionRecurID'] = $contribution->contribution_recur_id; @@ -485,7 +485,7 @@ LIMIT 1 /** * Format monetary amount: round and return to desired decimal place - * CRM-20145 + * @see https://issues.civicrm.org/jira/browse/CRM-20145 * * @param float $amount * Monetary amount diff --git a/civicrm/CRM/Contribute/BAO/ContributionPage.php b/civicrm/CRM/Contribute/BAO/ContributionPage.php index f149957fe6..2e4ccbf758 100644 --- a/civicrm/CRM/Contribute/BAO/ContributionPage.php +++ b/civicrm/CRM/Contribute/BAO/ContributionPage.php @@ -842,8 +842,7 @@ LEFT JOIN civicrm_premiums ON ( civicrm_premiums.entity_id = civicrm $tsLocale = CRM_Core_I18n::getLocale(); $config = CRM_Core_Config::singleton(); $json = $jsonDecode = NULL; - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); + $multilingual = CRM_Core_I18n::isMultilingual(); $moduleDataFormat = [ 'soft_credit' => [ @@ -866,7 +865,7 @@ LEFT JOIN civicrm_premiums ON ( civicrm_premiums.entity_id = civicrm if ($setDefault) { $jsonDecode = json_decode($params); $jsonDecode = (array) $jsonDecode->$module; - if (!$domain->locales && !empty($jsonDecode['default'])) { + if (!$multilingual && !empty($jsonDecode['default'])) { //monolingual state $jsonDecode += (array) $jsonDecode['default']; unset($jsonDecode['default']); @@ -882,7 +881,7 @@ LEFT JOIN civicrm_premiums ON ( civicrm_premiums.entity_id = civicrm } //check and handle multilingual honoree params - if (!$domain->locales) { + if (!$multilingual) { //if in singlelingual state simply return the array format $json = [$module => NULL]; foreach ($moduleDataFormat[$module] as $key => $attribute) { @@ -904,9 +903,9 @@ LEFT JOIN civicrm_premiums ON ( civicrm_premiums.entity_id = civicrm $json = [$module => NULL]; foreach ($moduleDataFormat[$module] as $key => $attribute) { if ($key === 'multilingual') { - $json[$module][$config->lcMessages] = []; + $json[$module][$tsLocale] = []; foreach ($attribute as $attr) { - $json[$module][$config->lcMessages][$attr] = $params[$attr]; + $json[$module][$tsLocale][$attr] = $params[$attr]; } } else { diff --git a/civicrm/CRM/Contribute/BAO/ContributionRecur.php b/civicrm/CRM/Contribute/BAO/ContributionRecur.php index 5862d4b777..63d7799768 100644 --- a/civicrm/CRM/Contribute/BAO/ContributionRecur.php +++ b/civicrm/CRM/Contribute/BAO/ContributionRecur.php @@ -424,8 +424,7 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) 'id' => $id, ]); // First look for new-style template contribution with is_template=1 - $templateContributions = \Civi\Api4\Contribution::get() - ->setCheckPermissions(FALSE) + $templateContributions = \Civi\Api4\Contribution::get(FALSE) ->addWhere('contribution_recur_id', '=', $id) ->addWhere('is_template', '=', 1) ->addWhere('is_test', '=', $is_test) @@ -434,8 +433,7 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) ->execute(); if (!$templateContributions->count()) { // Fall back to old style template contributions - $templateContributions = \Civi\Api4\Contribution::get() - ->setCheckPermissions(FALSE) + $templateContributions = \Civi\Api4\Contribution::get(FALSE) ->addWhere('contribution_recur_id', '=', $id) ->addWhere('is_test', '=', $is_test) ->addOrderBy('id', 'DESC') @@ -444,8 +442,15 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) } if ($templateContributions->count()) { $templateContribution = $templateContributions->first(); - $result = array_merge($templateContribution, $overrides); $lineItems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($templateContribution['id']); + // We only permit the financial type to be overridden for single line items. + // Otherwise we need to figure out a whole lot of extra complexity. + // It's not UI-possible to alter financial_type_id for recurring contributions + // with more than one line item. + if (count($lineItems) > 1 && isset($overrides['financial_type_id'])) { + unset($overrides['financial_type_id']); + } + $result = array_merge($templateContribution, $overrides); $result['line_item'] = self::reformatLineItemsForRepeatContribution($result['total_amount'], $result['financial_type_id'], $lineItems, (array) $templateContribution); return $result; } @@ -547,6 +552,8 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) /** * Copy custom data of the initial contribution into its recurring contributions. * + * @deprecated + * * @param int $recurId * @param int $targetContributionId */ @@ -835,7 +842,6 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) */ public static function updateOnNewPayment($recurringContributionID, $paymentStatus, $effectiveDate) { - $effectiveDate = $effectiveDate ? date('Y-m-d', strtotime($effectiveDate)) : date('Y-m-d'); if (!in_array($paymentStatus, ['Completed', 'Failed'])) { return; } @@ -864,12 +870,18 @@ 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'; } else { - // Only update next sched date if it's empty or 'just now' because payment processors may be managing - // the scheduled date themselves as core did not previously provide any help. - if (empty($existing['next_sched_contribution_date']) || strtotime($existing['next_sched_contribution_date']) == - strtotime($effectiveDate)) { + // Only update next sched date if it's empty or up to 48 hours away because payment processors may be managing + // the scheduled date themselves as core did not previously provide any help. This check can possibly be removed + // as it's unclear if it actually is helpful... + // We should allow payment processors to pass this value into repeattransaction in future. + // Note 48 hours is a bit aribtrary but means that we can hopefully ignore the time being potentially + // rounded down to midnight. + $upperDateToConsiderProcessed = strtotime('+ 48 hours', ($effectiveDate ? strtotime($effectiveDate) : time())); + if (empty($existing['next_sched_contribution_date']) || strtotime($existing['next_sched_contribution_date']) <= + $upperDateToConsiderProcessed) { $params['next_sched_contribution_date'] = date('Y-m-d', strtotime('+' . $existing['frequency_interval'] . ' ' . $existing['frequency_unit'], strtotime($effectiveDate))); } } diff --git a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php index 435c239813..cdf5b2f6a1 100644 --- a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php +++ b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php @@ -718,7 +718,7 @@ WHERE contribution_id = {$id} $title .= " - {$info['title']}"; } $this->assign('transaction', TRUE); - $this->assign('payments', $paymentInfo['transaction']); + $this->assign('payments', $paymentInfo['transaction'] ?? NULL); $this->assign('paymentLinks', $paymentInfo['payment_links']); return $title; } diff --git a/civicrm/CRM/Contribute/Form/CancelSubscription.php b/civicrm/CRM/Contribute/Form/CancelSubscription.php index 3d0003796e..ecb18817c5 100644 --- a/civicrm/CRM/Contribute/Form/CancelSubscription.php +++ b/civicrm/CRM/Contribute/Form/CancelSubscription.php @@ -10,15 +10,16 @@ */ use Civi\Payment\PropertyBag; +use Civi\Payment\Exception\PaymentProcessorException; /** * This class provides support for canceling recurring subscriptions. */ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_ContributionRecur { - protected $_userContext = NULL; + protected $_userContext; - protected $_mode = NULL; + protected $_mode; /** * The contributor email @@ -135,16 +136,7 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib $this->buildQuickEntityForm(); // Determine if we can cancel recurring contribution via API with this processor if ($this->_paymentProcessorObj->supports('CancelRecurringNotifyOptional')) { - $searchRange = []; - $searchRange[] = $this->createElement('radio', NULL, NULL, ts('Yes'), '1'); - $searchRange[] = $this->createElement('radio', NULL, NULL, ts('No'), '0'); - - $this->addGroup( - $searchRange, - 'send_cancel_request', - ts('Send cancellation request to %1 ?', - [1 => $this->_paymentProcessorObj->getTitle()]) - ); + $this->addRadio('send_cancel_request', ts('Send cancellation request to %1 ?', [1 => $this->_paymentProcessorObj->getTitle()]), [ts('No'), ts('Yes')]); } else { $this->assign('cancelRecurNotSupportedText', $this->_paymentProcessorObj->getText('cancelRecurNotSupportedText', [])); @@ -196,10 +188,10 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib * Process the form submission. * * @throws \CRM_Core_Exception + * @throws \API_Exception */ public function postProcess() { $message = NULL; - $cancelSubscription = TRUE; $params = $this->controller->exportValues($this->_name); if ($this->isSelfService()) { @@ -222,112 +214,104 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib $propertyBag->setRecurProcessorID($this->getSubscriptionDetails()->processor_id); $message = $this->_paymentProcessorObj->doCancelRecurring($propertyBag)['message']; } - catch (\Civi\Payment\Exception\PaymentProcessorException $e) { + catch (PaymentProcessorException $e) { CRM_Core_Error::statusBounce($e->getMessage()); } - if ($cancelSubscription) { - try { - civicrm_api3('ContributionRecur', 'cancel', [ - 'id' => $this->getSubscriptionDetails()->recur_id, - 'membership_id' => $this->_mid, - 'processor_message' => $message, - 'cancel_reason' => $params['cancel_reason'], - ]); - - $tplParams = []; - if ($this->_mid) { - $inputParams = ['id' => $this->_mid]; - CRM_Member_BAO_Membership::getValues($inputParams, $tplParams); - $tplParams = $tplParams[$this->_mid]; - $tplParams['membership_status'] - = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipStatus', $tplParams['status_id']); - $tplParams['membershipType'] - = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $tplParams['membership_type_id']); - $status = ts('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.', [1 => $tplParams['membershipType']]); - $msgTitle = 'Membership Renewal Cancelled'; - $msgType = 'info'; - } - else { - $tplParams['recur_frequency_interval'] = $this->getSubscriptionDetails()->frequency_interval; - $tplParams['recur_frequency_unit'] = $this->getSubscriptionDetails()->frequency_unit; - $tplParams['amount'] = CRM_Utils_Money::format($this->getSubscriptionDetails()->amount, $this->getSubscriptionDetails()->currency); - $tplParams['contact'] = ['display_name' => $this->_donorDisplayName]; - $status = ts('The recurring contribution of %1, every %2 %3 has been cancelled.', - [ - 1 => $tplParams['amount'], - 2 => $tplParams['recur_frequency_interval'], - 3 => $tplParams['recur_frequency_unit'], - ] - ); - $msgTitle = 'Contribution Cancelled'; - $msgType = 'success'; - } - - if (CRM_Utils_Array::value('is_notify', $params) == 1) { - if ($this->getSubscriptionDetails()->contribution_page_id) { - CRM_Core_DAO::commonRetrieveAll( - 'CRM_Contribute_DAO_ContributionPage', - 'id', - $this->getSubscriptionDetails()->contribution_page_id, - $value, - ['title', 'receipt_from_name', 'receipt_from_email'] - ); - $receiptFrom - = '"' . CRM_Utils_Array::value('receipt_from_name', $value[$this->getSubscriptionDetails()->contribution_page_id]) . - '" <' . - $value[$this->getSubscriptionDetails()->contribution_page_id]['receipt_from_email'] . - '>'; - } - else { - $domainValues = CRM_Core_BAO_Domain::getNameAndEmail(); - $receiptFrom = "$domainValues[0] <$domainValues[1]>"; - } - - // send notification - $sendTemplateParams - = [ - 'groupName' => $this->_mode == 'auto_renew' ? 'msg_tpl_workflow_membership' : 'msg_tpl_workflow_contribution', - 'valueName' => $this->_mode == 'auto_renew' ? 'membership_autorenew_cancelled' : 'contribution_recurring_cancelled', - 'contactId' => $this->getSubscriptionDetails()->contact_id, - 'tplParams' => $tplParams, - //'isTest' => $isTest, set this from _objects - 'PDFFilename' => 'receipt.pdf', - 'from' => $receiptFrom, - 'toName' => $this->_donorDisplayName, - 'toEmail' => $this->_donorEmail, - ]; - list($sent) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); - } + try { + civicrm_api3('ContributionRecur', 'cancel', [ + 'id' => $this->getSubscriptionDetails()->recur_id, + 'membership_id' => $this->_mid, + 'processor_message' => $message, + 'cancel_reason' => $params['cancel_reason'], + ]); + + $tplParams = []; + if ($this->_mid) { + $inputParams = ['id' => $this->_mid]; + CRM_Member_BAO_Membership::getValues($inputParams, $tplParams); + $tplParams = $tplParams[$this->_mid]; + $tplParams['membership_status'] + = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipStatus', $tplParams['status_id']); + $tplParams['membershipType'] + = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $tplParams['membership_type_id']); + $status = ts('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.', [1 => $tplParams['membershipType']]); + $msgTitle = 'Membership Renewal Cancelled'; + $msgType = 'info'; } - catch (CiviCRM_API3_Exception $e) { - $msgType = 'error'; - $msgTitle = ts('Error'); - if ($params['send_cancel_request'] == 1) { - $status = ts('Recurring contribution was cancelled successfully by the processor, but could not be marked as cancelled in the database.'); + else { + $tplParams['recur_frequency_interval'] = $this->getSubscriptionDetails()->frequency_interval; + $tplParams['recur_frequency_unit'] = $this->getSubscriptionDetails()->frequency_unit; + $tplParams['amount'] = CRM_Utils_Money::format($this->getSubscriptionDetails()->amount, $this->getSubscriptionDetails()->currency); + $tplParams['contact'] = ['display_name' => $this->_donorDisplayName]; + $status = ts('The recurring contribution of %1, every %2 %3 has been cancelled.', + [ + 1 => $tplParams['amount'], + 2 => $tplParams['recur_frequency_interval'], + 3 => $tplParams['recur_frequency_unit'], + ] + ); + $msgTitle = 'Contribution Cancelled'; + $msgType = 'success'; + } + + if (CRM_Utils_Array::value('is_notify', $params) == 1) { + if ($this->getSubscriptionDetails()->contribution_page_id) { + CRM_Core_DAO::commonRetrieveAll( + 'CRM_Contribute_DAO_ContributionPage', + 'id', + $this->getSubscriptionDetails()->contribution_page_id, + $value, + ['title', 'receipt_from_name', 'receipt_from_email'] + ); + $receiptFrom + = '"' . CRM_Utils_Array::value('receipt_from_name', $value[$this->getSubscriptionDetails()->contribution_page_id]) . + '" <' . + $value[$this->getSubscriptionDetails()->contribution_page_id]['receipt_from_email'] . + '>'; } else { - $status = ts('Recurring contribution could not be cancelled in the database.'); + $domainValues = CRM_Core_BAO_Domain::getNameAndEmail(); + $receiptFrom = "$domainValues[0] <$domainValues[1]>"; } + + // send notification + $sendTemplateParams + = [ + 'groupName' => $this->_mode == 'auto_renew' ? 'msg_tpl_workflow_membership' : 'msg_tpl_workflow_contribution', + 'valueName' => $this->_mode == 'auto_renew' ? 'membership_autorenew_cancelled' : 'contribution_recurring_cancelled', + 'contactId' => $this->getSubscriptionDetails()->contact_id, + 'tplParams' => $tplParams, + //'isTest' => $isTest, set this from _objects + 'PDFFilename' => 'receipt.pdf', + 'from' => $receiptFrom, + 'toName' => $this->_donorDisplayName, + 'toEmail' => $this->_donorEmail, + ]; + list($sent) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); } } - else { - $status = ts('The recurring contribution could not be cancelled.'); - $msgTitle = 'Error Cancelling Contribution'; + catch (CiviCRM_API3_Exception $e) { $msgType = 'error'; + $msgTitle = ts('Error'); + if ($params['send_cancel_request'] == 1) { + $status = ts('Recurring contribution was cancelled successfully by the processor, but could not be marked as cancelled in the database.'); + } + else { + $status = ts('Recurring contribution could not be cancelled in the database.'); + } } - $session = CRM_Core_Session::singleton(); - $userID = $session->get('userID'); + $userID = CRM_Core_Session::getLoggedInContactID(); if ($userID && $status) { - $session->setStatus($status, $msgTitle, $msgType); + CRM_Core_Session::singleton()->setStatus($status, $msgTitle, $msgType); } elseif (!$userID) { if ($status) { CRM_Utils_System::setUFMessage($status); // keep result as 1, since we not displaying anything on the redirected page anyway - return CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contribute/subscriptionstatus', - "reset=1&task=cancel&result=1")); + CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contribute/subscriptionstatus', + 'reset=1&task=cancel&result=1')); } } } diff --git a/civicrm/CRM/Contribute/Form/Contribution.php b/civicrm/CRM/Contribute/Form/Contribution.php index b063ed269d..d453df3a7c 100644 --- a/civicrm/CRM/Contribute/Form/Contribution.php +++ b/civicrm/CRM/Contribute/Form/Contribution.php @@ -951,30 +951,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP CRM_Core_Error::statusBounce($e->getMessage(), $urlParams, ts('Payment Processor Error')); } - $session = CRM_Core_Session::singleton(); - $buttonName = $this->controller->getButtonName(); - if ($this->_context == 'standalone') { - if ($buttonName == $this->getButtonName('upload', 'new')) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contribute/add', - 'reset=1&action=add&context=standalone' - )); - } - else { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view', - "reset=1&cid={$this->_contactID}&selectedChild=contribute" - )); - } - } - elseif ($this->_context == 'contribution' && $this->_mode && $buttonName == $this->getButtonName('upload', 'new')) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view/contribution', - "reset=1&action=add&context={$this->_context}&cid={$this->_contactID}&mode={$this->_mode}" - )); - } - elseif ($buttonName == $this->getButtonName('upload', 'new')) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view/contribution', - "reset=1&action=add&context={$this->_context}&cid={$this->_contactID}" - )); - } + $this->setUserContext(); //store contribution ID if not yet set (on create) if (empty($this->_id) && !empty($contribution->id)) { @@ -1737,7 +1714,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP /** * Calculate non deductible amount. * - * CRM-11956 + * @see https://issues.civicrm.org/jira/browse/CRM-11956 * if non_deductible_amount exists i.e. Additional Details field set was opened [and staff typed something] - * if non_deductible_amount does NOT exist - then calculate it depending on: * $financialType->is_deductible and whether there is a product (premium). @@ -1814,4 +1791,34 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } } + /** + * Set context in session + */ + public function setUserContext(): void { + $session = CRM_Core_Session::singleton(); + $buttonName = $this->controller->getButtonName(); + if ($this->_context == 'standalone') { + if ($buttonName == $this->getButtonName('upload', 'new')) { + $session->replaceUserContext(CRM_Utils_System::url('civicrm/contribute/add', + 'reset=1&action=add&context=standalone' + )); + } + else { + $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view', + "reset=1&cid={$this->_contactID}&selectedChild=contribute" + )); + } + } + elseif ($this->_context == 'contribution' && $this->_mode && $buttonName == $this->getButtonName('upload', 'new')) { + $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view/contribution', + "reset=1&action=add&context={$this->_context}&cid={$this->_contactID}&mode={$this->_mode}" + )); + } + elseif ($buttonName == $this->getButtonName('upload', 'new')) { + $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view/contribution', + "reset=1&action=add&context={$this->_context}&cid={$this->_contactID}" + )); + } + } + } diff --git a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php index f478e80e70..228e285dfd 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php @@ -201,7 +201,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr * * This is a bit too much about wierd form interpretation to be this deep. * - * CRM-11885 + * @see https://issues.civicrm.org/jira/browse/CRM-11885 * if non_deductible_amount exists i.e. Additional Details fieldset was opened [and staff typed something] -> keep * it. * @@ -954,7 +954,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } $smarty = CRM_Core_Smarty::singleton(); $smarty->assign('dataArray', $dataArray); - $smarty->assign('totalTaxAmount', $params['tax_amount']); + $smarty->assign('totalTaxAmount', $params['tax_amount'] ?? NULL); } // lets store it in the form variable so postProcess hook can get to this and use it diff --git a/civicrm/CRM/Contribute/Form/Contribution/Main.php b/civicrm/CRM/Contribute/Form/Contribution/Main.php index c8e0ccfddc..d215092d92 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Main.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Main.php @@ -444,10 +444,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu ['onclick' => "showHideByValue('pcp_display_in_roll','','nameID|nickID|personalNoteID','block','radio',false); pcpAnonymous( );"] ); $extraOption = ['onclick' => "return pcpAnonymous( );"]; - $elements = []; - $elements[] = &$this->createElement('radio', NULL, '', ts('Include my name and message'), 0, $extraOption); - $elements[] = &$this->createElement('radio', NULL, '', ts('List my contribution anonymously'), 1, $extraOption); - $this->addGroup($elements, 'pcp_is_anonymous', NULL, ' '); + $this->addRadio('pcp_is_anonymous', NULL, [ts('Include my name and message'), ts('List my contribution anonymously')], [], ' ', FALSE, [$extraOption, $extraOption]); $this->add('text', 'pcp_roll_nickname', ts('Name'), ['maxlength' => 30]); $this->addField('pcp_personal_note', ['entity' => 'ContributionSoft', 'context' => 'create', 'style' => 'height: 3em; width: 40em;']); diff --git a/civicrm/CRM/Contribute/Form/ContributionBase.php b/civicrm/CRM/Contribute/Form/ContributionBase.php index ca2805d551..6822a355f6 100644 --- a/civicrm/CRM/Contribute/Form/ContributionBase.php +++ b/civicrm/CRM/Contribute/Form/ContributionBase.php @@ -222,7 +222,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->_emailExists = $this->get('emailExists'); // this was used prior to the cleverer this_>getContactID - unsure now - $this->_userID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $this->_userID = CRM_Core_Session::getLoggedInContactID(); $this->_contactID = $this->_membershipContactID = $this->getContactID(); $this->_mid = NULL; diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php b/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php index 1d7d518ce3..dc96867c0a 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php @@ -157,10 +157,7 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ $this->addProfileSelector('onbehalf_profile_id', ts('Organization Profile'), $allowCoreTypes, $allowSubTypes, $entities); - $options = []; - $options[] = $this->createElement('radio', NULL, NULL, ts('Optional'), 1); - $options[] = $this->createElement('radio', NULL, NULL, ts('Required'), 2); - $this->addGroup($options, 'is_for_organization', ''); + $this->addRadio('is_for_organization', '', [1 => ts('Optional'), 2 => ts('Required')]); $this->add('textarea', 'for_organization', ts('On behalf of Label'), ['rows' => 2, 'cols' => 50]); // collect goal amount @@ -349,8 +346,17 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ foreach ($ufJoinParams as $index => $ufJoinParam) { if (!empty($params[$index])) { - // first delete all past entries - CRM_Core_BAO_UFJoin::deleteAll($ufJoinParam); + // Look for an existing entry + $ufJoinDAO = new CRM_Core_DAO_UFJoin(); + $ufJoinDAO->module = $ufJoinParam['module']; + $ufJoinDAO->entity_table = 'civicrm_contribution_page'; + $ufJoinDAO->entity_id = $ufJoinParam['entity_id']; + $ufJoinDAO->find(TRUE); + + if (!empty($ufJoinDAO->id)) { + $ufJoinParam['id'] = $ufJoinDAO->id; + } + $ufJoinParam['uf_group_id'] = $params[$index]; $ufJoinParam['weight'] = 1; $ufJoinParam['is_active'] = 1; diff --git a/civicrm/CRM/Contribute/Form/ContributionRecur.php b/civicrm/CRM/Contribute/Form/ContributionRecur.php index ce6ae68a07..ef6a633f45 100644 --- a/civicrm/CRM/Contribute/Form/ContributionRecur.php +++ b/civicrm/CRM/Contribute/Form/ContributionRecur.php @@ -87,7 +87,7 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { /** * Details of the subscription (recurring contribution) to be altered. * - * @var array + * @var \CRM_Core_DAO */ protected $subscriptionDetails = []; @@ -179,7 +179,7 @@ class CRM_Contribute_Form_ContributionRecur extends CRM_Core_Form { /** * Get details for the recurring contribution being altered. * - * @return array + * @return \CRM_Core_DAO */ public function getSubscriptionDetails() { return $this->subscriptionDetails; diff --git a/civicrm/CRM/Contribute/Form/Search.php b/civicrm/CRM/Contribute/Form/Search.php index 3eef9ebb6e..4f1009b41a 100644 --- a/civicrm/CRM/Contribute/Form/Search.php +++ b/civicrm/CRM/Contribute/Form/Search.php @@ -307,9 +307,6 @@ class CRM_Contribute_Form_Search extends CRM_Core_Form_Search { } } - // @todo - stop changing formValues - respect submitted form values, change a working array. - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - // @todo - stop changing formValues - respect submitted form values, change a working array. $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues); diff --git a/civicrm/CRM/Contribute/Form/Task/Invoice.php b/civicrm/CRM/Contribute/Form/Task/Invoice.php index d189158cd8..b2087a6474 100644 --- a/civicrm/CRM/Contribute/Form/Task/Invoice.php +++ b/civicrm/CRM/Contribute/Form/Task/Invoice.php @@ -9,9 +9,6 @@ +--------------------------------------------------------------------+ */ -use Dompdf\Dompdf; -use Dompdf\Options; - /** * * @package CRM @@ -479,7 +476,11 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { 'metric' => 'px', ]); // functions call for adding activity with attachment - $fileName = self::putFile($html, $pdfFileName); + $fileName = self::putFile($html, $pdfFileName, [ + 'margin_top' => 10, + 'margin_left' => 65, + 'metric' => 'px', + ]); self::addActivities($subject, $contactIds, $fileName, $params); CRM_Utils_System::civiExit(); @@ -554,22 +555,13 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { * Content for pdf in html format. * * @param string $name + * @param array $format * * @return string * Name of file which is in pdf format */ - public static function putFile($html, $name = 'Invoice.pdf') { - $options = new Options(); - $options->set('isRemoteEnabled', TRUE); - - $doc = new DOMPDF($options); - $doc->load_html($html); - $doc->render(); - $html = $doc->output(); - $config = CRM_Core_Config::singleton(); - $fileName = $config->uploadDir . $name; - file_put_contents($fileName, $html); - return $fileName; + public static function putFile($html, $name = 'Invoice.pdf', $format = NULL) { + return CRM_Utils_Mail::appendPDF($name, $html, $format)['fullPath'] ?? ''; } /** diff --git a/civicrm/CRM/Contribute/Form/Task/PDF.php b/civicrm/CRM/Contribute/Form/Task/PDF.php index 76dac1989f..e05ebab9d5 100644 --- a/civicrm/CRM/Contribute/Form/Task/PDF.php +++ b/civicrm/CRM/Contribute/Form/Task/PDF.php @@ -184,7 +184,6 @@ AND {$this->_componentClause}"; // CRM_Contribute_BAO_Contribution::composeMessageArray expects mysql formatted date $objects['contribution']->receive_date = CRM_Utils_Date::isoToMysql($objects['contribution']->receive_date); - $values = []; if (isset($params['from_email_address']) && !$elements['createPdf']) { // If a logged in user from email is used rather than a domain wide from email address // the from_email_address params key will be numerical and we need to convert it to be @@ -196,8 +195,7 @@ AND {$this->_componentClause}"; $input['receipt_from_name'] = str_replace('"', '', $fromDetails[0]); } - $mail = CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $objects['contribution']->id, $values, - $elements['createPdf']); + $mail = CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $objects['contribution']->id, $elements['createPdf']); if ($mail['html']) { $message[] = $mail['html']; @@ -253,7 +251,7 @@ AND {$this->_componentClause}"; $pdfElements['contribIDs'] = implode(',', $contribIds); - $pdfElements['details'] = CRM_Contribute_Form_Task_Status::getDetails($pdfElements['contribIDs']); + $pdfElements['details'] = self::getDetails($pdfElements['contribIDs']); $pdfElements['baseIPN'] = new CRM_Core_Payment_BaseIPN(); @@ -295,4 +293,47 @@ AND {$this->_componentClause}"; return $pdfElements; } + /** + * @param string $contributionIDs + * + * @return array + */ + private static function getDetails($contributionIDs) { + if (empty($contributionIDs)) { + return []; + } + $query = " +SELECT c.id as contribution_id, + c.contact_id as contact_id , + mp.membership_id as membership_id , + pp.participant_id as participant_id , + p.event_id as event_id +FROM civicrm_contribution c +LEFT JOIN civicrm_membership_payment mp ON mp.contribution_id = c.id +LEFT JOIN civicrm_participant_payment pp ON pp.contribution_id = c.id +LEFT JOIN civicrm_participant p ON pp.participant_id = p.id +WHERE c.id IN ( $contributionIDs )"; + + $rows = []; + $dao = CRM_Core_DAO::executeQuery($query); + + while ($dao->fetch()) { + $rows[$dao->contribution_id]['component'] = $dao->participant_id ? 'event' : 'contribute'; + $rows[$dao->contribution_id]['contact'] = $dao->contact_id; + if ($dao->membership_id) { + if (!array_key_exists('membership', $rows[$dao->contribution_id])) { + $rows[$dao->contribution_id]['membership'] = []; + } + $rows[$dao->contribution_id]['membership'][] = $dao->membership_id; + } + if ($dao->participant_id) { + $rows[$dao->contribution_id]['participant'] = $dao->participant_id; + } + if ($dao->event_id) { + $rows[$dao->contribution_id]['event'] = $dao->event_id; + } + } + return $rows; + } + } diff --git a/civicrm/CRM/Contribute/Form/Task/Status.php b/civicrm/CRM/Contribute/Form/Task/Status.php index e3c2a6e7da..496ca718dd 100644 --- a/civicrm/CRM/Contribute/Form/Task/Status.php +++ b/civicrm/CRM/Contribute/Form/Task/Status.php @@ -68,21 +68,6 @@ AND {$this->_componentClause}"; * Build the form object. */ public function buildQuickForm() { - $status = CRM_Contribute_BAO_Contribution_Utils::getContributionStatuses( - 'contribution', $this->_contributionIds[0] - ); - $byName = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - // FIXME: if it's invalid to transition from Pending to - // In Progress or Overdue, we should move that logic to - // CRM_Contribute_BAO_Contribution_Utils::getContributionStatuses. - foreach (['Pending', 'In Progress', 'Overdue'] as $suppress) { - unset($status[CRM_Utils_Array::key($suppress, $byName)]); - } - $this->add('select', 'contribution_status_id', - ts('Contribution Status'), - $status, - TRUE - ); $this->add('checkbox', 'is_email_receipt', ts('Send e-mail receipt')); $this->setDefaults(['is_email_receipt' => 1]); @@ -106,7 +91,7 @@ AND co.id IN ( $contribIDs )"; $this->_rows = []; $attributes = CRM_Core_DAO::getAttribute('CRM_Contribute_DAO_Contribution'); $defaults = []; - $now = date("Y-m-d"); + $now = date('Y-m-d'); $paidByOptions = ['' => ts('- select -')] + CRM_Contribute_PseudoConstant::paymentInstrument(); while ($dao->fetch()) { @@ -131,10 +116,10 @@ AND co.id IN ( $contribIDs )"; $row['trxn_date'] = $this->add('datepicker', "trxn_date_{$row['contribution_id']}", ts('Transaction Date'), [], FALSE, ['time' => FALSE]); $defaults["trxn_date_{$row['contribution_id']}"] = $now; - $this->add("text", "check_number_{$row['contribution_id']}", ts('Check Number')); + $this->add('text', "check_number_{$row['contribution_id']}", ts('Check Number')); $defaults["check_number_{$row['contribution_id']}"] = $dao->check_no; - $this->add("select", "payment_instrument_id_{$row['contribution_id']}", ts('Payment Method'), $paidByOptions); + $this->add('select', "payment_instrument_id_{$row['contribution_id']}", ts('Payment Method'), $paidByOptions); $defaults["payment_instrument_id_{$row['contribution_id']}"] = $dao->paid_by; $this->_rows[] = $row; @@ -145,7 +130,7 @@ AND co.id IN ( $contribIDs )"; $this->addButtons([ [ 'type' => 'next', - 'name' => ts('Update Pending Status'), + 'name' => ts('Record Payments'), 'isDefault' => TRUE, ], [ @@ -182,7 +167,7 @@ AND co.id IN ( $contribIDs )"; $contribID = substr($name, 13); if ($fields["payment_instrument_id_{$contribID}"] != CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'payment_instrument_id', 'Check')) { - $errors["payment_instrument_id_{$contribID}"] = ts("Payment Method should be Check when a check number is entered for a contribution."); + $errors["payment_instrument_id_{$contribID}"] = ts('Payment Method should be Check when a check number is entered for a contribution.'); } } } @@ -198,7 +183,7 @@ AND co.id IN ( $contribIDs )"; // submit the form with values. self::processForm($this, $params); - CRM_Core_Session::setStatus(ts('Contribution status has been updated for selected record(s).'), ts('Status Updated'), 'success'); + CRM_Core_Session::setStatus(ts('Payments have been recorded for selected record(s).'), ts('Payments recorded'), 'success'); } /** @@ -212,124 +197,26 @@ AND co.id IN ( $contribIDs )"; * @throws \Exception */ public static function processForm($form, $params) { - $statusID = $params['contribution_status_id'] ?? NULL; - $baseIPN = new CRM_Core_Payment_BaseIPN(); - - // get the missing pieces for each contribution - $contribIDs = implode(',', $form->_contributionIds); - $details = self::getDetails($contribIDs); - $template = CRM_Core_Smarty::singleton(); - - // for each contribution id, we just call the baseIPN stuff foreach ($form->_rows as $row) { - $input = $ids = $objects = []; - $input['component'] = $details[$row['contribution_id']]['component']; - - $ids['contact'] = $row['contact_id']; - $ids['contribution'] = $row['contribution_id']; - $ids['contributionRecur'] = NULL; - $ids['contributionPage'] = NULL; - $ids['membership'] = $details[$row['contribution_id']]['membership'] ?? NULL; - $ids['participant'] = $details[$row['contribution_id']]['participant'] ?? NULL; - $ids['event'] = $details[$row['contribution_id']]['event'] ?? NULL; - - if (!$baseIPN->validateData($input, $ids, $objects, FALSE)) { - CRM_Core_Error::statusBounce('Supplied data was not able to be validated'); - } - - $contribution = &$objects['contribution']; - - $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, - 'name' - ); - - if ($statusID == array_search('Cancelled', $contributionStatuses)) { - $transaction = new CRM_Core_Transaction(); - $baseIPN->cancelled($objects, $transaction); - $transaction->commit(); - continue; - } - elseif ($statusID == array_search('Failed', $contributionStatuses)) { - $transaction = new CRM_Core_Transaction(); - $baseIPN->failed($objects, $transaction); - $transaction->commit(); - continue; - } - - // status is not pending - if ($contribution->contribution_status_id != array_search('Pending', - $contributionStatuses - ) - ) { - continue; - } - - // set some fake input values so we can reuse IPN code - $input['amount'] = $contribution->total_amount; - $input['is_test'] = $contribution->is_test; - $input['fee_amount'] = $params["fee_amount_{$row['contribution_id']}"]; - $input['check_number'] = $params["check_number_{$row['contribution_id']}"]; - $input['payment_instrument_id'] = $params["payment_instrument_id_{$row['contribution_id']}"]; - $input['net_amount'] = $contribution->total_amount - $input['fee_amount']; - - if (!empty($params["trxn_id_{$row['contribution_id']}"])) { - $input['trxn_id'] = trim($params["trxn_id_{$row['contribution_id']}"]); - } - else { - $input['trxn_id'] = $contribution->invoice_id; - } - $input['trxn_date'] = $params["trxn_date_{$row['contribution_id']}"] . ' ' . date('H:i:s'); - $input['is_email_receipt'] = !empty($params['is_email_receipt']); - - // @todo calling CRM_Contribute_BAO_Contribution::completeOrder like this is a pattern in it's last gasps. Call contribute.completetransaction api. - CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects); - - // reset template values before processing next transactions - $template->clearTemplateVars(); - } - } - - /** - * @param string $contributionIDs - * - * @return array - */ - public static function &getDetails($contributionIDs) { - if (empty($contributionIDs)) { - return []; - } - $query = " -SELECT c.id as contribution_id, - c.contact_id as contact_id , - mp.membership_id as membership_id , - pp.participant_id as participant_id , - p.event_id as event_id -FROM civicrm_contribution c -LEFT JOIN civicrm_membership_payment mp ON mp.contribution_id = c.id -LEFT JOIN civicrm_participant_payment pp ON pp.contribution_id = c.id -LEFT JOIN civicrm_participant p ON pp.participant_id = p.id -WHERE c.id IN ( $contributionIDs )"; - - $rows = []; - $dao = CRM_Core_DAO::executeQuery($query); - - while ($dao->fetch()) { - $rows[$dao->contribution_id]['component'] = $dao->participant_id ? 'event' : 'contribute'; - $rows[$dao->contribution_id]['contact'] = $dao->contact_id; - if ($dao->membership_id) { - if (!array_key_exists('membership', $rows[$dao->contribution_id])) { - $rows[$dao->contribution_id]['membership'] = []; - } - $rows[$dao->contribution_id]['membership'][] = $dao->membership_id; - } - if ($dao->participant_id) { - $rows[$dao->contribution_id]['participant'] = $dao->participant_id; - } - if ($dao->event_id) { - $rows[$dao->contribution_id]['event'] = $dao->event_id; - } + $contribData = civicrm_api3('Contribution', 'getSingle', ['id' => $row['contribution_id']]); + $trxnParams = [ + 'contribution_id' => $row['contribution_id'], + // We are safe assuming that payments will be for the total amount of + // the contribution because the contributions must be in "Pending" + // status. + 'total_amount' => $contribData['total_amount'], + 'fee_amount' => $params["fee_amount_{$row['contribution_id']}"], + 'check_number' => $params["check_number_{$row['contribution_id']}"], + 'payment_instrument_id' => $params["payment_instrument_id_{$row['contribution_id']}"], + 'net_amount' => $contribData['total_amount'] - $params["fee_amount_{$row['contribution_id']}"], + // Not sure why to default to invoice_id, but that's what the form has + // been doing historically + 'trxn_id' => $params["trxn_id_{$row['contribution_id']}"] ?? $contribData['invoice_id'], + 'trxn_date' => $params["trxn_date_{$row['contribution_id']}"] ?? 'now', + 'is_send_contribution_notification' => !empty($params['is_email_receipt']), + ]; + $result = civicrm_api3('Payment', 'create', $trxnParams); } - return $rows; } } diff --git a/civicrm/CRM/Contribute/Import/Form/DataSource.php b/civicrm/CRM/Contribute/Import/Form/DataSource.php index bdb1e521cc..f1c72357c7 100644 --- a/civicrm/CRM/Contribute/Import/Form/DataSource.php +++ b/civicrm/CRM/Contribute/Import/Form/DataSource.php @@ -31,15 +31,10 @@ class CRM_Contribute_Import_Form_DataSource extends CRM_Import_Form_DataSource { parent::buildQuickForm(); $duplicateOptions = []; - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Insert new contributions'), CRM_Import_Parser::DUPLICATE_SKIP - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Update existing contributions'), CRM_Import_Parser::DUPLICATE_UPDATE - ); - $this->addGroup($duplicateOptions, 'onDuplicate', - ts('Import mode') - ); + $this->addRadio('onDuplicate', ts('Import mode'), [ + CRM_Import_Parser::DUPLICATE_SKIP => ts('Insert new contributions'), + CRM_Import_Parser::DUPLICATE_UPDATE => ts('Update existing contributions'), + ]); $this->setDefaults(['onDuplicate' => CRM_Import_Parser::DUPLICATE_SKIP]); diff --git a/civicrm/CRM/Contribute/Page/AJAX.php b/civicrm/CRM/Contribute/Page/AJAX.php index 84a7a68c01..19f7c7ee80 100644 --- a/civicrm/CRM/Contribute/Page/AJAX.php +++ b/civicrm/CRM/Contribute/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Contribute/Task.php b/civicrm/CRM/Contribute/Task.php index 9a88cfc6d5..24feae8a87 100644 --- a/civicrm/CRM/Contribute/Task.php +++ b/civicrm/CRM/Contribute/Task.php @@ -81,7 +81,7 @@ class CRM_Contribute_Task extends CRM_Core_Task { 'result' => TRUE, ], self::UPDATE_STATUS => [ - 'title' => ts('Update pending contribution status'), + 'title' => ts('Record payments for contributions'), 'class' => 'CRM_Contribute_Form_Task_Status', 'result' => TRUE, ], diff --git a/civicrm/CRM/Core/BAO/ActionLog.php b/civicrm/CRM/Core/BAO/ActionLog.php index 877c88b8ae..33fffada1d 100644 --- a/civicrm/CRM/Core/BAO/ActionLog.php +++ b/civicrm/CRM/Core/BAO/ActionLog.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/BAO/ActionSchedule.php b/civicrm/CRM/Core/BAO/ActionSchedule.php index a53e0e6232..47fdd617ca 100644 --- a/civicrm/CRM/Core/BAO/ActionSchedule.php +++ b/civicrm/CRM/Core/BAO/ActionSchedule.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/BAO/Address.php b/civicrm/CRM/Core/BAO/Address.php index c0f6561c8a..ea7da9440c 100644 --- a/civicrm/CRM/Core/BAO/Address.php +++ b/civicrm/CRM/Core/BAO/Address.php @@ -142,10 +142,14 @@ class CRM_Core_BAO_Address extends CRM_Core_DAO_Address { } $address->copyValues($params); - $address->save(); if ($address->id) { + // first get custom field from master address if any + if (isset($params['master_id']) && !CRM_Utils_System::isNull($params['master_id'])) { + $address->copyCustomFields($params['master_id'], $address->id); + } + if (isset($params['custom'])) { $addressCustom = $params['custom']; } @@ -1060,6 +1064,7 @@ SELECT is_primary, $addressDAO->copyValues($params); $addressDAO->id = $dao->id; $addressDAO->save(); + $addressDAO->copyCustomFields($addressId, $addressDAO->id); } } diff --git a/civicrm/CRM/Core/BAO/Block.php b/civicrm/CRM/Core/BAO/Block.php index 876cd323c5..0689b0a495 100644 --- a/civicrm/CRM/Core/BAO/Block.php +++ b/civicrm/CRM/Core/BAO/Block.php @@ -10,11 +10,10 @@ */ /** + * Add static functions to include some common functionality used across location sub object BAO classes. * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * - * Add static functions to include some common functionality used across location sub object BAO classes. */ class CRM_Core_BAO_Block { @@ -440,7 +439,7 @@ class CRM_Core_BAO_Block { /* * If the only existing email is the one we are editing then we must set * is_primary to 1 - * CRM-10451 + * @see https://issues.civicrm.org/jira/browse/CRM-10451 */ if ($existingEntities->N == 1 && $existingEntities->id == CRM_Utils_Array::value('id', $params)) { $params['is_primary'] = 1; diff --git a/civicrm/CRM/Core/BAO/Cache.php b/civicrm/CRM/Core/BAO/Cache.php index a13a6fee85..c753411930 100644 --- a/civicrm/CRM/Core/BAO/Cache.php +++ b/civicrm/CRM/Core/BAO/Cache.php @@ -33,225 +33,10 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache { */ const DEFAULT_SESSION_TTL = 172800; - /** - * Cache. - * - * Format is ($cacheKey => $cacheValue) - * - * @var array - */ - public static $_cache = NULL; - - /** - * Retrieve an item from the DB cache. - * - * @param string $group - * (required) The group name of the item. - * @param string $path - * (required) The path under which this item is stored. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - * - * @return object - * The data if present in cache, else null - * @deprecated - */ - public static function &getItem($group, $path, $componentID = NULL) { - CRM_Core_Error::deprecatedFunctionWarning( - 'CRM_Core_BAO_Cache::getItem is deprecated and will be removed from core soon, use Civi::cache() facade or define cache group using hook_civicrm_container' - ); - if (($adapter = CRM_Utils_Constant::value('CIVICRM_BAO_CACHE_ADAPTER')) !== NULL) { - $value = $adapter::getItem($group, $path, $componentID); - return $value; - } - - if (self::$_cache === NULL) { - self::$_cache = []; - } - - $argString = "CRM_CT_{$group}_{$path}_{$componentID}"; - if (!array_key_exists($argString, self::$_cache)) { - $cache = CRM_Utils_Cache::singleton(); - $cleanKey = self::cleanKey($argString); - self::$_cache[$argString] = $cache->get($cleanKey); - if (self::$_cache[$argString] === NULL) { - $table = self::getTableName(); - $where = self::whereCache($group, $path, $componentID); - $rawData = CRM_Core_DAO::singleValueQuery("SELECT data FROM $table WHERE $where"); - $data = $rawData ? self::decode($rawData) : NULL; - - self::$_cache[$argString] = $data; - if ($data !== NULL) { - // Do not cache 'null' as that is most likely a cache miss & we shouldn't then cache it. - $cache->set($cleanKey, self::$_cache[$argString]); - } - } - } - return self::$_cache[$argString]; - } - - /** - * Retrieve all items in a group. - * - * @param string $group - * (required) The group name of the item. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - * - * @return object - * The data if present in cache, else null - * @deprecated - */ - public static function &getItems($group, $componentID = NULL) { - CRM_Core_Error::deprecatedFunctionWarning( - 'CRM_Core_BAO_Cache::getItems is deprecated and will be removed from core soon, use Civi::cache() facade or define cache group using hook_civicrm_container' - ); - if (($adapter = CRM_Utils_Constant::value('CIVICRM_BAO_CACHE_ADAPTER')) !== NULL) { - return $adapter::getItems($group, $componentID); - } - - if (self::$_cache === NULL) { - self::$_cache = []; - } - - $argString = "CRM_CT_CI_{$group}_{$componentID}"; - if (!array_key_exists($argString, self::$_cache)) { - $cache = CRM_Utils_Cache::singleton(); - $cleanKey = self::cleanKey($argString); - self::$_cache[$argString] = $cache->get($cleanKey); - if (!self::$_cache[$argString]) { - $table = self::getTableName(); - $where = self::whereCache($group, NULL, $componentID); - $dao = CRM_Core_DAO::executeQuery("SELECT path, data FROM $table WHERE $where"); - - $result = []; - while ($dao->fetch()) { - $result[$dao->path] = self::decode($dao->data); - } - - self::$_cache[$argString] = $result; - $cache->set($cleanKey, self::$_cache[$argString]); - } - } - - return self::$_cache[$argString]; - } - - /** - * Store an item in the DB cache. - * - * @param object $data - * (required) A reference to the data that will be serialized and stored. - * @param string $group - * (required) The group name of the item. - * @param string $path - * (required) The path under which this item is stored. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - * @deprecated - * @throws CRM_Core_Exception - */ - public static function setItem(&$data, $group, $path, $componentID = NULL) { - CRM_Core_Error::deprecatedFunctionWarning( - 'CRM_Core_BAO_Cache::setItem is deprecated and will be removed from core soon, use Civi::cache() facade or define cache group using hook_civicrm_container' - ); - if (($adapter = CRM_Utils_Constant::value('CIVICRM_BAO_CACHE_ADAPTER')) !== NULL) { - return $adapter::setItem($data, $group, $path, $componentID); - } - - if (self::$_cache === NULL) { - self::$_cache = []; - } - - // get a lock so that multiple ajax requests on the same page - // dont trample on each other - // CRM-11234 - $lock = Civi::lockManager()->acquire("cache.{$group}_{$path}._{$componentID}"); - if (!$lock->isAcquired()) { - throw new CRM_Core_Exception('Cannot acquire database lock'); - } - - $table = self::getTableName(); - $where = self::whereCache($group, $path, $componentID); - $dataExists = CRM_Core_DAO::singleValueQuery("SELECT COUNT(*) FROM $table WHERE {$where}"); - // FIXME - Use SQL NOW() or CRM_Utils_Time? - $now = date('Y-m-d H:i:s'); - $dataSerialized = self::encode($data); - - // This table has a wonky index, so we cannot use REPLACE or - // "INSERT ... ON DUPE". Instead, use SELECT+(INSERT|UPDATE). - if ($dataExists) { - $sql = "UPDATE $table SET data = %1, created_date = %2 WHERE {$where}"; - $args = [ - 1 => [$dataSerialized, 'String'], - 2 => [$now, 'String'], - ]; - $dao = CRM_Core_DAO::executeQuery($sql, $args, TRUE, NULL, FALSE, FALSE); - } - else { - $insert = CRM_Utils_SQL_Insert::into($table) - ->row([ - 'group_name' => $group, - 'path' => $path, - 'component_id' => $componentID, - 'data' => $dataSerialized, - 'created_date' => $now, - ]); - $dao = CRM_Core_DAO::executeQuery($insert->toSQL(), [], TRUE, NULL, FALSE, FALSE); - } - - $lock->release(); - - // cache coherency - refresh or remove dependent caches - - $argString = "CRM_CT_{$group}_{$path}_{$componentID}"; - $cache = CRM_Utils_Cache::singleton(); - $data = self::decode($dataSerialized); - self::$_cache[$argString] = $data; - $cache->set(self::cleanKey($argString), $data); - - $argString = "CRM_CT_CI_{$group}_{$componentID}"; - unset(self::$_cache[$argString]); - $cache->delete(self::cleanKey($argString)); - } - - /** - * Delete all the cache elements that belong to a group OR delete the entire cache if group is not specified. - * - * @param string $group - * The group name of the entries to be deleted. - * @param string $path - * Path of the item that needs to be deleted. - * @param bool $clearAll clear all caches - * @deprecated - */ - public static function deleteGroup($group = NULL, $path = NULL, $clearAll = TRUE) { - CRM_Core_Error::deprecatedFunctionWarning( - 'CRM_Core_BAO_Cache::deleteGroup is deprecated and will be removed from core soon, use Civi::cache() facade or define cache group using hook_civicrm_container' - ); - if (($adapter = CRM_Utils_Constant::value('CIVICRM_BAO_CACHE_ADAPTER')) !== NULL) { - return $adapter::deleteGroup($group, $path); - } - else { - $table = self::getTableName(); - $where = self::whereCache($group, $path, NULL); - CRM_Core_DAO::executeQuery("DELETE FROM $table WHERE $where"); - } - - if ($clearAll) { - self::resetCaches(); - } - } - /** * Cleanup ACL and System Level caches */ public static function resetCaches() { - // also reset ACL Cache - // @todo why is this called when CRM_Utils_System::flushCache() does it as well. - CRM_ACL_BAO_Cache::resetCache(); - - // also reset memory cache if any CRM_Utils_System::flushCache(); } @@ -476,6 +261,7 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache { * @see CRM_Utils_Cache::cleanKey() */ public static function cleanKey($key) { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Utils_Cache::cleanKey'); return CRM_Utils_Cache::cleanKey($key); } diff --git a/civicrm/CRM/Core/BAO/Cache/Psr16.php b/civicrm/CRM/Core/BAO/Cache/Psr16.php deleted file mode 100644 index 1255f6d8a9..0000000000 --- a/civicrm/CRM/Core/BAO/Cache/Psr16.php +++ /dev/null @@ -1,215 +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 | - +--------------------------------------------------------------------+ - */ - -/** - * Class CRM_Core_BAO_Cache_Psr16 - * - * This optional adapter to help phase-out CRM_Core_BAO_Cache. - * - * In effect, it changes the default behavior of legacy cache-consumers - * (CRM_Core_BAO_Cache) so that they store in the best-available tier - * (Reds/Memcache or SQL or array) rather than being hard-coded to SQL. - * - * It basically just calls "CRM_Utils_Cache::create()" for each $group and - * maps the getItem/setItem to get()/set(). - */ -class CRM_Core_BAO_Cache_Psr16 { - - /** - * Original BAO behavior did not do expiration. PSR-16 providers have - * diverse defaults. To provide some consistency, we'll pick a long(ish) - * TTL for everything that goes through the adapter. - */ - const TTL = 86400; - - /** - * @param string $group - * @return CRM_Utils_Cache_Interface - */ - protected static function getGroup($group) { - if (!isset(Civi::$statics[__CLASS__][$group])) { - if (!in_array($group, self::getLegacyGroups())) { - Civi::log() - ->warning('Unrecognized BAO cache group ({group}). This should work generally, but data may not be flushed in some edge-cases. Consider migrating explicitly to PSR-16.', [ - 'group' => $group, - ]); - } - - $cache = CRM_Utils_Cache::create([ - 'name' => "bao_$group", - 'type' => ['*memory*', 'SqlGroup', 'ArrayCache'], - // We're replacing CRM_Core_BAO_Cache, which traditionally used a front-cache - // that was not aware of TTLs. So it seems more consistent/performant to - // use 'fast' here. - 'withArray' => 'fast', - ]); - Civi::$statics[__CLASS__][$group] = $cache; - } - return Civi::$statics[__CLASS__][$group]; - } - - /** - * Retrieve an item from the DB cache. - * - * @param string $group - * (required) The group name of the item. - * @param string $path - * (required) The path under which this item is stored. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - * - * @return object - * The data if present in cache, else null - */ - public static function getItem($group, $path, $componentID = NULL) { - // TODO: Generate a general deprecation notice. - if ($componentID) { - Civi::log() - ->warning('getItem({group},{path},...) uses unsupported componentID. Consider migrating explicitly to PSR-16.', [ - 'group' => $group, - 'path' => $path, - ]); - } - return self::getGroup($group)->get(CRM_Utils_Cache::cleanKey($path)); - } - - /** - * Retrieve all items in a group. - * - * @param string $group - * (required) The group name of the item. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - * - * @throws CRM_Core_Exception - */ - public static function &getItems($group, $componentID = NULL) { - // Based on grepping universe, this function is not currently used. - // Moreover, it's hard to implement in PSR-16. (We'd have to extend the - // interface.) Let's wait and see if anyone actually needs this... - throw new \CRM_Core_Exception('Not implemented: CRM_Core_BAO_Cache_Psr16::getItems'); - } - - /** - * Store an item in the DB cache. - * - * @param object $data - * (required) A reference to the data that will be serialized and stored. - * @param string $group - * (required) The group name of the item. - * @param string $path - * (required) The path under which this item is stored. - * @param int $componentID - * The optional component ID (so componenets can share the same name space). - */ - public static function setItem(&$data, $group, $path, $componentID = NULL) { - // TODO: Generate a general deprecation notice. - - if ($componentID) { - Civi::log() - ->warning('setItem({group},{path},...) uses unsupported componentID. Consider migrating explicitly to PSR-16.', [ - 'group' => $group, - 'path' => $path, - ]); - } - self::getGroup($group) - ->set(CRM_Utils_Cache::cleanKey($path), $data, self::TTL); - } - - /** - * Delete all the cache elements that belong to a group OR delete the entire cache if group is not specified. - * - * @param string $group - * The group name of the entries to be deleted. - * @param string $path - * Path of the item that needs to be deleted. - */ - public static function deleteGroup($group = NULL, $path = NULL) { - // FIXME: Generate a general deprecation notice. - - if ($path) { - self::getGroup($group)->delete(CRM_Utils_Cache::cleanKey($path)); - } - else { - self::getGroup($group)->clear(); - } - } - - /** - * Cleanup any caches that we've mapped. - * - * Traditional SQL-backed caches are cleared as a matter of course during a - * system flush (by way of "TRUNCATE TABLE civicrm_cache"). This provides - * a spot where the adapter can - */ - public static function clearDBCache() { - foreach (self::getLegacyGroups() as $groupName) { - $group = self::getGroup($groupName); - $group->clear(); - } - } - - /** - * Get a list of known cache-groups - * - * @return array - */ - public static function getLegacyGroups() { - $groups = [ - // Universe - - // biz.jmaconsulting.lineitemedit - 'lineitem-editor', - - // civihr/uk.co.compucorp.civicrm.hrcore - 'HRCore_Info', - - ]; - // Handle Legacy Multisite caching group. - $extensions = CRM_Extension_System::singleton()->getManager(); - $multisiteExtensionStatus = $extensions->getStatus('org.civicrm.multisite'); - if ($multisiteExtensionStatus == $extensions::STATUS_INSTALLED) { - $extension_version = civicrm_api3('Extension', 'get', ['key' => 'org.civicrm.multisite'])['values'][0]['version']; - if (version_compare($extension_version, '2.7', '<')) { - Civi::log()->warning( - 'CRM_Core_BAO_Cache_PSR is deprecated for multisite extension, you should upgrade to the latest version to avoid this warning, this code will be removed at the end of 2019', - ['civi.tag' => 'deprecated'] - ); - $groups[] = 'descendant groups for an org'; - } - } - $entitySettingExtensionStatus = $extensions->getStatus('nz.co.fuzion.entitysetting'); - if ($multisiteExtensionStatus == $extensions::STATUS_INSTALLED) { - $extension_version = civicrm_api3('Extension', 'get', ['key' => 'nz.co.fuzion.entitysetting'])['values'][0]['version']; - if (version_compare($extension_version, '1.3', '<')) { - Civi::log()->warning( - 'CRM_Core_BAO_Cache_PSR is deprecated for entity setting extension, you should upgrade to the latest version to avoid this warning, this code will be removed at the end of 2019', - ['civi.tag' => 'deprecated'] - ); - $groups[] = 'CiviCRM setting Spec'; - } - } - $atomFeedsSettingExtensionStatus = $extensions->getStatus('be.chiro.civi.atomfeeds'); - if ($atomFeedsSettingExtensionStatus == $extensions::STATUS_INSTALLED) { - $extension_version = civicrm_api3('Extension', 'get', ['key' => 'be.chiro.civi.atomfeeds'])['values'][0]['version']; - if (version_compare($extension_version, '0.1-alpha2', '<')) { - Civi::log()->warning( - 'CRM_Core_BAO_Cache_PSR is deprecated for Atomfeeds extension, you should upgrade to the latest version to avoid this warning, this code will be removed at the end of 2019', - ['civi.tag' => 'deprecated'] - ); - $groups[] = 'dashboard'; - } - } - return $groups; - } - -} diff --git a/civicrm/CRM/Core/BAO/ConfigSetting.php b/civicrm/CRM/Core/BAO/ConfigSetting.php index c462bae664..45e0378974 100644 --- a/civicrm/CRM/Core/BAO/ConfigSetting.php +++ b/civicrm/CRM/Core/BAO/ConfigSetting.php @@ -119,105 +119,120 @@ class CRM_Core_BAO_ConfigSetting { } /** - * Evaluate locale preferences and activate a chosen locale by - * updating session+global variables. + * Activate a chosen locale. + * + * The locale is set by updating the session and global variables. + * + * When there is a choice of permitted languages (set on the "Administer" -> + * "Localisation" -> "Languages, Currency, Locations" screen) the locale to + * be applied can come from a variety of sources. The list below is the order + * of priority for deciding which of the sources "wins": + * + * - The request - when the "lcMessages" query variable is present in the URL. + * - The session - when the "lcMessages" session variable has been set. + * - Inherited from the CMS - when the "inheritLocale" setting is set. + * - CiviCRM settings - the fallback when none of the above set the locale. + * + * Single-language installs skip this and always set the default locale. * * @param \Civi\Core\SettingsBag $settings * @param string $activatedLocales * Imploded list of locales which are supported in the DB. */ public static function applyLocale($settings, $activatedLocales) { - // are we in a multi-language setup? - $multiLang = (bool) $activatedLocales; - // set the current language - $chosenLocale = NULL; + // Declare access to locale globals. + global $dbLocale, $tsLocale; + // Grab session reference. $session = CRM_Core_Session::singleton(); - $permittedLanguages = CRM_Core_I18n::uiLanguages(TRUE); + // Set flag for multi-language setup. + $multiLang = (bool) $activatedLocales; + + // Initialise the default and chosen locales. + $defaultLocale = $settings->get('lcMessages'); + $chosenLocale = NULL; - // The locale to be used can come from various places: - // - the request (url) - // - the session - // - civicrm_uf_match - // - inherited from the CMS - // Only look at this if there is actually a choice of permitted languages + // When there is a choice of permitted languages. + $permittedLanguages = CRM_Core_I18n::uiLanguages(TRUE); if (count($permittedLanguages) >= 2) { + + // Is the "lcMessages" query variable present in the URL? $requestLocale = CRM_Utils_Request::retrieve('lcMessages', 'String'); if (in_array($requestLocale, $permittedLanguages)) { $chosenLocale = $requestLocale; - - //CRM-8559, cache navigation do not respect locale if it is changed, so reseting cache. - // Ed: This doesn't sound good. - // Civi::cache('navigation')->flush(); - } - else { - $requestLocale = NULL; } - if (!$requestLocale) { + // Check the session if the chosen locale hasn't been set yet. + if (empty($chosenLocale)) { $sessionLocale = $session->get('lcMessages'); if (in_array($sessionLocale, $permittedLanguages)) { $chosenLocale = $sessionLocale; } - else { - $sessionLocale = NULL; - } } - if ($requestLocale) { - $ufm = new CRM_Core_DAO_UFMatch(); - $ufm->contact_id = $session->get('userID'); - if ($ufm->find(TRUE)) { - $ufm->language = $chosenLocale; - $ufm->save(); + /* + * Maybe inherit the language from the CMS. + * + * If the language is specified via "lcMessages" we skip this, since the + * intention of the URL query var is to override all other sources. + */ + if ($settings->get('inheritLocale') && empty($chosenLocale)) { + + /* + * FIXME: On multi-language installs, CRM_Utils_System::getUFLocale() in + * many cases returns nothing if $dbLocale is not set, so set it to the + * default - even if it's overridden later. + */ + $dbLocale = $multiLang && $defaultLocale ? "_{$defaultLocale}" : ''; + + // Retrieve locale as reported by CMS. + $cmsLocale = CRM_Utils_System::getUFLocale(); + if (in_array($cmsLocale, $permittedLanguages)) { + $chosenLocale = $cmsLocale; } - $session->set('lcMessages', $chosenLocale); - } - if (!$chosenLocale and $session->get('userID')) { - $ufm = new CRM_Core_DAO_UFMatch(); - $ufm->contact_id = $session->get('userID'); - if ($ufm->find(TRUE) && - in_array($ufm->language, $permittedLanguages) - ) { - $chosenLocale = $ufm->language; + // Clear chosen locale if not activated in multi-language CiviCRM. + if ($activatedLocales && !in_array($chosenLocale, explode(CRM_Core_DAO::VALUE_SEPARATOR, $activatedLocales))) { + $chosenLocale = NULL; } - $session->set('lcMessages', $chosenLocale); + } - } - global $dbLocale; - - // try to inherit the language from the hosting CMS - // If the language is specified in the session (ie. via lcMessages) we still allow it to be overridden. - if ($settings->get('inheritLocale') && empty($sessionLocale)) { - // FIXME: On multilanguage installs, CRM_Utils_System::getUFLocale() in many cases returns nothing if $dbLocale is not set - $lcMessages = $settings->get('lcMessages'); - $dbLocale = $multiLang && $lcMessages ? "_{$lcMessages}" : ''; - $chosenLocale = CRM_Utils_System::getUFLocale(); - if ($activatedLocales and !in_array($chosenLocale, explode(CRM_Core_DAO::VALUE_SEPARATOR, $activatedLocales))) { - $chosenLocale = NULL; + + // Assign the system default if the chosen locale hasn't been set. + if (empty($chosenLocale)) { + $chosenLocale = $defaultLocale; } + + // Always assign the chosen locale to the session. + $session->set('lcMessages', $chosenLocale); + } + else { + + // CRM-11993 - Use default when it's a single-language install. + $chosenLocale = $defaultLocale; - if (empty($chosenLocale)) { - //CRM-11993 - if a single-lang site, use default - $chosenLocale = $settings->get('lcMessages'); } - // set suffix for table names - use views if more than one language + /* + * Set suffix for table names in multi-language installs. + * Use views if more than one language. + */ $dbLocale = $multiLang && $chosenLocale ? "_{$chosenLocale}" : ''; - // FIXME: an ugly hack to fix CRM-4041 - global $tsLocale; + // FIXME: an ugly hack to fix CRM-4041. $tsLocale = $chosenLocale; - // FIXME: as bad aplace as any to fix CRM-5428 - // (to be moved to a sane location along with the above) + /* + * FIXME: as bad a place as any to fix CRM-5428. + * (to be moved to a sane location along with the above) + */ if (function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); } + } /** diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php index 9278a9755e..66871a7d5d 100644 --- a/civicrm/CRM/Core/BAO/CustomField.php +++ b/civicrm/CRM/Core/BAO/CustomField.php @@ -822,12 +822,13 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { // Add and/or option for fields that store multiple values if ($search && self::isSerialized($field)) { - - $operators = [ - $qf->createElement('radio', NULL, '', ts('Any'), 'or', ['title' => ts('Results may contain any of the selected options')]), - $qf->createElement('radio', NULL, '', ts('All'), 'and', ['title' => ts('Results must have all of the selected options')]), - ]; - $qf->addGroup($operators, $elementName . '_operator'); + $qf->addRadio($elementName . '_operator', '', [ + 'or' => ts('Any'), + 'and' => ts('All'), + ], [], NULL, FALSE, [ + 'or' => ['title' => ts('Results may contain any of the selected options')], + 'and' => ['title' => ts('Results must have all of the selected options')], + ]); $qf->setDefaults([$elementName . '_operator' => 'or']); } } @@ -1814,9 +1815,9 @@ WHERE id IN ( %1, %2 ) $add->custom_group_id = $newGroup->id; self::createField($add, 'add'); - $sql = "INSERT INTO {$newGroup->table_name} (entity_id, {$field->column_name}) - SELECT entity_id, {$field->column_name} FROM {$oldGroup->table_name} - ON DUPLICATE KEY UPDATE {$field->column_name} = {$oldGroup->table_name}.{$field->column_name} + $sql = "INSERT INTO {$newGroup->table_name} (entity_id, `{$field->column_name}`) + SELECT entity_id, `{$field->column_name}` FROM {$oldGroup->table_name} + ON DUPLICATE KEY UPDATE `{$field->column_name}` = {$oldGroup->table_name}.`{$field->column_name}` "; CRM_Core_DAO::executeQuery($sql); @@ -2066,10 +2067,10 @@ WHERE id IN ( %1, %2 ) } if (in_array($field['data_type'], $fieldTypesNotHandledInMergeAttempt) && !$isMultiple) { CRM_Core_DAO::executeQuery( - "INSERT INTO {$field['custom_group_id.table_name']} (entity_id, {$field['column_name']}) + "INSERT INTO {$field['custom_group_id.table_name']} (entity_id, `{$field['column_name']}`) VALUES ($newContactID, {$oldContact['custom_' . $field['id']]}) ON DUPLICATE KEY UPDATE - {$field['column_name']} = {$oldContact['custom_' . $field['id']]} + `{$field['column_name']}` = {$oldContact['custom_' . $field['id']]} "); } } diff --git a/civicrm/CRM/Core/BAO/CustomValue.php b/civicrm/CRM/Core/BAO/CustomValue.php index 3a64cdb29d..555077b042 100644 --- a/civicrm/CRM/Core/BAO/CustomValue.php +++ b/civicrm/CRM/Core/BAO/CustomValue.php @@ -175,6 +175,9 @@ class CRM_Core_BAO_CustomValue extends CRM_Core_DAO { ) { $formValues[$key] = ['LIKE' => $formValues[$key]]; } + elseif ($htmlType == 'Autocomplete-Select' && !empty($formValues[$key]) && is_string($formValues[$key]) && (strpos($formValues[$key], ',') != FALSE)) { + $formValues[$key] = ['IN' => explode(',', $formValues[$key])]; + } } } diff --git a/civicrm/CRM/Core/BAO/CustomValueTable.php b/civicrm/CRM/Core/BAO/CustomValueTable.php index 14fe2848f6..8bfc4fb8ad 100644 --- a/civicrm/CRM/Core/BAO/CustomValueTable.php +++ b/civicrm/CRM/Core/BAO/CustomValueTable.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_CustomValueTable { @@ -238,7 +236,7 @@ class CRM_Core_BAO_CustomValueTable { if (!empty($set)) { $setClause = []; foreach ($set as $n => $v) { - $setClause[] = "$n = $v"; + $setClause[] = "`$n` = $v"; } $setClause = implode(',', $setClause); if (!$where) { diff --git a/civicrm/CRM/Core/BAO/Discount.php b/civicrm/CRM/Core/BAO/Discount.php index 812747eb42..fee698c05d 100644 --- a/civicrm/CRM/Core/BAO/Discount.php +++ b/civicrm/CRM/Core/BAO/Discount.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_Discount extends CRM_Core_DAO_Discount { diff --git a/civicrm/CRM/Core/BAO/Domain.php b/civicrm/CRM/Core/BAO/Domain.php index 14e885a6e2..d65de0c187 100644 --- a/civicrm/CRM/Core/BAO/Domain.php +++ b/civicrm/CRM/Core/BAO/Domain.php @@ -20,18 +20,22 @@ */ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { - /** - * Cache for the current domain object. - * @var object - */ - public static $_domain = NULL; - /** * Cache for a domain's location array * @var array */ private $_location = NULL; + /** + * Flushes the cache set by getDomain. + * + * @see CRM_Core_BAO_Domain::getDomain() + * @param CRM_Core_DAO_Domain $domain + */ + public static function onPostSave($domain) { + Civi::$statics[__CLASS__]['current'] = NULL; + } + /** * Fetch object based on array of properties. * @@ -47,21 +51,20 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { } /** - * Get the domain BAO. - * - * @param bool $reset + * Get the current domain. * * @return \CRM_Core_BAO_Domain * @throws \CRM_Core_Exception */ - public static function getDomain($reset = NULL) { - static $domain = NULL; - if (!$domain || $reset) { + public static function getDomain() { + $domain = Civi::$statics[__CLASS__]['current'] ?? NULL; + if (!$domain) { $domain = new CRM_Core_BAO_Domain(); $domain->id = CRM_Core_Config::domainID(); if (!$domain->find(TRUE)) { throw new CRM_Core_Exception('No domain in DB'); } + Civi::$statics[__CLASS__]['current'] = $domain; } return $domain; } @@ -69,17 +72,16 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { /** * @param bool $skipUsingCache * - * @return null|string + * @return string * * @throws \CRM_Core_Exception */ public static function version($skipUsingCache = FALSE) { - return CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', - CRM_Core_Config::domainID(), - 'version', - 'id', - $skipUsingCache - ); + if ($skipUsingCache) { + Civi::$statics[__CLASS__]['current'] = NULL; + } + + return self::getDomain()->version; } /** @@ -90,7 +92,7 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { * @throws \CRM_Core_Exception */ public static function isDBUpdateRequired() { - $dbVersion = CRM_Core_BAO_Domain::version(); + $dbVersion = self::version(); $codeVersion = CRM_Utils_System::version(); return version_compare($dbVersion, $codeVersion) < 0; } @@ -108,16 +110,12 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { /** * Get the location values of a domain. * - * @return array - * Location::getValues - * - * @throws \CRM_Core_Exception + * @return CRM_Core_BAO_Location[]|NULL */ - public function &getLocationValues() { + public function getLocationValues() { if ($this->_location == NULL) { - $domain = self::getDomain(NULL); $params = [ - 'contact_id' => $domain->contact_id, + 'contact_id' => $this->contact_id, ]; $this->_location = CRM_Core_BAO_Location::getValues($params, TRUE); @@ -242,9 +240,7 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { } elseif ($multisite) { // create a group with that of domain name - $title = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', - CRM_Core_Config::domainID(), 'name' - ); + $title = self::getDomain()->name; $groupID = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $title, 'id', 'title', TRUE ); @@ -328,7 +324,7 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { return [$userName, $userEmail]; } - $userID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $userID = CRM_Core_Session::getLoggedInContactID(); if (!empty($userID)) { list($userName, $userEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($userID); } diff --git a/civicrm/CRM/Core/BAO/Email.php b/civicrm/CRM/Core/BAO/Email.php index 3ec6dea97f..0dd1bca05a 100644 --- a/civicrm/CRM/Core/BAO/Email.php +++ b/civicrm/CRM/Core/BAO/Email.php @@ -305,7 +305,7 @@ AND reset_date IS NULL $contactFromEmails = []; // add logged in user's active email ids - $contactID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $contactID = CRM_Core_Session::getLoggedInContactID(); if ($contactID) { $contactEmails = self::allEmails($contactID); $fromDisplayName = CRM_Core_Session::singleton()->getLoggedInContactDisplayName(); diff --git a/civicrm/CRM/Core/BAO/FinancialTrxn.php b/civicrm/CRM/Core/BAO/FinancialTrxn.php index e4aeae7bd2..0e1499e208 100644 --- a/civicrm/CRM/Core/BAO/FinancialTrxn.php +++ b/civicrm/CRM/Core/BAO/FinancialTrxn.php @@ -415,7 +415,7 @@ WHERE ceft.entity_id = %1"; $fItemParams = [ 'financial_account_id' => $financialAccount, - 'contact_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', CRM_Core_Config::domainID(), 'contact_id'), + 'contact_id' => CRM_Core_BAO_Domain::getDomain()->contact_id, 'created_date' => date('YmdHis'), 'transaction_date' => $params['trxnParams']['trxn_date'], 'amount' => $amount, diff --git a/civicrm/CRM/Core/BAO/IM.php b/civicrm/CRM/Core/BAO/IM.php index 50cbc5e516..3a950122dd 100644 --- a/civicrm/CRM/Core/BAO/IM.php +++ b/civicrm/CRM/Core/BAO/IM.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/BAO/Job.php b/civicrm/CRM/Core/BAO/Job.php index c4214e60b5..e78458fd2c 100644 --- a/civicrm/CRM/Core/BAO/Job.php +++ b/civicrm/CRM/Core/BAO/Job.php @@ -109,7 +109,7 @@ class CRM_Core_BAO_Job extends CRM_Core_DAO_Job { /** * Trim job table on a regular basis to keep it at a good size. * - * CRM-10513 + * @see https://issues.civicrm.org/jira/browse/CRM-10513 * * @param int $maxEntriesToKeep * @param int $minDaysToKeep diff --git a/civicrm/CRM/Core/BAO/Location.php b/civicrm/CRM/Core/BAO/Location.php index e2d393976c..6af1d85bc8 100644 --- a/civicrm/CRM/Core/BAO/Location.php +++ b/civicrm/CRM/Core/BAO/Location.php @@ -226,10 +226,9 @@ WHERE e.id = %1"; * @param array $entityBlock * @param bool $microformat * - * @return array - * array of objects(CRM_Core_BAO_Location) + * @return CRM_Core_BAO_Location[]|NULL */ - public static function &getValues($entityBlock, $microformat = FALSE) { + public static function getValues($entityBlock, $microformat = FALSE) { if (empty($entityBlock)) { return NULL; } diff --git a/civicrm/CRM/Core/BAO/LocationType.php b/civicrm/CRM/Core/BAO/LocationType.php index 54cdf07352..ae3b83d068 100644 --- a/civicrm/CRM/Core/BAO/LocationType.php +++ b/civicrm/CRM/Core/BAO/LocationType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_LocationType extends CRM_Core_DAO_LocationType { diff --git a/civicrm/CRM/Core/BAO/MailSettings.php b/civicrm/CRM/Core/BAO/MailSettings.php index 173dd3457d..e7ea7b196b 100644 --- a/civicrm/CRM/Core/BAO/MailSettings.php +++ b/civicrm/CRM/Core/BAO/MailSettings.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_MailSettings extends CRM_Core_DAO_MailSettings { diff --git a/civicrm/CRM/Core/BAO/Mapping.php b/civicrm/CRM/Core/BAO/Mapping.php index 309972bb6a..e2e0e7057a 100644 --- a/civicrm/CRM/Core/BAO/Mapping.php +++ b/civicrm/CRM/Core/BAO/Mapping.php @@ -871,6 +871,7 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping { * @return array */ protected static function loadSavedMapping($mappingLocation, int $x, int $i, $mappingName, $mapperFields, $mappingContactType, $mappingRelation, array $specialFields, $mappingPhoneType, array $defaults, array $noneArray, $mappingImProvider, $mappingOperator, $mappingValue) { + $jsSet = FALSE; $locationId = $mappingLocation[$x][$i] ?? 0; if (isset($mappingName[$x][$i])) { if (is_array($mapperFields[$mappingContactType[$x][$i]])) { diff --git a/civicrm/CRM/Core/BAO/MessageTemplate.php b/civicrm/CRM/Core/BAO/MessageTemplate.php index 3348da19a5..fbbb96709e 100644 --- a/civicrm/CRM/Core/BAO/MessageTemplate.php +++ b/civicrm/CRM/Core/BAO/MessageTemplate.php @@ -416,8 +416,7 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate { throw new CRM_Core_Exception(ts("Message template's option value or ID missing.")); } - $apiCall = MessageTemplate::get() - ->setCheckPermissions(FALSE) + $apiCall = MessageTemplate::get(FALSE) ->addSelect('msg_subject', 'msg_text', 'msg_html', 'pdf_format_id', 'id') ->addWhere('is_default', '=', 1); diff --git a/civicrm/CRM/Core/BAO/Note.php b/civicrm/CRM/Core/BAO/Note.php index e2ed3102e7..c93215d235 100644 --- a/civicrm/CRM/Core/BAO/Note.php +++ b/civicrm/CRM/Core/BAO/Note.php @@ -169,7 +169,7 @@ class CRM_Core_BAO_Note extends CRM_Core_DAO_Note { $noteActions = FALSE; - $loggedInContactID = CRM_Core_Session::singleton()->getLoggedInContactID(); + $loggedInContactID = CRM_Core_Session::getLoggedInContactID(); if ($loggedInContactID) { if ($loggedInContactID == $note->entity_id) { $noteActions = TRUE; diff --git a/civicrm/CRM/Core/BAO/OpenID.php b/civicrm/CRM/Core/BAO/OpenID.php index cb67184647..34326a7562 100644 --- a/civicrm/CRM/Core/BAO/OpenID.php +++ b/civicrm/CRM/Core/BAO/OpenID.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/BAO/OptionGroup.php b/civicrm/CRM/Core/BAO/OptionGroup.php index 41b8b5b525..ff972d9842 100644 --- a/civicrm/CRM/Core/BAO/OptionGroup.php +++ b/civicrm/CRM/Core/BAO/OptionGroup.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_OptionGroup extends CRM_Core_DAO_OptionGroup { diff --git a/civicrm/CRM/Core/BAO/Query.php b/civicrm/CRM/Core/BAO/Query.php index 4d608d5053..173273bc5b 100644 --- a/civicrm/CRM/Core/BAO/Query.php +++ b/civicrm/CRM/Core/BAO/Query.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_BAO_Query { diff --git a/civicrm/CRM/Core/BAO/SchemaHandler.php b/civicrm/CRM/Core/BAO/SchemaHandler.php index b9f3bad91f..5523858d6a 100644 --- a/civicrm/CRM/Core/BAO/SchemaHandler.php +++ b/civicrm/CRM/Core/BAO/SchemaHandler.php @@ -335,10 +335,8 @@ ALTER TABLE {$tableName} else { CRM_Core_DAO::executeQuery($sql, [], TRUE, NULL, FALSE, FALSE); } - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { CRM_Core_I18n_Schema::rebuildMultilingualSchema($locales, NULL, $isUpgradeMode); } } @@ -385,9 +383,7 @@ ADD UNIQUE INDEX `unique_entity_id` ( `entity_id` )"; */ public static function createIndexes($tables, $createIndexPrefix = 'index', $substrLengths = []) { $queries = []; - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); // if we're multilingual, cache the information on internationalised fields static $columns = NULL; @@ -883,6 +879,23 @@ MODIFY {$columnName} varchar( $length ) return CRM_Core_DAO::singleValueQuery('SELECT @@collation_database'); } + /** + * Get the collation actually being used by the tables in the database. + * + * The db collation may not match the collation used by the tables, get what is + * set on the tables (represented by civicrm_contact). + * + * @return string + */ + public static function getInUseCollation() { + if (!isset(\Civi::$statics[__CLASS__][__FUNCTION__])) { + $dao = CRM_Core_DAO::executeQuery('SHOW TABLE STATUS LIKE \'civicrm_contact\''); + $dao->fetch(); + \Civi::$statics[__CLASS__][__FUNCTION__] = $dao->Collation; + } + return \Civi::$statics[__CLASS__][__FUNCTION__]; + } + /** * Get the database collation. * diff --git a/civicrm/CRM/Core/BAO/StatusPreference.php b/civicrm/CRM/Core/BAO/StatusPreference.php index d4e182eadc..044a538d04 100644 --- a/civicrm/CRM/Core/BAO/StatusPreference.php +++ b/civicrm/CRM/Core/BAO/StatusPreference.php @@ -10,11 +10,8 @@ */ /** - * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -27,16 +24,15 @@ class CRM_Core_BAO_StatusPreference extends CRM_Core_DAO_StatusPreference { * * @param array $params * - * @return array + * @return CRM_Core_DAO_StatusPreference * @throws CRM_Core_Exception */ public static function create($params) { - $statusPreference = new CRM_Core_BAO_StatusPreference(); + $statusPreference = new CRM_Core_DAO_StatusPreference(); // Default severity level to ignore is 0 (DEBUG). - if (!isset($params['ignore_severity'])) { - $params['ignore_severity'] = 0; - } + $params['ignore_severity'] = $params['ignore_severity'] ?? 0; + // Severity can be either text ('critical') or an integer <= 7. // It's a magic number, but based on PSR-3 standards. if (!CRM_Utils_Rule::integer($params['ignore_severity'])) { @@ -50,32 +46,25 @@ class CRM_Core_BAO_StatusPreference extends CRM_Core_DAO_StatusPreference { throw new CRM_Core_Exception(ts('Invalid string passed as severity level.')); } - // Check if this StatusPreference already exists. + // Set default domain when creating (or updating by name) + if (empty($params['id']) && empty($params['domain_id'])) { + $params['domain_id'] = CRM_Core_Config::domainID(); + } + + // Enforce unique status pref names. Update if a duplicate name is found in the same domain. if (empty($params['id']) && !empty($params['name'])) { - $statusPreference->domain_id = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID()); + $statusPreference->domain_id = $params['domain_id']; $statusPreference->name = $params['name']; - $statusPreference->find(TRUE); } - $statusPreference->copyValues($params); - - $edit = (bool) $statusPreference->id; - if ($edit) { - CRM_Utils_Hook::pre('edit', 'StatusPreference', $statusPreference->id, $statusPreference); - } - else { - CRM_Utils_Hook::pre('create', 'StatusPreference', NULL, $statusPreference); - } + $op = $statusPreference->id ? 'edit' : 'create'; + CRM_Utils_Hook::pre($op, 'StatusPreference', $statusPreference->id, $params); + $statusPreference->copyValues($params); $statusPreference->save(); - if ($edit) { - CRM_Utils_Hook::post('edit', 'StatusPreference', $statusPreference->id, $statusPreference); - } - else { - CRM_Utils_Hook::post('create', 'StatusPreference', NULL, $statusPreference); - } + CRM_Utils_Hook::post($op, 'StatusPreference', $statusPreference->id, $statusPreference); return $statusPreference; } diff --git a/civicrm/CRM/Core/BAO/UFGroup.php b/civicrm/CRM/Core/BAO/UFGroup.php index 5841ab0d72..34490de330 100644 --- a/civicrm/CRM/Core/BAO/UFGroup.php +++ b/civicrm/CRM/Core/BAO/UFGroup.php @@ -1663,12 +1663,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) * array of ufgroups for a module */ public static function getModuleUFGroup($moduleName = NULL, $count = 0, $skipPermission = TRUE, $op = CRM_Core_Permission::VIEW, $returnFields = NULL) { - $selectFields = ['id', 'title', 'created_id', 'is_active', 'is_reserved', 'group_type']; - - if (CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_uf_group', 'description')) { - // CRM-13555, since description field was added later (4.4), and to avoid any problems with upgrade - $selectFields[] = 'description'; - } + $selectFields = ['id', 'title', 'created_id', 'is_active', 'is_reserved', 'group_type', 'description']; if (CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_uf_group', 'frontend_title')) { $selectFields[] = 'frontend_title'; @@ -1945,16 +1940,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) elseif (in_array($fieldName, ['gender_id', 'communication_style_id'])) { $options = []; $pseudoValues = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', $fieldName); - foreach ($pseudoValues as $key => $var) { - $options[$key] = $form->createElement('radio', NULL, ts($title), $var, $key); - } - $group = $form->addGroup($options, $name, $title); - if ($required) { - $form->addRule($name, ts('%1 is a required field.', [1 => $title]), 'required'); - } - else { - $group->setAttribute('allowClear', TRUE); - } + $form->addRadio($name, ts('%1', [1 => $title]), $pseudoValues, ['allowClear' => !$required], NULL, $required); } elseif ($fieldName === 'prefix_id' || $fieldName === 'suffix_id') { $form->addSelect($name, [ @@ -2340,6 +2326,14 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) } elseif (CRM_Core_BAO_CustomField::getKeyID($name)) { $defaults[$fldName] = self::formatCustomValue($field, $details[$name]); + if (!$singleProfile && $field['html_type'] === 'CheckBox') { + // For batch update profile there needs to be a key lik + // $defaults['field[166]['custom_8'][2]'] => 1 where + // 166 is the conntact id, 8 is the field id and 2 is the checkbox option. + foreach ($defaults[$fldName] as $itemKey => $itemValue) { + $defaults[$fldName . '[' . $itemKey . ']'] = $itemValue; + } + } } else { $defaults[$fldName] = $details[$name]; @@ -3599,6 +3593,7 @@ SELECT group_id if (CRM_Core_BAO_CustomField::isSerialized($field)) { $value = CRM_Utils_Array::explodePadded($value); + // This may not be required now. if ($field['html_type'] === 'CheckBox') { $checkboxes = []; foreach (array_filter($value) as $item) { diff --git a/civicrm/CRM/Core/BAO/UFJoin.php b/civicrm/CRM/Core/BAO/UFJoin.php index ebc21f037d..b3514d9f98 100644 --- a/civicrm/CRM/Core/BAO/UFJoin.php +++ b/civicrm/CRM/Core/BAO/UFJoin.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/BAO/UFMatch.php b/civicrm/CRM/Core/BAO/UFMatch.php index b7dd9b2c80..9e61b990b3 100644 --- a/civicrm/CRM/Core/BAO/UFMatch.php +++ b/civicrm/CRM/Core/BAO/UFMatch.php @@ -93,7 +93,6 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { $userIds = self::getUFValues(); $session->set('ufID', CRM_Utils_Array::value('uf_id', $userIds, '')); $session->set('userID', CRM_Utils_Array::value('contact_id', $userIds, '')); - $session->set('ufUniqID', CRM_Utils_Array::value('uf_name', $userIds, '')); } } @@ -110,7 +109,6 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { //make sure we have session w/ consistent ids. $ufID = $ufmatch->uf_id; $userID = $ufmatch->contact_id; - $ufUniqID = ''; if ($isUserLoggedIn) { $loggedInUserUfID = CRM_Utils_System::getLoggedInUfID(); //are we processing logged in user. @@ -118,14 +116,12 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { $userIds = self::getUFValues($loggedInUserUfID); $ufID = CRM_Utils_Array::value('uf_id', $userIds, ''); $userID = CRM_Utils_Array::value('contact_id', $userIds, ''); - $ufUniqID = CRM_Utils_Array::value('uf_name', $userIds, ''); } } //set user ids to session. $session->set('ufID', $ufID); $session->set('userID', $userID); - $session->set('ufUniqID', $ufUniqID); // add current contact to recently viewed if ($ufmatch->contact_id) { @@ -171,12 +167,6 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { */ public static function &synchronizeUFMatch(&$user, $userKey, $uniqId, $uf, $status = NULL, $ctype = NULL, $isLogin = FALSE) { $config = CRM_Core_Config::singleton(); - - if (!CRM_Utils_Rule::email($uniqId)) { - $retVal = $status ? NULL : FALSE; - return $retVal; - } - $newContact = FALSE; // make sure that a contact id exists for this user id @@ -191,6 +181,12 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { if (!empty($_POST) && !$isLogin) { $params = $_POST; $params['email'] = $uniqId; + // dev/core#1858 Ensure that if we have a contactID parameter which is set in the Create user Record contact task form + // That this contacID value is passed through as the contact_id to the get duplicate contacts function. This is necessary because for Drupal 8 this function gets invoked + // Before the civicrm_uf_match record is added where as in D7 it isn't called until the user tries to actually login. + if (!empty($params['contactID'])) { + $params['contact_id'] = $params['contactID']; + } $ids = CRM_Contact_BAO_Contact::getDuplicateContacts($params, 'Individual', 'Unsupervised', [], FALSE); diff --git a/civicrm/CRM/Core/BAO/WordReplacement.php b/civicrm/CRM/Core/BAO/WordReplacement.php index ba4f09d7fa..818e0b2ec8 100644 --- a/civicrm/CRM/Core/BAO/WordReplacement.php +++ b/civicrm/CRM/Core/BAO/WordReplacement.php @@ -152,8 +152,6 @@ WHERE domain_id = %1 } } $config = CRM_Core_Config::singleton(); - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); // So. Weird. Some bizarre/probably-broken multi-lingual thing where // data isn't really stored in civicrm_word_replacements. Probably diff --git a/civicrm/CRM/Core/CodeGen/Main.php b/civicrm/CRM/Core/CodeGen/Main.php index 88a31222d6..1b754b959f 100644 --- a/civicrm/CRM/Core/CodeGen/Main.php +++ b/civicrm/CRM/Core/CodeGen/Main.php @@ -132,25 +132,6 @@ Alternatively you can get a version of CiviCRM that matches your PHP version return $tasks; } - /** - * Compute a digest based on the GenCode logic (PHP/tpl). - * - * @return string - */ - public function getSourceDigest() { - if ($this->sourceDigest === NULL) { - $srcDir = CRM_Core_CodeGen_Util_File::findCoreSourceDir(); - $files = CRM_Core_CodeGen_Util_File::findManyFiles([ - ["$srcDir/CRM/Core/CodeGen", '*.php'], - ["$srcDir/xml", "*.php"], - ["$srcDir/xml", "*.tpl"], - ]); - - $this->sourceDigest = CRM_Core_CodeGen_Util_File::digestAll($files); - } - return $this->sourceDigest; - } - /** * @return static */ diff --git a/civicrm/CRM/Core/CodeGen/Specification.php b/civicrm/CRM/Core/CodeGen/Specification.php index 67d057f096..0f4678d74a 100644 --- a/civicrm/CRM/Core/CodeGen/Specification.php +++ b/civicrm/CRM/Core/CodeGen/Specification.php @@ -192,6 +192,7 @@ class CRM_Core_CodeGen_Specification { $sourceFile = "xml/schema/{$base}/{$klass}.xml"; $daoPath = "{$base}/DAO/"; $baoPath = __DIR__ . '/../../../' . str_replace(' ', '', "{$base}/BAO/"); + $useBao = $this->value('useBao', $tableXML, file_exists($baoPath . $klass . '.php')); $pre = str_replace('/', '_', $daoPath); $this->classNames[$name] = $pre . $klass; @@ -213,7 +214,7 @@ class CRM_Core_CodeGen_Specification { 'icon' => $tableXML->icon ?? NULL, 'labelName' => substr($name, 8), 'className' => $this->classNames[$name], - 'bao' => (file_exists($baoPath . $klass . '.php') ? str_replace('DAO', 'BAO', $this->classNames[$name]) : $this->classNames[$name]), + 'bao' => ($useBao ? str_replace('DAO', 'BAO', $this->classNames[$name]) : $this->classNames[$name]), 'entity' => $klass, 'attributes_simple' => trim($database['tableAttributes_simple']), 'attributes_modern' => trim($database['tableAttributes_modern']), diff --git a/civicrm/CRM/Core/CodeGen/Util/File.php b/civicrm/CRM/Core/CodeGen/Util/File.php index 1e77801a70..3fa8b97b56 100644 --- a/civicrm/CRM/Core/CodeGen/Util/File.php +++ b/civicrm/CRM/Core/CodeGen/Util/File.php @@ -45,54 +45,4 @@ class CRM_Core_CodeGen_Util_File { return $newTempDir; } - /** - * Calculate a cumulative digest based on a collection of files. - * - * @param array $files - * List of file names (strings). - * @param callable|string $digest a one-way hash function (string => string) - * - * @return string - */ - public static function digestAll($files, $digest = 'md5') { - $buffer = ''; - foreach ($files as $file) { - $buffer .= $digest(file_get_contents($file)); - } - return $digest($buffer); - } - - /** - * Find the path to the main Civi source tree. - * - * @return string - * @throws RuntimeException - */ - public static function findCoreSourceDir() { - $path = str_replace(DIRECTORY_SEPARATOR, '/', __DIR__); - if (!preg_match(':(.*)/CRM/Core/CodeGen/Util:', $path, $matches)) { - throw new RuntimeException("Failed to determine path of code-gen"); - } - - return $matches[1]; - } - - /** - * Find files in several directories using several filename patterns. - * - * @param array $pairs - * Each item is an array(0 => $searchBaseDir, 1 => $filePattern). - * @return array - * Array of file paths - */ - public static function findManyFiles($pairs) { - $files = []; - foreach ($pairs as $pair) { - list ($dir, $pattern) = $pair; - $files = array_merge($files, CRM_Utils_File::findFiles($dir, $pattern)); - } - sort($files); - return $files; - } - } diff --git a/civicrm/CRM/Core/Config.php b/civicrm/CRM/Core/Config.php index a27d424d6a..1785fa9a93 100644 --- a/civicrm/CRM/Core/Config.php +++ b/civicrm/CRM/Core/Config.php @@ -271,7 +271,7 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge { /** * Do general cleanup of caches, temp directories and temp tables - * CRM-8739 + * @see https://issues.civicrm.org/jira/browse/CRM-8739 * * @param bool $sessionReset */ @@ -349,10 +349,6 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge { CRM_Core_DAO::executeQuery($query); } - if ($adapter = CRM_Utils_Constant::value('CIVICRM_BAO_CACHE_ADAPTER')) { - return $adapter::clearDBCache(); - } - // also delete all the import and export temp tables self::clearTempTables(); } diff --git a/civicrm/CRM/Core/Config/MagicMerge.php b/civicrm/CRM/Core/Config/MagicMerge.php index 88110b6432..6050c22a2d 100644 --- a/civicrm/CRM/Core/Config/MagicMerge.php +++ b/civicrm/CRM/Core/Config/MagicMerge.php @@ -170,7 +170,6 @@ class CRM_Core_Config_MagicMerge { 'userFrameworkUsersTableName' => ['setting'], 'verpSeparator' => ['setting'], 'wkhtmltopdfPath' => ['setting'], - 'wpBasePage' => ['setting'], 'wpLoadPhp' => ['setting'], // "path" properties are managed via Civi::paths and $civicrm_paths @@ -204,6 +203,7 @@ class CRM_Core_Config_MagicMerge { // @todo remove geocodeMethod. As of Feb 2018, $config->geocodeMethod works but gives a deprecation warning. 'geocodeMethod' => ['callback', 'CRM_Utils_Geocode', 'getProviderClass'], 'defaultCurrencySymbol' => ['callback', 'CRM_Core_BAO_Country', 'getDefaultCurrencySymbol'], + 'wpBasePage' => ['callback', 'CRM_Utils_System_WordPress', 'getBasePage'], ]; } diff --git a/civicrm/CRM/Core/Controller/Simple.php b/civicrm/CRM/Core/Controller/Simple.php index 174fb6374c..0c684a7408 100644 --- a/civicrm/CRM/Core/Controller/Simple.php +++ b/civicrm/CRM/Core/Controller/Simple.php @@ -17,7 +17,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ class CRM_Core_Controller_Simple extends CRM_Core_Controller { diff --git a/civicrm/CRM/Core/DAO.php b/civicrm/CRM/Core/DAO.php index 11a990b52d..a1cd6f7498 100644 --- a/civicrm/CRM/Core/DAO.php +++ b/civicrm/CRM/Core/DAO.php @@ -163,6 +163,11 @@ class CRM_Core_DAO extends DB_DataObject { $options = &PEAR::getStaticProperty('DB_DataObject', 'options'); $options['database'] = $dsn; $options['quote_identifiers'] = TRUE; + if (self::isSSLDSN($dsn)) { + // There are two different options arrays. + $other_options = &PEAR::getStaticProperty('DB', 'options'); + $other_options['ssl'] = TRUE; + } if (defined('CIVICRM_DAO_DEBUG')) { self::DebugLevel(CIVICRM_DAO_DEBUG); } @@ -964,6 +969,7 @@ class CRM_Core_DAO extends DB_DataObject { * true if exists, else false */ public static function checkFieldExists($tableName, $columnName, $i18nRewrite = TRUE) { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Core_BAO_SchemaHandler::checkIfFieldExists'); return CRM_Core_BAO_SchemaHandler::checkIfFieldExists($tableName, $columnName, $i18nRewrite); } @@ -3105,4 +3111,21 @@ SELECT contact_id } } + /** + * Does the DSN indicate the connection should use ssl. + * + * @param string $dsn + * + * @return bool + */ + public static function isSSLDSN(string $dsn):bool { + // Note that ssl= below is not an official PEAR::DB option. It doesn't know + // what to do with it. We made it up because it's not required + // to have client-side certificates to use ssl, so here you can specify + // you want that by putting ssl=1 in the DSN string. + // + // Cast to bool in case of error which we interpret as no ssl. + return (bool) preg_match('/[\?&](key|cert|ca|capath|cipher|ssl)=/', $dsn); + } + } diff --git a/civicrm/CRM/Core/DAO/AllCoreTables.data.php b/civicrm/CRM/Core/DAO/AllCoreTables.data.php index cf649fb224..fcf35a9eed 100644 --- a/civicrm/CRM/Core/DAO/AllCoreTables.data.php +++ b/civicrm/CRM/Core/DAO/AllCoreTables.data.php @@ -567,6 +567,11 @@ return [ 'class' => 'CRM_Contact_DAO_Relationship', 'table' => 'civicrm_relationship', ], + 'CRM_Contact_DAO_RelationshipCache' => [ + 'name' => 'RelationshipCache', + 'class' => 'CRM_Contact_DAO_RelationshipCache', + 'table' => 'civicrm_relationship_cache', + ], 'CRM_Mailing_DAO_Mailing' => [ 'name' => 'Mailing', 'class' => 'CRM_Mailing_DAO_Mailing', diff --git a/civicrm/CRM/Core/DAO/AllCoreTables.php b/civicrm/CRM/Core/DAO/AllCoreTables.php index 225f5530c2..5b9ffe5ef6 100644 --- a/civicrm/CRM/Core/DAO/AllCoreTables.php +++ b/civicrm/CRM/Core/DAO/AllCoreTables.php @@ -117,10 +117,8 @@ class CRM_Core_DAO_AllCoreTables { * index definitions after localization */ public static function multilingualize($class, $originalIndices) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); - if (CRM_Utils_System::isNull($locales)) { + $locales = CRM_Core_I18n::getMultilingual(); + if (!$locales) { return $originalIndices; } $classFields = $class::fields(); diff --git a/civicrm/CRM/Core/Error.php b/civicrm/CRM/Core/Error.php index 31f4a90804..04f7e8cd39 100644 --- a/civicrm/CRM/Core/Error.php +++ b/civicrm/CRM/Core/Error.php @@ -358,7 +358,7 @@ class CRM_Core_Error extends PEAR_ErrorStack { if (CRM_Utils_Array::value('snippet', $_REQUEST) === CRM_Core_Smarty::PRINT_JSON) { $out = [ 'status' => 'fatal', - 'content' => '<div class="messages status no-popup"><div class="icon inform-icon"></div>' . ts('Sorry but we are not able to provide this at the moment.') . '</div>', + '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>', ]; if ($config->backtrace && CRM_Core_Permission::check('view debug output')) { $out['backtrace'] = self::parseBacktrace(debug_backtrace()); diff --git a/civicrm/CRM/Core/Exception/ResourceConflictException.php b/civicrm/CRM/Core/Exception/ResourceConflictException.php index 73f40cc77b..7ce5c71dbc 100644 --- a/civicrm/CRM/Core/Exception/ResourceConflictException.php +++ b/civicrm/CRM/Core/Exception/ResourceConflictException.php @@ -1,27 +1,11 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2020 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | 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. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | 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 | +--------------------------------------------------------------------+ */ diff --git a/civicrm/CRM/Core/Form.php b/civicrm/CRM/Core/Form.php index 17b30a9986..98526b5a81 100644 --- a/civicrm/CRM/Core/Form.php +++ b/civicrm/CRM/Core/Form.php @@ -366,6 +366,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $type, $name, $label = '', $attributes = '', $required = FALSE, $extra = NULL ) { + if ($type === 'radio') { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Core_Form::addRadio'); + } // Fudge some extra types that quickform doesn't support $inputType = $type; if ($type == 'wysiwyg' || in_array($type, self::$html5Types)) { @@ -1202,7 +1205,13 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } } } - $options[] = $this->createElement('radio', NULL, NULL, $var, $key, $optAttributes); + // We use a class here to avoid html5 issues with collapsed cutsomfield sets. + $optAttributes['class'] = $optAttributes['class'] ?? ''; + if ($required) { + $optAttributes['class'] .= ' required'; + } + $element = $this->createElement('radio', NULL, NULL, $var, $key, $optAttributes); + $options[] = $element; } $group = $this->addGroup($options, $name, $title, $separator); diff --git a/civicrm/CRM/Core/Form/Date.php b/civicrm/CRM/Core/Form/Date.php index 0b2abcf73a..24ff85f3a3 100644 --- a/civicrm/CRM/Core/Form/Date.php +++ b/civicrm/CRM/Core/Form/Date.php @@ -38,14 +38,14 @@ class CRM_Core_Form_Date { $dateText = ts('yyyy-mm-dd OR yyyymmdd (1998-12-25 OR 19981225) OR (2008-9-1 OR 20080901)'); } - $dateOptions[] = $form->createElement('radio', NULL, NULL, $dateText, self::DATE_yyyy_mm_dd); - - $dateOptions[] = $form->createElement('radio', NULL, NULL, ts('mm/dd/yy OR mm-dd-yy (12/25/98 OR 12-25-98) OR (9/1/08 OR 9-1-08)'), self::DATE_mm_dd_yy); - $dateOptions[] = $form->createElement('radio', NULL, NULL, ts('mm/dd/yyyy OR mm-dd-yyyy (12/25/1998 OR 12-25-1998) OR (9/1/2008 OR 9-1-2008)'), self::DATE_mm_dd_yyyy); - $dateOptions[] = $form->createElement('radio', NULL, NULL, ts('Month dd, yyyy (December 12, 1998)'), self::DATE_Month_dd_yyyy); - $dateOptions[] = $form->createElement('radio', NULL, NULL, ts('dd-mon-yy OR dd/mm/yy (25-Dec-98 OR 25/12/98)'), self::DATE_dd_mon_yy); - $dateOptions[] = $form->createElement('radio', NULL, NULL, ts('dd/mm/yyyy (25/12/1998) OR (1/9/2008)'), self::DATE_dd_mm_yyyy); - $form->addGroup($dateOptions, 'dateFormats', ts('Date Format'), '<br/>'); + $form->addRadio('dateFormats', ts('Date Format'), [ + self::DATE_yyyy_mm_dd => $dateText, + self::DATE_mm_dd_yy => ts('mm/dd/yy OR mm-dd-yy (12/25/98 OR 12-25-98) OR (9/1/08 OR 9-1-08)'), + self::DATE_mm_dd_yyyy => ts('mm/dd/yyyy OR mm-dd-yyyy (12/25/1998 OR 12-25-1998) OR (9/1/2008 OR 9-1-2008)'), + self::DATE_Month_dd_yyyy => ts('Month dd, yyyy (December 12, 1998)'), + self::DATE_dd_mon_yy => ts('dd-mon-yy OR dd/mm/yy (25-Dec-98 OR 25/12/98)'), + self::DATE_dd_mm_yyyy => ts('dd/mm/yyyy (25/12/1998) OR (1/9/2008)'), + ], [], '<br/>'); $form->setDefaults(['dateFormats' => self::DATE_yyyy_mm_dd]); } diff --git a/civicrm/CRM/Core/I18n.php b/civicrm/CRM/Core/I18n.php index ce8175324c..0c560c8723 100644 --- a/civicrm/CRM/Core/I18n.php +++ b/civicrm/CRM/Core/I18n.php @@ -586,12 +586,22 @@ class CRM_Core_I18n { /** * Is the current CiviCRM domain in multilingual mode. * - * @return Bool + * @return bool * True if CiviCRM is in multilingual mode. */ public static function isMultilingual() { - $domainId = CRM_Core_Config::domainID(); - return (bool) CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', $domainId, 'locales'); + $domain = CRM_Core_BAO_Domain::getDomain(); + return (bool) $domain->locales; + } + + /** + * Returns languages if domain is in multilingual mode. + * + * @return array|bool + */ + public static function getMultilingual() { + $domain = CRM_Core_BAO_Domain::getDomain(); + return $domain->locales ? CRM_Core_DAO::unSerializeField($domain->locales, CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED) : FALSE; } /** @@ -600,7 +610,7 @@ class CRM_Core_I18n { * @param $language * Language (for example 'en_US', or 'fr_CA'). * - * @return Bool + * @return bool * True if it is an RTL language. */ public static function isLanguageRTL($language) { diff --git a/civicrm/CRM/Core/I18n/NativeGettext.php b/civicrm/CRM/Core/I18n/NativeGettext.php index a0d1d10601..cefd92f0f5 100644 --- a/civicrm/CRM/Core/I18n/NativeGettext.php +++ b/civicrm/CRM/Core/I18n/NativeGettext.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * Convenience class for PHP-Gettext compatibility. */ class CRM_Core_I18n_NativeGettext { diff --git a/civicrm/CRM/Core/I18n/Schema.php b/civicrm/CRM/Core/I18n/Schema.php index d3e1adb11d..3a6e763d23 100644 --- a/civicrm/CRM/Core/I18n/Schema.php +++ b/civicrm/CRM/Core/I18n/Schema.php @@ -20,13 +20,11 @@ class CRM_Core_I18n_Schema { * Drop all views (for use by CRM_Core_DAO::dropAllTables() mostly). */ public static function dropAllViews() { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if (!$domain->locales) { + $locales = CRM_Core_I18n::getMultilingual(); + if (!$locales) { return; } - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); $tables = CRM_Core_I18n_SchemaStructure::tables(); foreach ($locales as $locale) { @@ -81,6 +79,7 @@ class CRM_Core_I18n_Schema { */ public static function makeSinglelingual($retain) { $domain = new CRM_Core_DAO_Domain(); + $domain->id = CRM_Core_Config::domainID(); $domain->find(TRUE); $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); @@ -130,6 +129,7 @@ class CRM_Core_I18n_Schema { $triggers = [] ) { $domain = new CRM_Core_DAO_Domain(); + $domain->id = CRM_Core_Config::domainID(); $domain->find(TRUE); $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); @@ -207,6 +207,7 @@ class CRM_Core_I18n_Schema { public static function addLocale($locale, $source) { // get the current supported locales $domain = new CRM_Core_DAO_Domain(); + $domain->id = CRM_Core_Config::domainID(); $domain->find(TRUE); $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); @@ -485,13 +486,11 @@ class CRM_Core_I18n_Schema { */ public static function triggerInfo(&$info, $tableName = NULL) { // get the current supported locales - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if (empty($domain->locales)) { + $locales = CRM_Core_I18n::getMultilingual(); + if (!$locales) { return; } - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); $locale = array_pop($locales); // CRM-10027 diff --git a/civicrm/CRM/Core/I18n/SchemaStructure_4_3_1.php b/civicrm/CRM/Core/I18n/SchemaStructure_4_3_1.php index 66fe88fc12..dd3d6dc12a 100644 --- a/civicrm/CRM/Core/I18n/SchemaStructure_4_3_1.php +++ b/civicrm/CRM/Core/I18n/SchemaStructure_4_3_1.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_I18n_SchemaStructure_4_3_1 { diff --git a/civicrm/CRM/Core/JobManager.php b/civicrm/CRM/Core/JobManager.php index d19e786d4a..604d3ee150 100644 --- a/civicrm/CRM/Core/JobManager.php +++ b/civicrm/CRM/Core/JobManager.php @@ -73,6 +73,7 @@ class CRM_Core_JobManager { $statusPref = [ 'name' => 'checkLastCron', 'check_info' => gmdate('U'), + 'prefs' => '', ]; CRM_Core_BAO_StatusPreference::create($statusPref); } diff --git a/civicrm/CRM/Core/Key.php b/civicrm/CRM/Core/Key.php index 05cc58a541..688c0f8cff 100644 --- a/civicrm/CRM/Core/Key.php +++ b/civicrm/CRM/Core/Key.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_Key { @@ -130,31 +128,20 @@ class CRM_Core_Key { } /** - * @param $key + * The original version of this function, added circa 2010 and untouched + * since then, seemed intended to check for a 32-digit hex string followed + * optionally by an underscore and 4-digit number. But it had a bug where + * the optional part was never checked ever. So have decided to remove that + * second check to keep it simple since it seems like pseudo-security. + * + * @param string $key * * @return bool * TRUE if the signature ($key) is well-formed. */ public static function valid($key) { - // a valid key is a hex number - // followed by an optional _ and a number between 1 and 10000 - if (strpos('_', $key) !== FALSE) { - list($hash, $seq) = explode('_', $key); - - // ensure seq is between 1 and 10000 - if (!is_numeric($seq) || - $seq < 1 || - $seq > 10000 - ) { - return FALSE; - } - } - else { - $hash = $key; - } - // ensure that hash is a hex number (of expected length) - return preg_match('#[0-9a-f]{' . self::HASH_LENGTH . '}#i', $hash) ? TRUE : FALSE; + return preg_match('#[0-9a-f]{' . self::HASH_LENGTH . '}#i', $key) ? TRUE : FALSE; } /** diff --git a/civicrm/CRM/Core/Lock.php b/civicrm/CRM/Core/Lock.php index 45d6c96c8e..da1366b424 100644 --- a/civicrm/CRM/Core/Lock.php +++ b/civicrm/CRM/Core/Lock.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_Lock implements \Civi\Core\Lock\LockInterface { diff --git a/civicrm/CRM/Core/Page/AJAX.php b/civicrm/CRM/Core/Page/AJAX.php index ccbcd67251..17a0fe8f6e 100644 --- a/civicrm/CRM/Core/Page/AJAX.php +++ b/civicrm/CRM/Core/Page/AJAX.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Page/AJAX/Location.php b/civicrm/CRM/Core/Page/AJAX/Location.php index 2e1988c61b..b5da745516 100644 --- a/civicrm/CRM/Core/Page/AJAX/Location.php +++ b/civicrm/CRM/Core/Page/AJAX/Location.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Core/Page/File.php b/civicrm/CRM/Core/Page/File.php index 0ad98467e8..a0a8636c09 100644 --- a/civicrm/CRM/Core/Page/File.php +++ b/civicrm/CRM/Core/Page/File.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_Page_File extends CRM_Core_Page { diff --git a/civicrm/CRM/Core/Page/Inline/Help.php b/civicrm/CRM/Core/Page/Inline/Help.php index 773f73b573..0e0e01ae0b 100644 --- a/civicrm/CRM/Core/Page/Inline/Help.php +++ b/civicrm/CRM/Core/Page/Inline/Help.php @@ -12,8 +12,6 @@ /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Payment/AuthorizeNet.php b/civicrm/CRM/Core/Payment/AuthorizeNet.php index d7b2249e5e..5a9fcbc992 100644 --- a/civicrm/CRM/Core/Payment/AuthorizeNet.php +++ b/civicrm/CRM/Core/Payment/AuthorizeNet.php @@ -673,7 +673,7 @@ class CRM_Core_Payment_AuthorizeNet extends CRM_Core_Payment { /** * Process incoming notification. */ - public static function handlePaymentNotification() { + public function handlePaymentNotification() { $ipnClass = new CRM_Core_Payment_AuthorizeNetIPN(array_merge($_GET, $_REQUEST)); $ipnClass->main(); } diff --git a/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php b/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php index 7946ecacbe..83697bd338 100644 --- a/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php +++ b/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php @@ -100,22 +100,20 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { * * @return bool */ - public function recur(&$input, &$ids, &$objects, $first) { + public function recur($input, $ids, $objects, $first) { $this->_isRecurring = TRUE; $recur = &$objects['contributionRecur']; $paymentProcessorObject = $objects['contribution']->_relatedObjects['paymentProcessor']['object']; // do a subscription check if ($recur->processor_id != $input['subscription_id']) { - CRM_Core_Error::debug_log_message("Unrecognized subscription."); - echo "Failure: Unrecognized subscription<p>"; + CRM_Core_Error::debug_log_message('Unrecognized subscription.'); + echo 'Failure: Unrecognized subscription<p>'; return FALSE; } $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - $transaction = new CRM_Core_Transaction(); - $now = date('YmdHis'); //load new contribution object if required. @@ -148,18 +146,17 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { $recur->trxn_id = $recur->processor_id; $isFirstOrLastRecurringPayment = CRM_Core_Payment::RECURRING_PAYMENT_START; } - $statusName = 'In Progress'; + if (($recur->installments > 0) && ($input['subscription_paynum'] >= $recur->installments) ) { // this is the last payment - $statusName = 'Completed'; $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(); } - $recur->modified_date = $now; - $recur->contribution_status_id = array_search($statusName, $contributionStatus); - $recur->save(); } else { // Declined @@ -168,7 +165,7 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { $recur->cancel_date = $now; $recur->save(); - $message = ts("Subscription payment failed - %1", [1 => htmlspecialchars($input['response_reason_text'])]); + $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 @@ -180,13 +177,12 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { // check if contribution is already completed, if so we ignore this ipn if ($objects['contribution']->contribution_status_id == 1) { - $transaction->commit(); CRM_Core_Error::debug_log_message("Returning since contribution has already been handled."); - echo "Success: Contribution has already been handled<p>"; + echo 'Success: Contribution has already been handled<p>'; return TRUE; } - $this->completeTransaction($input, $ids, $objects, $transaction, $recur); + $this->completeTransaction($input, $ids, $objects); // Only Authorize.net does this so it is on the a.net class. If there is a need for other processors // to do this we should make it available via the api, e.g as a parameter, changing the nuance @@ -203,11 +199,10 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { * Get the input from passed in fields. * * @param array $input - * @param array $ids * * @throws \CRM_Core_Exception */ - public function getInput(&$input, &$ids) { + public function getInput(&$input) { $input['amount'] = $this->retrieve('x_amount', 'String'); $input['subscription_id'] = $this->retrieve('x_subscription_id', 'Integer'); $input['response_code'] = $this->retrieve('x_response_code', 'Integer'); @@ -216,7 +211,6 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { $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['trxn_id'] = $this->retrieve('x_trans_id', 'String', FALSE); $input['receive_date'] = $this->retrieve('receive_date', 'String', FALSE, date('YmdHis', strtotime('now'))); if ($input['trxn_id']) { @@ -229,7 +223,7 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { $input['trxn_id'] = md5(uniqid(rand(), TRUE)); } - $billingID = $ids['billing'] = CRM_Core_BAO_LocationType::getBilling(); + $billingID = CRM_Core_BAO_LocationType::getBilling(); $params = [ 'first_name' => 'x_first_name', 'last_name' => 'x_last_name', diff --git a/civicrm/CRM/Core/Payment/BaseIPN.php b/civicrm/CRM/Core/Payment/BaseIPN.php index 973fbd9888..27b0074814 100644 --- a/civicrm/CRM/Core/Payment/BaseIPN.php +++ b/civicrm/CRM/Core/Payment/BaseIPN.php @@ -214,7 +214,7 @@ class CRM_Core_Payment_BaseIPN { * @return bool * @throws \CiviCRM_API3_Exception */ - public function failed(&$objects, &$transaction, $input = []) { + public function failed(&$objects, $transaction = NULL, $input = []) { $contribution = &$objects['contribution']; $memberships = []; if (!empty($objects['membership'])) { @@ -224,21 +224,9 @@ class CRM_Core_Payment_BaseIPN { } } - $addLineItems = FALSE; - if (empty($contribution->id)) { - $addLineItems = TRUE; - } + $addLineItems = empty($contribution->id); $participant = &$objects['participant']; - - // CRM-15546 - $contributionStatuses = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'contribution_status_id', [ - 'labelColumn' => 'name', - 'flip' => 1, - ]); - $contribution->contribution_status_id = $contributionStatuses['Failed']; - $contribution->receive_date = CRM_Utils_Date::isoToMysql($contribution->receive_date); - $contribution->receipt_date = CRM_Utils_Date::isoToMysql($contribution->receipt_date); - $contribution->thankyou_date = CRM_Utils_Date::isoToMysql($contribution->thankyou_date); + $contribution->contribution_status_id = CRM_Core_PseudoConstant::getKey('CRM_Contribute_DAO_Contribution', 'contribution_status_id', 'Failed'); $contribution->save(); // Add line items for recurring payments. @@ -266,7 +254,9 @@ class CRM_Core_Payment_BaseIPN { } } - $transaction->commit(); + if ($transaction) { + $transaction->commit(); + } Civi::log()->debug("Setting contribution status to Failed"); return TRUE; } @@ -299,7 +289,7 @@ class CRM_Core_Payment_BaseIPN { * @return bool * @throws \CiviCRM_API3_Exception */ - public function cancelled(&$objects, &$transaction, $input = []) { + public function cancelled(&$objects, $transaction = NULL, $input = []) { $contribution = &$objects['contribution']; $memberships = []; if (!empty($objects['membership'])) { @@ -353,7 +343,9 @@ class CRM_Core_Payment_BaseIPN { $this->cancelParticipant($participant->id); } } - $transaction->commit(); + if ($transaction) { + $transaction->commit(); + } Civi::log()->debug("Setting contribution status to Cancelled"); return TRUE; } @@ -477,13 +469,12 @@ class CRM_Core_Payment_BaseIPN { * @param array $input * @param array $ids * @param array $objects - * @param CRM_Core_Transaction $transaction * * @throws \CRM_Core_Exception * @throws \CiviCRM_API3_Exception */ - public function completeTransaction(&$input, &$ids, &$objects, $transaction = NULL) { - CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, $transaction); + public function completeTransaction(&$input, &$ids, &$objects) { + CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects); } /** @@ -518,21 +509,14 @@ class CRM_Core_Payment_BaseIPN { * @param array $ids * Related object IDs. * @param array $objects - * @param array $values - * Values related to objects that have already been loaded. - * @param bool $recur - * Is it part of a recurring contribution. - * @param bool $returnMessageText - * Should text be returned instead of sent. This. - * is because the function is also used to generate pdfs - * - * @return array - * @throws \CRM_Core_Exception + * * @throws \CiviCRM_API3_Exception */ - public function sendMail(&$input, &$ids, &$objects, &$values, $recur = FALSE, $returnMessageText = FALSE) { - return CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $objects['contribution']->id, $values, - $returnMessageText); + public function sendMail($input, $ids, $objects) { + CRM_Core_Error::deprecatedFunctionWarning('this should be done via completetransaction api'); + civicrm_api3('Contribution', 'sendconfirmation', [ + 'id' => $objects['contribution']->id, + ]); } } diff --git a/civicrm/CRM/Core/Payment/Manual.php b/civicrm/CRM/Core/Payment/Manual.php index a2c7c5dd25..4c254691cc 100644 --- a/civicrm/CRM/Core/Payment/Manual.php +++ b/civicrm/CRM/Core/Payment/Manual.php @@ -238,25 +238,6 @@ class CRM_Core_Payment_Manual extends CRM_Core_Payment { return TRUE; } - /** - * Submit a manual payment. - * - * @param array $params - * Assoc array of input parameters for this transaction. - * - * @return array - */ - public function doDirectPayment(&$params) { - $statuses = CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id'); - if ($params['is_pay_later']) { - $result['payment_status_id'] = array_search('Pending', $statuses); - } - else { - $result['payment_status_id'] = array_search('Completed', $statuses); - } - return $result; - } - /** * Should a receipt be sent out for a pending payment. * diff --git a/civicrm/CRM/Core/Payment/PayPalIPN.php b/civicrm/CRM/Core/Payment/PayPalIPN.php index be0424f7af..b6948ddbd4 100644 --- a/civicrm/CRM/Core/Payment/PayPalIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalIPN.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { @@ -230,8 +229,10 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { * @param bool $first * * @return void + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception */ - public function single(&$input, &$ids, &$objects, $recur = FALSE, $first = FALSE) { + public function single($input, $ids, $objects, $recur = FALSE, $first = FALSE) { $contribution = &$objects['contribution']; // make sure the invoice is valid and matches what we have in the contribution record @@ -257,18 +258,18 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { $contribution->total_amount = $input['amount']; } - $transaction = new CRM_Core_Transaction(); - $status = $input['paymentStatus']; - if ($status == 'Denied' || $status == 'Failed' || $status == 'Voided') { - return $this->failed($objects, $transaction); + if ($status === 'Denied' || $status === 'Failed' || $status === 'Voided') { + $this->failed($objects); + return; } if ($status === 'Pending') { Civi::log()->debug('Returning since contribution status is Pending'); return; } - elseif ($status == 'Refunded' || $status == 'Reversed') { - return $this->cancelled($objects, $transaction); + elseif ($status === 'Refunded' || $status === 'Reversed') { + $this->cancelled($objects); + return; } elseif ($status !== 'Completed') { Civi::log()->debug('Returning since contribution status is not handled'); @@ -278,13 +279,12 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { // check if contribution is already completed, if so we ignore this ipn $completedStatusId = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'); if ($contribution->contribution_status_id == $completedStatusId) { - $transaction->commit(); Civi::log()->debug('PayPalIPN: Returning since contribution has already been handled. (ID: ' . $contribution->id . ').'); echo 'Success: Contribution has already been handled<p>'; return; } - $this->completeTransaction($input, $ids, $objects, $transaction, $recur); + $this->completeTransaction($input, $ids, $objects); } /** @@ -303,7 +303,7 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { $membershipID = $this->retrieve('membershipID', 'Integer', FALSE); $contributionRecurID = $this->retrieve('contributionRecurID', 'Integer', FALSE); - $this->getInput($input, $ids); + $this->getInput($input); if ($component == 'event') { $ids['event'] = $this->retrieve('eventID', 'Integer', TRUE); @@ -371,17 +371,16 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { return; } } - $this->single($input, $ids, $objects, FALSE, FALSE); + $this->single($input, $ids, $objects); } /** * @param array $input - * @param array $ids * * @throws \CRM_Core_Exception */ - public function getInput(&$input, &$ids) { - $billingID = $ids['billing'] = CRM_Core_BAO_LocationType::getBilling(); + public function getInput(&$input) { + $billingID = CRM_Core_BAO_LocationType::getBilling(); $input['txnType'] = $this->retrieve('txn_type', 'String', FALSE); $input['paymentStatus'] = $this->retrieve('payment_status', 'String', FALSE); $input['invoice'] = $this->retrieve('invoice', 'String', TRUE); diff --git a/civicrm/CRM/Core/Payment/PayPalImpl.php b/civicrm/CRM/Core/Payment/PayPalImpl.php index 022067bd98..79c2ecd9de 100644 --- a/civicrm/CRM/Core/Payment/PayPalImpl.php +++ b/civicrm/CRM/Core/Payment/PayPalImpl.php @@ -690,7 +690,7 @@ class CRM_Core_Payment_PayPalImpl extends CRM_Core_Payment { * @throws \CRM_Core_Exception * @throws \CiviCRM_API3_Exception */ - public static function handlePaymentNotification() { + public function handlePaymentNotification() { $params = array_merge($_GET, $_REQUEST); $q = explode('/', CRM_Utils_Array::value('q', $params, '')); $lastParam = array_pop($q); diff --git a/civicrm/CRM/Core/Payment/PayPalProIPN.php b/civicrm/CRM/Core/Payment/PayPalProIPN.php index d249aa0bef..e5c58d3de7 100644 --- a/civicrm/CRM/Core/Payment/PayPalProIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalProIPN.php @@ -145,16 +145,19 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { /** * Process recurring contributions. + * * @param array $input * @param array $ids * @param array $objects * @param bool $first - * @return void + * + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception */ - public function recur(&$input, &$ids, &$objects, $first) { + public function recur($input, $ids, $objects, $first) { if (!isset($input['txnType'])) { Civi::log()->debug('PayPalProIPN: Could not find txn_type in input request.'); - echo "Failure: Invalid parameters<p>"; + echo 'Failure: Invalid parameters<p>'; return; } @@ -165,7 +168,7 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { // the contribution record if ($recur->invoice_id != $input['invoice']) { Civi::log()->debug('PayPalProIPN: Invoice values dont match between database and IPN request recur is ' . $recur->invoice_id . ' input is ' . $input['invoice']); - echo "Failure: Invoice values dont match between database and IPN request recur is " . $recur->invoice_id . " input is " . $input['invoice']; + echo 'Failure: Invoice values dont match between database and IPN request recur is ' . $recur->invoice_id . " input is " . $input['invoice']; return; } @@ -344,19 +347,17 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { $contribution->total_amount = $input['amount']; } - $transaction = new CRM_Core_Transaction(); - $status = $input['paymentStatus']; - if ($status == 'Denied' || $status == 'Failed' || $status == 'Voided') { - $this->failed($objects, $transaction); + if ($status === 'Denied' || $status === 'Failed' || $status === 'Voided') { + $this->failed($objects); return; } if ($status === 'Pending') { Civi::log()->debug('Returning since contribution status is Pending'); return; } - elseif ($status == 'Refunded' || $status == 'Reversed') { - $this->cancelled($objects, $transaction); + elseif ($status === 'Refunded' || $status === 'Reversed') { + $this->cancelled($objects); return; } elseif ($status !== 'Completed') { @@ -367,13 +368,12 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { // check if contribution is already completed, if so we ignore this ipn $completedStatusId = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'); if ($contribution->contribution_status_id == $completedStatusId) { - $transaction->commit(); Civi::log()->debug('PayPalProIPN: Returning since contribution has already been handled.'); echo 'Success: Contribution has already been handled<p>'; return; } - $this->completeTransaction($input, $ids, $objects, $transaction, $recur); + $this->completeTransaction($input, $ids, $objects); } /** @@ -423,7 +423,7 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { $ids['contact'] = self::getValue('c', TRUE); $ids['contribution'] = self::getValue('b', TRUE); - $this->getInput($input, $ids); + $this->getInput($input); if ($this->_component == 'event') { $ids['event'] = self::getValue('e', TRUE); @@ -487,13 +487,12 @@ INNER JOIN civicrm_membership_payment mp ON m.id = mp.membership_id AND mp.contr /** * @param array $input - * @param array $ids * * @return void * @throws CRM_Core_Exception */ - public function getInput(&$input, &$ids) { - $billingID = $ids['billing'] = CRM_Core_BAO_LocationType::getBilling(); + public function getInput(&$input) { + $billingID = CRM_Core_BAO_LocationType::getBilling(); $input['txnType'] = self::retrieve('txn_type', 'String', 'POST', FALSE); $input['paymentStatus'] = self::retrieve('payment_status', 'String', 'POST', FALSE); diff --git a/civicrm/CRM/Core/Payment/PayflowPro.php b/civicrm/CRM/Core/Payment/PayflowPro.php index 9eef03f0e7..0a06a3300d 100644 --- a/civicrm/CRM/Core/Payment/PayflowPro.php +++ b/civicrm/CRM/Core/Payment/PayflowPro.php @@ -333,18 +333,6 @@ class CRM_Core_Payment_PayflowPro extends CRM_Core_Payment { } } - /** - * NOTE: 'doTransferCheckout' not implemented - * - * @param array $params - * @param $component - * - * @throws Exception - */ - public function doTransferCheckout(&$params, $component) { - throw new CRM_Core_Exception(ts('This function is not implemented')); - } - /** * This public function checks to see if we have the right processor config values set * @@ -367,9 +355,7 @@ class CRM_Core_Payment_PayflowPro extends CRM_Core_Payment { if (!empty($errorMsg)) { return implode('<p>', $errorMsg); } - else { - return NULL; - } + return NULL; } /** @@ -392,9 +378,10 @@ class CRM_Core_Payment_PayflowPro extends CRM_Core_Payment { * Submit transaction using cURL * * @param string $submiturl Url to direct HTTPS GET to - * @param $payflow_query value string to be posted + * @param string $payflow_query value string to be posted * * @return mixed|object + * @throws \Civi\Payment\Exception\PaymentProcessorException */ public function submit_transaction($submiturl, $payflow_query) { // get data ready for API diff --git a/civicrm/CRM/Core/Payment/PaymentExpress.php b/civicrm/CRM/Core/Payment/PaymentExpress.php deleted file mode 100644 index 54ddfa21c6..0000000000 --- a/civicrm/CRM/Core/Payment/PaymentExpress.php +++ /dev/null @@ -1,236 +0,0 @@ -<?php -/* - +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | 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 and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - - -/* - * PxPay Functionality Copyright (C) 2008 Lucas Baker, Logistic Information Systems Limited (Logis) - * PxAccess Functionality Copyright (C) 2008 Eileen McNaughton - * Licensed to CiviCRM under the Academic Free License version 3.0. - * - * Grateful acknowledgements go to Donald Lobo for invaluable assistance - * in creating this payment processor module - */ - -/** - * Class CRM_Core_Payment_PaymentExpress - */ -class CRM_Core_Payment_PaymentExpress extends CRM_Core_Payment { - const CHARSET = 'iso-8859-1'; - - protected $_mode = NULL; - - /** - * Constructor. - * - * @param string $mode - * The mode of operation: live or test. - * - * @param $paymentProcessor - * - * @return \CRM_Core_Payment_PaymentExpress - */ - public function __construct($mode, &$paymentProcessor) { - - $this->_mode = $mode; - $this->_paymentProcessor = $paymentProcessor; - } - - /** - * This function checks to see if we have the right config values. - * - * @internal param string $mode the mode we are operating in (live or test) - * - * @return string - * the error message if any - */ - public function checkConfig() { - $config = CRM_Core_Config::singleton(); - - $error = []; - - if (empty($this->_paymentProcessor['user_name'])) { - $error[] = ts('UserID is not set in the Administer » System Settings » Payment Processors'); - } - - if (empty($this->_paymentProcessor['password'])) { - $error[] = ts('pxAccess / pxPay Key is not set in the Administer » System Settings » Payment Processors'); - } - - if (!empty($error)) { - return implode('<p>', $error); - } - else { - return NULL; - } - } - - /** - * This function collects all the information from a web/api form and invokes - * the relevant payment processor specific functions to perform the transaction - * - * @param array $params - * Assoc array of input parameters for this transaction. - */ - public function doDirectPayment(&$params) { - throw new CRM_Core_Exception(ts('This function is not implemented')); - } - - /** - * Main transaction function. - * - * @param array $params - * Name value pair of contribution data. - * - * @param $component - */ - public function doTransferCheckout(&$params, $component) { - $component = strtolower($component); - $config = CRM_Core_Config::singleton(); - if ($component != 'contribute' && $component != 'event') { - throw new CRM_Core_Exception(ts('Component is invalid')); - } - - $url = CRM_Utils_System::externUrl('extern/pxIPN'); - - if ($component == 'event') { - $cancelURL = CRM_Utils_System::url('civicrm/event/register', - "_qf_Confirm_display=true&qfKey={$params['qfKey']}", - FALSE, NULL, FALSE - ); - } - elseif ($component == 'contribute') { - $cancelURL = CRM_Utils_System::url('civicrm/contribute/transact', - "_qf_Confirm_display=true&qfKey={$params['qfKey']}", - FALSE, NULL, FALSE - ); - } - - /* - * Build the private data string to pass to DPS, which they will give back to us with the - * - * transaction result. We are building this as a comma-separated list so as to avoid long URLs. - * - * Parameters passed: a=contactID, b=contributionID,c=contributionTypeID,d=invoiceID,e=membershipID,f=participantID,g=eventID - */ - - $privateData = "a={$params['contactID']},b={$params['contributionID']},c={$params['contributionTypeID']},d={$params['invoiceID']}"; - - if ($component == 'event') { - $merchantRef = substr($params['contactID'] . "-" . $params['contributionID'] . " " . substr($params['description'], 27, 20), 0, 24); - $privateData .= ",f={$params['participantID']},g={$params['eventID']}"; - } - elseif ($component == 'contribute') { - $membershipID = $params['membershipID'] ?? NULL; - if ($membershipID) { - $privateData .= ",e=$membershipID"; - } - $merchantRef = substr($params['contactID'] . "-" . $params['contributionID'] . " " . substr($params['description'], 20, 20), 0, 24); - - } - - $dpsParams = [ - 'AmountInput' => str_replace(",", "", number_format($params['amount'], 2)), - 'CurrencyInput' => $params['currencyID'], - 'MerchantReference' => $merchantRef, - 'TxnData1' => $params['qfKey'], - 'TxnData2' => $privateData, - 'TxnData3' => $component . "," . $this->_paymentProcessor['id'], - 'TxnType' => 'Purchase', - // Leave this empty for now, causes an error with DPS if we populate it - 'TxnId' => '', - 'UrlFail' => $url, - 'UrlSuccess' => $url, - ]; - // Allow further manipulation of params via custom hooks - CRM_Utils_Hook::alterPaymentProcessorParams($this, $params, $dpsParams); - - /* - * determine whether method is pxaccess or pxpay by whether signature (mac key) is defined - */ - - if (empty($this->_paymentProcessor['signature'])) { - /* - * Processor is pxpay - * - * This contains the XML/Curl functions we'll need to generate the XML request - */ - - $dpsParams['PxPayUserId'] = $this->_paymentProcessor['user_name']; - $dpsParams['PxPayKey'] = $this->_paymentProcessor['password']; - // Build a valid XML string to pass to DPS - $generateRequest = CRM_Core_Payment_PaymentExpressUtils::_valueXml($dpsParams); - - $generateRequest = CRM_Core_Payment_PaymentExpressUtils::_valueXml('GenerateRequest', $generateRequest); - // Get the special validated URL back from DPS by sending them the XML we've generated - $curl = CRM_Core_Payment_PaymentExpressUtils::_initCURL($generateRequest, $this->_paymentProcessor['url_site']); - $success = FALSE; - - if ($response = curl_exec($curl)) { - curl_close($curl); - $valid = CRM_Core_Payment_PaymentExpressUtils::_xmlAttribute($response, 'valid'); - if (1 == $valid) { - // the request was validated, so we'll get the URL and redirect to it - $uri = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'URI'); - CRM_Utils_System::redirect($uri); - } - else { - // redisplay confirmation page - CRM_Utils_System::redirect($cancelURL); - } - } - else { - // calling DPS failed - throw new CRM_Core_Exception(ts('Unable to establish connection to the payment gateway.')); - } - } - else { - $processortype = "pxaccess"; - require_once 'PaymentExpress/pxaccess.inc.php'; - // URL - $PxAccess_Url = $this->_paymentProcessor['url_site']; - // User ID - $PxAccess_Userid = $this->_paymentProcessor['user_name']; - // Your DES Key from DPS - $PxAccess_Key = $this->_paymentProcessor['password']; - // Your MAC key from DPS - $Mac_Key = $this->_paymentProcessor['signature']; - - $pxaccess = new PxAccess($PxAccess_Url, $PxAccess_Userid, $PxAccess_Key, $Mac_Key); - $request = new PxPayRequest(); - $request->setAmountInput($dpsParams['AmountInput']); - $request->setTxnData1($dpsParams['TxnData1']); - $request->setTxnData2($dpsParams['TxnData2']); - $request->setTxnData3($dpsParams['TxnData3']); - $request->setTxnType($dpsParams['TxnType']); - $request->setInputCurrency($dpsParams['InputCurrency']); - $request->setMerchantReference($dpsParams['MerchantReference']); - $request->setUrlFail($dpsParams['UrlFail']); - $request->setUrlSuccess($dpsParams['UrlSuccess']); - $request_string = $pxaccess->makeRequest($request); - CRM_Utils_System::redirect($request_string); - } - } - -} diff --git a/civicrm/CRM/Core/Payment/PaymentExpressIPN.php b/civicrm/CRM/Core/Payment/PaymentExpressIPN.php deleted file mode 100644 index 878b948f96..0000000000 --- a/civicrm/CRM/Core/Payment/PaymentExpressIPN.php +++ /dev/null @@ -1,443 +0,0 @@ -<?php -/* - +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | 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 and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - - -/* - * PxPay Functionality Copyright (C) 2008 Lucas Baker, Logistic Information Systems Limited (Logis) - * PxAccess Functionality Copyright (C) 2008 Eileen McNaughton - * Licensed to CiviCRM under the Academic Free License version 3.0. - * - * Grateful acknowledgements go to Donald Lobo for invaluable assistance - * in creating this payment processor module - */ - -/** - * Class CRM_Core_Payment_PaymentExpressIPN - */ -class CRM_Core_Payment_PaymentExpressIPN extends CRM_Core_Payment_BaseIPN { - - /** - * Mode of operation: live or test - * - * @var object - */ - protected $_mode = NULL; - - /** - * @param string $name - * @param $type - * @param $object - * @param bool $abort - * - * @return mixed - */ - public static function retrieve($name, $type, $object, $abort = TRUE) { - $value = $object[$name] ?? NULL; - if ($abort && $value === NULL) { - CRM_Core_Error::debug_log_message("Could not find an entry for $name"); - echo "Failure: Missing Parameter - " . $name . "<p>"; - exit(); - } - - if ($value) { - if (!CRM_Utils_Type::validate($value, $type)) { - CRM_Core_Error::debug_log_message("Could not find a valid entry for $name"); - echo "Failure: Invalid Parameter<p>"; - exit(); - } - } - - return $value; - } - - /** - * Constructor. - * - * @param string $mode - * The mode of operation: live or test. - * - * @param $paymentProcessor - * - * @return \CRM_Core_Payment_PaymentExpressIPN - */ - public function __construct($mode, &$paymentProcessor) { - parent::__construct(); - - $this->_mode = $mode; - $this->_paymentProcessor = $paymentProcessor; - } - - /** - * The function gets called when a new order takes place. - * - * @param $success - * @param array $privateData - * Contains the name value pair of <merchant-private-data>. - * - * @param $component - * @param $amount - * @param $transactionReference - * - * @return bool - * @throws \CRM_Core_Exception - * @throws \CiviCRM_API3_Exception - */ - public function newOrderNotify($success, $privateData, $component, $amount, $transactionReference) { - $ids = $input = $params = []; - - $input['component'] = strtolower($component); - - $ids['contact'] = self::retrieve('contactID', 'Integer', $privateData, TRUE); - $ids['contribution'] = self::retrieve('contributionID', 'Integer', $privateData, TRUE); - - if ($input['component'] == "event") { - $ids['event'] = self::retrieve('eventID', 'Integer', $privateData, TRUE); - $ids['participant'] = self::retrieve('participantID', 'Integer', $privateData, TRUE); - $ids['membership'] = NULL; - } - else { - $ids['membership'] = self::retrieve('membershipID', 'Integer', $privateData, FALSE); - } - $ids['contributionRecur'] = $ids['contributionPage'] = NULL; - - $paymentProcessorID = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessorType', - 'PayPal_Express', 'id', 'name' - ); - - if (!$this->validateData($input, $ids, $objects, TRUE, $paymentProcessorID)) { - return FALSE; - } - - // make sure the invoice is valid and matches what we have in the contribution record - $input['invoice'] = $privateData['invoiceID']; - $input['newInvoice'] = $transactionReference; - $contribution = &$objects['contribution']; - $input['trxn_id'] = $transactionReference; - - if ($contribution->invoice_id != $input['invoice']) { - CRM_Core_Error::debug_log_message("Invoice values dont match between database and IPN request"); - echo "Failure: Invoice values dont match between database and IPN request<p>"; - return FALSE; - } - - // lets replace invoice-id with Payment Processor -number because thats what is common and unique - // in subsequent calls or notifications sent by google. - $contribution->invoice_id = $input['newInvoice']; - - $input['amount'] = $amount; - - if ($contribution->total_amount != $input['amount']) { - CRM_Core_Error::debug_log_message("Amount values dont match between database and IPN request"); - echo "Failure: Amount values dont match between database and IPN request. " . $contribution->total_amount . "/" . $input['amount'] . "<p>"; - return FALSE; - } - - // check if contribution is already completed, if so we ignore this ipn - - if ($contribution->contribution_status_id == 1) { - CRM_Core_Error::debug_log_message("returning since contribution has already been handled"); - echo "Success: Contribution has already been handled<p>"; - return TRUE; - } - else { - /* Since trxn_id hasn't got any use here, - * lets make use of it by passing the eventID/membershipTypeID to next level. - * And change trxn_id to the payment processor reference before finishing db update */ - - if ($ids['event']) { - $contribution->trxn_id = $ids['event'] . CRM_Core_DAO::VALUE_SEPARATOR . $ids['participant']; - } - else { - $contribution->trxn_id = $ids['membership']; - } - } - CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects); - return TRUE; - } - - /** - * - * /** - * The function returns the component(Event/Contribute..)and whether it is Test or not - * - * @param array $privateData - * Contains the name-value pairs of transaction related data. - * @param int $orderNo - * <order-total> send by google. - * - * @return array - * context of this call (test, component, payment processor id) - */ - public static function getContext($privateData, $orderNo) { - - $component = NULL; - $isTest = NULL; - - $contributionID = $privateData['contributionID']; - $contribution = new CRM_Contribute_DAO_Contribution(); - $contribution->id = $contributionID; - - if (!$contribution->find(TRUE)) { - CRM_Core_Error::debug_log_message("Could not find contribution record: $contributionID"); - echo "Failure: Could not find contribution record for $contributionID<p>"; - exit(); - } - - if (stristr($contribution->source, 'Online Contribution')) { - $component = 'contribute'; - } - elseif (stristr($contribution->source, 'Online Event Registration')) { - $component = 'event'; - } - $isTest = $contribution->is_test; - - $duplicateTransaction = 0; - if ($contribution->contribution_status_id == 1) { - //contribution already handled. (some processors do two notifications so this could be valid) - $duplicateTransaction = 1; - } - - if ($component == 'contribute') { - if (!$contribution->contribution_page_id) { - CRM_Core_Error::debug_log_message("Could not find contribution page for contribution record: $contributionID"); - echo "Failure: Could not find contribution page for contribution record: $contributionID<p>"; - exit(); - } - } - else { - - $eventID = $privateData['eventID']; - - if (!$eventID) { - CRM_Core_Error::debug_log_message("Could not find event ID"); - echo "Failure: Could not find eventID<p>"; - exit(); - } - - // we are in event mode - // make sure event exists and is valid - $event = new CRM_Event_DAO_Event(); - $event->id = $eventID; - if (!$event->find(TRUE)) { - CRM_Core_Error::debug_log_message("Could not find event: $eventID"); - echo "Failure: Could not find event: $eventID<p>"; - exit(); - } - } - - return [$isTest, $component, $duplicateTransaction]; - } - - /** - * Main notification processing method. - * - * hex string from paymentexpress is passed to this function as hex string. Code based on googleIPN - * mac_key is only passed if the processor is pxaccess as it is used for decryption - * $dps_method is either pxaccess or pxpay - * - * @param string $dps_method - * @param array $rawPostData - * @param string $dps_url - * @param string $dps_user - * @param string $dps_key - * @param string $mac_key - * - * @throws \Exception - */ - public static function main($dps_method, $rawPostData, $dps_url, $dps_user, $dps_key, $mac_key) { - - $config = CRM_Core_Config::singleton(); - define('RESPONSE_HANDLER_LOG_FILE', $config->uploadDir . 'CiviCRM.PaymentExpress.log'); - - //Setup the log file - if (!$message_log = fopen(RESPONSE_HANDLER_LOG_FILE, "a")) { - error_func("Cannot open " . RESPONSE_HANDLER_LOG_FILE . " file.\n", 0); - exit(1); - } - - if ($dps_method == "pxpay") { - $processResponse = CRM_Core_Payment_PaymentExpressUtils::_valueXml([ - 'PxPayUserId' => $dps_user, - 'PxPayKey' => $dps_key, - 'Response' => $_GET['result'], - ]); - $processResponse = CRM_Core_Payment_PaymentExpressUtils::_valueXml('ProcessResponse', $processResponse); - - fwrite($message_log, sprintf("\n\r%s:- %s\n", date("D M j G:i:s T Y"), - $processResponse - )); - - // Send the XML-formatted validation request to DPS so that we can receive a decrypted XML response which contains the transaction results - $curl = CRM_Core_Payment_PaymentExpressUtils::_initCURL($processResponse, $dps_url); - - fwrite($message_log, sprintf("\n\r%s:- %s\n", date("D M j G:i:s T Y"), - $curl - )); - $success = FALSE; - if ($response = curl_exec($curl)) { - $info = curl_getinfo($curl); - if ($info['http_code'] < 200 || $info['http_code'] > 299) { - $log_message = "DPS error: HTTP {$info['http_code']} retrieving {$info['url']}."; - throw new CRM_Core_Exception($log_message); - } - else { - fwrite($message_log, sprintf("\n\r%s:- %s\n", date("D M j G:i:s T Y"), $response)); - curl_close($curl); - - // Assign the returned XML values to variables - $valid = CRM_Core_Payment_PaymentExpressUtils::_xmlAttribute($response, 'valid'); - // CRM_Core_Payment_PaymentExpressUtils::_xmlAttribute() returns NULL if preg fails. - if (is_null($valid)) { - throw new CRM_Core_Exception(ts("DPS error: Unable to parse XML response from DPS.", [1 => $valid])); - } - $success = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'Success'); - $txnId = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'TxnId'); - $responseText = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'ResponseText'); - $authCode = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'AuthCode'); - $DPStxnRef = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, 'DpsTxnRef'); - $qfKey = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, "TxnData1"); - $privateData = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, "TxnData2"); - list($component, $paymentProcessorID,) = explode(',', CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, "TxnData3")); - $amount = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, "AmountSettlement"); - $merchantReference = CRM_Core_Payment_PaymentExpressUtils::_xmlElement($response, "MerchantReference"); - } - } - else { - // calling DPS failed - throw new CRM_Core_Exception(ts('Unable to establish connection to the payment gateway to verify transaction response.')); - exit; - } - } - elseif ($dps_method == "pxaccess") { - - require_once 'PaymentExpress/pxaccess.inc.php'; - global $pxaccess; - $pxaccess = new PxAccess($dps_url, $dps_user, $dps_key, $mac_key); - // GetResponse method in PxAccess object returns PxPayResponse object - // which encapsulates all the response data - $rsp = $pxaccess->getResponse($rawPostData); - - $qfKey = $rsp->getTxnData1(); - $privateData = $rsp->getTxnData2(); - list($component, $paymentProcessorID) = explode(',', $rsp->getTxnData3()); - $success = $rsp->getSuccess(); - $authCode = $rsp->getAuthCode(); - $DPStxnRef = $rsp->getDpsTxnRef(); - $amount = $rsp->getAmountSettlement(); - $MerchantReference = $rsp->getMerchantReference(); - } - - $privateData = $privateData ? self::stringToArray($privateData) : ''; - - // Record the current count in array, before we start adding things (for later checks) - $countPrivateData = count($privateData); - - // Private Data consists of : a=contactID, b=contributionID,c=contributionTypeID,d=invoiceID,e=membershipID,f=participantID,g=eventID - $privateData['contactID'] = $privateData['a']; - $privateData['contributionID'] = $privateData['b']; - $privateData['contributionTypeID'] = $privateData['c']; - $privateData['invoiceID'] = $privateData['d']; - - if ($component == "event") { - $privateData['participantID'] = $privateData['f']; - $privateData['eventID'] = $privateData['g']; - } - elseif ($component == "contribute") { - - if ($countPrivateData == 5) { - $privateData["membershipID"] = $privateData['e']; - } - } - - $transactionReference = $authCode . "-" . $DPStxnRef; - - list($mode, $component, $duplicateTransaction) = self::getContext($privateData, $transactionReference); - $mode = $mode ? 'test' : 'live'; - - $paymentProcessor = CRM_Financial_BAO_PaymentProcessor::getPayment($paymentProcessorID, - $mode - ); - - $ipn = self::singleton($mode, $component, $paymentProcessor); - - //Check status and take appropriate action - - if ($success == 1) { - if ($duplicateTransaction == 0) { - $ipn->newOrderNotify($success, $privateData, $component, $amount, $transactionReference); - } - - if ($component == "event") { - $finalURL = CRM_Utils_System::url('civicrm/event/register', - "_qf_ThankYou_display=1&qfKey=$qfKey", - FALSE, NULL, FALSE - ); - } - elseif ($component == "contribute") { - $finalURL = CRM_Utils_System::url('civicrm/contribute/transact', - "_qf_ThankYou_display=1&qfKey=$qfKey", - FALSE, NULL, FALSE - ); - } - - CRM_Utils_System::redirect($finalURL); - } - else { - - if ($component == "event") { - $finalURL = CRM_Utils_System::url('civicrm/event/confirm', - "reset=1&cc=fail&participantId=$privateData[participantID]", - FALSE, NULL, FALSE - ); - } - elseif ($component == "contribute") { - $finalURL = CRM_Utils_System::url('civicrm/contribute/transact', - "_qf_Main_display=1&cancel=1&qfKey=$qfKey", - FALSE, NULL, FALSE - ); - } - - CRM_Utils_System::redirect($finalURL); - } - } - - /** - * Converts the comma separated name-value pairs in <TxnData2> to an array of values. - * - * @param string $str - * - * @return array - */ - public static function stringToArray($str) { - $vars = $labels = []; - $labels = explode(',', $str); - foreach ($labels as $label) { - $terms = explode('=', $label); - $vars[$terms[0]] = $terms[1]; - } - return $vars; - } - -} diff --git a/civicrm/CRM/Core/Payment/PaymentExpressUtils.php b/civicrm/CRM/Core/Payment/PaymentExpressUtils.php deleted file mode 100644 index c4a544e29e..0000000000 --- a/civicrm/CRM/Core/Payment/PaymentExpressUtils.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php -/* - +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | 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 and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | - +--------------------------------------------------------------------+ - */ - - -/* - * PxPay Functionality Copyright (C) 2008 Lucas Baker, Logistic Information Systems Limited (Logis) - * PxAccess Functionality Copyright (C) 2008 Eileen McNaughton - * Licensed to CiviCRM under the Academic Free License version 3.0. - * - * Grateful acknowledgements go to Donald Lobo for invaluable assistance - * in creating this payment processor module - */ - -/** - * Class CRM_Core_Payment_PaymentExpressUtils - */ -class CRM_Core_Payment_PaymentExpressUtils { - - /** - * @param $element - * @param null $value - * - * @return string - */ - public static function _valueXml($element, $value = NULL) { - $nl = "\n"; - - if (is_array($element)) { - $xml = ''; - foreach ($element as $elem => $value) { - $xml .= self::_valueXml($elem, $value); - } - return $xml; - } - return "<" . $element . ">" . $value . "</" . $element . ">" . $nl; - } - - /** - * @param $xml - * @param string $name - * - * @return mixed - */ - public static function _xmlElement($xml, $name) { - $value = preg_replace('/.*<' . $name . '[^>]*>(.*)<\/' . $name . '>.*/', '\1', $xml); - return $value; - } - - /** - * @param $xml - * @param string $name - * - * @return mixed|null - */ - public static function _xmlAttribute($xml, $name) { - $value = preg_replace('/<.*' . $name . '="([^"]*)".*>/', '\1', $xml); - return $value != $xml ? $value : NULL; - } - - /** - * @param $query - * @param $url - * - * @return resource - */ - public static function &_initCURL($query, $url) { - $curl = curl_init(); - - curl_setopt($curl, CURLOPT_URL, $url); - curl_setopt($curl, CURLOPT_FRESH_CONNECT, TRUE); - curl_setopt($curl, CURLOPT_POST, TRUE); - curl_setopt($curl, CURLOPT_POSTFIELDS, $query); - curl_setopt($curl, CURLOPT_TIMEOUT, 30); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); - if (ini_get('open_basedir') == '' && ini_get('safe_mode') == 'Off') { - curl_setopt($curl, CURLOPT_FOLLOWLOCATION, FALSE); - } - curl_setopt($curl, CURLOPT_HEADER, 0); - curl_setopt($curl, CURLOPT_SSLVERSION, 0); - - if (strtoupper(substr(@php_uname('s'), 0, 3)) === 'WIN') { - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, Civi::settings()->get('verifySSL')); - curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, Civi::settings()->get('verifySSL') ? 2 : 0); - } - return $curl; - } - -} diff --git a/civicrm/CRM/Core/Payment/Realex.php b/civicrm/CRM/Core/Payment/Realex.php index 700e43cb11..6fa22c9ccd 100644 --- a/civicrm/CRM/Core/Payment/Realex.php +++ b/civicrm/CRM/Core/Payment/Realex.php @@ -1,25 +1,11 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | 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. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | 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 | +--------------------------------------------------------------------+ */ diff --git a/civicrm/CRM/Core/Payment/eWAY.php b/civicrm/CRM/Core/Payment/eWAY.php index 8a7f4f639b..9c37727053 100644 --- a/civicrm/CRM/Core/Payment/eWAY.php +++ b/civicrm/CRM/Core/Payment/eWAY.php @@ -1,25 +1,11 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | 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. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | 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 | +--------------------------------------------------------------------+ */ diff --git a/civicrm/CRM/Core/Permission/Backdrop.php b/civicrm/CRM/Core/Permission/Backdrop.php index 1dddc5663e..8226c45a16 100644 --- a/civicrm/CRM/Core/Permission/Backdrop.php +++ b/civicrm/CRM/Core/Permission/Backdrop.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Base.php b/civicrm/CRM/Core/Permission/Base.php index b3f5a066f1..a49eb88f8a 100644 --- a/civicrm/CRM/Core/Permission/Base.php +++ b/civicrm/CRM/Core/Permission/Base.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Drupal.php b/civicrm/CRM/Core/Permission/Drupal.php index 839120520a..73179d4575 100644 --- a/civicrm/CRM/Core/Permission/Drupal.php +++ b/civicrm/CRM/Core/Permission/Drupal.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Drupal6.php b/civicrm/CRM/Core/Permission/Drupal6.php index b98dd28da6..2ff671fb09 100644 --- a/civicrm/CRM/Core/Permission/Drupal6.php +++ b/civicrm/CRM/Core/Permission/Drupal6.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Drupal8.php b/civicrm/CRM/Core/Permission/Drupal8.php index 7596e15af3..649ff0c53b 100644 --- a/civicrm/CRM/Core/Permission/Drupal8.php +++ b/civicrm/CRM/Core/Permission/Drupal8.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/DrupalBase.php b/civicrm/CRM/Core/Permission/DrupalBase.php index 2c16e77f65..23db51cae8 100644 --- a/civicrm/CRM/Core/Permission/DrupalBase.php +++ b/civicrm/CRM/Core/Permission/DrupalBase.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Joomla.php b/civicrm/CRM/Core/Permission/Joomla.php index ce338d1c5e..42d551dd19 100644 --- a/civicrm/CRM/Core/Permission/Joomla.php +++ b/civicrm/CRM/Core/Permission/Joomla.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Soap.php b/civicrm/CRM/Core/Permission/Soap.php index be856fcbec..b6add618a2 100644 --- a/civicrm/CRM/Core/Permission/Soap.php +++ b/civicrm/CRM/Core/Permission/Soap.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/Temp.php b/civicrm/CRM/Core/Permission/Temp.php index d8f6af1913..2f7e32850f 100644 --- a/civicrm/CRM/Core/Permission/Temp.php +++ b/civicrm/CRM/Core/Permission/Temp.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/UnitTests.php b/civicrm/CRM/Core/Permission/UnitTests.php index 1a282d9986..24879ab5a3 100644 --- a/civicrm/CRM/Core/Permission/UnitTests.php +++ b/civicrm/CRM/Core/Permission/UnitTests.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Permission/WordPress.php b/civicrm/CRM/Core/Permission/WordPress.php index d310cff5e5..9b7f8c9a5b 100644 --- a/civicrm/CRM/Core/Permission/WordPress.php +++ b/civicrm/CRM/Core/Permission/WordPress.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/PseudoConstant.php b/civicrm/CRM/Core/PseudoConstant.php index 2fdc708682..758db214ac 100644 --- a/civicrm/CRM/Core/PseudoConstant.php +++ b/civicrm/CRM/Core/PseudoConstant.php @@ -952,6 +952,23 @@ WHERE id = %1"; return self::$relationshipType[$cacheKey]; } + /** + * Name => Label pairs for all relationship types + * + * @return array + */ + public static function relationshipTypeOptions() { + $relationshipTypes = []; + $relationshipLabels = self::relationshipType(); + foreach (self::relationshipType('name') as $id => $type) { + $relationshipTypes[$type['name_a_b']] = $relationshipLabels[$id]['label_a_b']; + if ($type['name_b_a'] && $type['name_b_a'] != $type['name_a_b']) { + $relationshipTypes[$type['name_b_a']] = $relationshipLabels[$id]['label_b_a']; + } + } + return $relationshipTypes; + } + /** * Get all the ISO 4217 currency codes * diff --git a/civicrm/CRM/Core/QuickForm/Action/Jump.php b/civicrm/CRM/Core/QuickForm/Action/Jump.php index 42aefef7ef..ce819f5c6c 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Jump.php +++ b/civicrm/CRM/Core/QuickForm/Action/Jump.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_QuickForm_Action_Jump extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/Action/Next.php b/civicrm/CRM/Core/QuickForm/Action/Next.php index 8122e141b0..5903f0e708 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Next.php +++ b/civicrm/CRM/Core/QuickForm/Action/Next.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_QuickForm_Action_Next extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/Action/Process.php b/civicrm/CRM/Core/QuickForm/Action/Process.php index 5f37ef6ea2..33bb74f36c 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Process.php +++ b/civicrm/CRM/Core/QuickForm/Action/Process.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_QuickForm_Action_Process extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/Action/Refresh.php b/civicrm/CRM/Core/QuickForm/Action/Refresh.php index 4068b29952..0474a76cd8 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Refresh.php +++ b/civicrm/CRM/Core/QuickForm/Action/Refresh.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_QuickForm_Action_Refresh extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/Action/Submit.php b/civicrm/CRM/Core/QuickForm/Action/Submit.php index 233faa68be..4c4fdfa2c7 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Submit.php +++ b/civicrm/CRM/Core/QuickForm/Action/Submit.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_QuickForm_Action_Submit extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/Action/Upload.php b/civicrm/CRM/Core/QuickForm/Action/Upload.php index 130a86a058..fb999305c4 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Upload.php +++ b/civicrm/CRM/Core/QuickForm/Action/Upload.php @@ -14,7 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ class CRM_Core_QuickForm_Action_Upload extends CRM_Core_QuickForm_Action { diff --git a/civicrm/CRM/Core/QuickForm/GroupMultiSelect.php b/civicrm/CRM/Core/QuickForm/GroupMultiSelect.php index 35a959ad94..79fad90e3a 100644 --- a/civicrm/CRM/Core/QuickForm/GroupMultiSelect.php +++ b/civicrm/CRM/Core/QuickForm/GroupMultiSelect.php @@ -30,7 +30,6 @@ * * @package CRM * @copyright U.S. PIRG Education Fund 2007 - * $Id$ * */ class CRM_Core_QuickForm_GroupMultiSelect extends CRM_Core_QuickForm_NestedAdvMultiSelect { diff --git a/civicrm/CRM/Core/QuickForm/NestedAdvMultiSelect.php b/civicrm/CRM/Core/QuickForm/NestedAdvMultiSelect.php index 791ef9ef24..82e8bebbf0 100644 --- a/civicrm/CRM/Core/QuickForm/NestedAdvMultiSelect.php +++ b/civicrm/CRM/Core/QuickForm/NestedAdvMultiSelect.php @@ -30,7 +30,6 @@ * * @package CRM * @copyright U.S. PIRG Education Fund 2007 - * $Id$ * */ diff --git a/civicrm/CRM/Core/ScheduledJob.php b/civicrm/CRM/Core/ScheduledJob.php index fbf0bfd5b8..6fac4e195c 100644 --- a/civicrm/CRM/Core/ScheduledJob.php +++ b/civicrm/CRM/Core/ScheduledJob.php @@ -15,8 +15,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_ScheduledJob { @@ -61,23 +59,22 @@ class CRM_Core_ScheduledJob { } /** - * @param null $date + * Update the last_run date of this job */ - public function saveLastRun($date = NULL) { + public function saveLastRun() { $dao = new CRM_Core_DAO_Job(); $dao->id = $this->id; - $dao->last_run = ($date == NULL) ? CRM_Utils_Date::currentDBDate() : CRM_Utils_Date::currentDBDate($date); + $dao->last_run = CRM_Utils_Date::currentDBDate(); $dao->save(); } /** - * @return void + * Delete the scheduled_run_date from this job */ public function clearScheduledRunDate() { - CRM_Core_DAO::executeQuery('UPDATE civicrm_job SET scheduled_run_date = NULL WHERE id = %1', - [ - '1' => [$this->id, 'Integer'], - ]); + CRM_Core_DAO::executeQuery('UPDATE civicrm_job SET scheduled_run_date = NULL WHERE id = %1', [ + '1' => [$this->id, 'Integer'], + ]); } /** diff --git a/civicrm/CRM/Core/SelectValues.php b/civicrm/CRM/Core/SelectValues.php index 02d6545499..f7d22c826a 100644 --- a/civicrm/CRM/Core/SelectValues.php +++ b/civicrm/CRM/Core/SelectValues.php @@ -16,8 +16,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_SelectValues { @@ -1196,4 +1194,14 @@ class CRM_Core_SelectValues { ]; } + /** + * @return array + */ + public static function relationshipOrientation() { + return [ + 'a_b' => ts('A to B'), + 'b_a' => ts('B to A'), + ]; + } + } diff --git a/civicrm/CRM/Core/Selector/Base.php b/civicrm/CRM/Core/Selector/Base.php index 268f0e5842..e962019ac1 100644 --- a/civicrm/CRM/Core/Selector/Base.php +++ b/civicrm/CRM/Core/Selector/Base.php @@ -17,8 +17,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_Selector_Base { diff --git a/civicrm/CRM/Core/Selector/Controller.php b/civicrm/CRM/Core/Selector/Controller.php index 0f70941e90..0fbba210c0 100644 --- a/civicrm/CRM/Core/Selector/Controller.php +++ b/civicrm/CRM/Core/Selector/Controller.php @@ -20,8 +20,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_Selector_Controller { diff --git a/civicrm/CRM/Core/Smarty.php b/civicrm/CRM/Core/Smarty.php index 86fcab419a..1dbfe01434 100644 --- a/civicrm/CRM/Core/Smarty.php +++ b/civicrm/CRM/Core/Smarty.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.crmButton.php b/civicrm/CRM/Core/Smarty/plugins/block.crmButton.php index 8c5f573a86..390a8e7303 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.crmButton.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.crmButton.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.edit.php b/civicrm/CRM/Core/Smarty/plugins/block.edit.php index 672b3532ea..d42fe44e03 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.edit.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.edit.php @@ -19,7 +19,6 @@ * @author Piotr Szotkowski <shot@caltha.pl> * @author Michal Mach <mover@artnet.org> * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.htxt.php b/civicrm/CRM/Core/Smarty/plugins/block.htxt.php index 3758abc2e8..cfd03732c1 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.htxt.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.htxt.php @@ -14,7 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.localize.php b/civicrm/CRM/Core/Smarty/plugins/block.localize.php index fd64357e7a..ebb9f08a28 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.localize.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.localize.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.serialize.php b/civicrm/CRM/Core/Smarty/plugins/block.serialize.php index 1a9e9f2229..e716631050 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.serialize.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.serialize.php @@ -15,7 +15,6 @@ * @package CRM * @author Donald Lobo <lobo@civicrm.org> * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/block.ts.php b/civicrm/CRM/Core/Smarty/plugins/block.ts.php index b7bd379b38..f3cbd36fe9 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.ts.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.ts.php @@ -16,7 +16,6 @@ * @author Piotr Szotkowski <shot@caltha.pl> * @author Michal Mach <mover@artnet.org> * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmAPI.php b/civicrm/CRM/Core/Smarty/plugins/function.crmAPI.php index c1eae333e2..48e759dd88 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmAPI.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmAPI.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright TTTP - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmAttributes.php b/civicrm/CRM/Core/Smarty/plugins/function.crmAttributes.php index eabc3384a4..1b3146c060 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmAttributes.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmAttributes.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmGetAttribute.php b/civicrm/CRM/Core/Smarty/plugins/function.crmGetAttribute.php index 40abed3ed7..bd13b9ed2b 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmGetAttribute.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmGetAttribute.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmKey.php b/civicrm/CRM/Core/Smarty/plugins/function.crmKey.php index 63ec93388c..c0ea442692 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmKey.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmKey.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmResPath.php b/civicrm/CRM/Core/Smarty/plugins/function.crmResPath.php index 01b47198a2..0ba5c1f93b 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmResPath.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmResPath.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmResURL.php b/civicrm/CRM/Core/Smarty/plugins/function.crmResURL.php index e73e67ac33..7a9a9b947d 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmResURL.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmResURL.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmScript.php b/civicrm/CRM/Core/Smarty/plugins/function.crmScript.php index edcfd4ec58..0be2094974 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmScript.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmScript.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmSetting.php b/civicrm/CRM/Core/Smarty/plugins/function.crmSetting.php index 9360e403f3..ddf3f317b6 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmSetting.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmSetting.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright TTTP - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmSigner.php b/civicrm/CRM/Core/Smarty/plugins/function.crmSigner.php index f8ae97ad8a..a13229e41c 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmSigner.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmSigner.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmStyle.php b/civicrm/CRM/Core/Smarty/plugins/function.crmStyle.php index 4d87efcec6..32b5b0a55a 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmStyle.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmStyle.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmVersion.php b/civicrm/CRM/Core/Smarty/plugins/function.crmVersion.php index 6f9ab7c617..11805d92e3 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.crmVersion.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmVersion.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright TTTP - * $Id$ * */ diff --git a/civicrm/CRM/Core/Smarty/plugins/function.docURL.php b/civicrm/CRM/Core/Smarty/plugins/function.docURL.php index b5ebcfee45..0ca996cd14 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.docURL.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.docURL.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/function.help.php b/civicrm/CRM/Core/Smarty/plugins/function.help.php index 84a3970245..1a1a8ad8af 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.help.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.help.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/function.isValueChange.php b/civicrm/CRM/Core/Smarty/plugins/function.isValueChange.php index 4d01db10b2..7e8a2eeba9 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.isValueChange.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.isValueChange.php @@ -17,7 +17,6 @@ * @package CRM * @author Allen Shaw <allen@nswebsolutions.com> * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php b/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php index 6c02079848..37e3068652 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.sectionTotal.php @@ -17,7 +17,6 @@ * @package CRM * @author Allen Shaw <allen@nswebsolutions.com> * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.colorContrast.php b/civicrm/CRM/Core/Smarty/plugins/modifier.colorContrast.php index 6f68a3294f..a4b467a6e1 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.colorContrast.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.colorContrast.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmAddClass.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmAddClass.php index 570a853a8a..3dcc5346ea 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmAddClass.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmAddClass.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmBtnType.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmBtnType.php index 75989d8719..0062da9ca2 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmBtnType.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmBtnType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmDate.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmDate.php index b01857bd74..bef94f9d97 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmDate.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmDate.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmDelete.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmDelete.php index 6c8f4c66d2..d466a418b0 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmDelete.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmDelete.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmFirstWord.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmFirstWord.php index db39f5ec07..cfc0eee98a 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmFirstWord.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmFirstWord.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmInsert.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmInsert.php index 83687888b5..0448eefc2e 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmInsert.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmInsert.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmMoney.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmMoney.php index 49f10f7a21..c2ec12cadf 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmMoney.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmMoney.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmNumberFormat.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmNumberFormat.php index 0e7530f308..1a4009e916 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmNumberFormat.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmNumberFormat.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmReplace.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmReplace.php index 8dc174bd34..a6ea517e65 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmReplace.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmReplace.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.crmStripAlternatives.php b/civicrm/CRM/Core/Smarty/plugins/modifier.crmStripAlternatives.php index 43a4dca6ed..aa23c426c4 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.crmStripAlternatives.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.crmStripAlternatives.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.htmlize.php b/civicrm/CRM/Core/Smarty/plugins/modifier.htmlize.php index 1fb2e5fb38..23ba922180 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.htmlize.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.htmlize.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.json.php b/civicrm/CRM/Core/Smarty/plugins/modifier.json.php index 9155d8623c..06e1e3fd88 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.json.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.json.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.mb_truncate.php b/civicrm/CRM/Core/Smarty/plugins/modifier.mb_truncate.php index dd21e018a9..a58909ff05 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.mb_truncate.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.mb_truncate.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.purify.php b/civicrm/CRM/Core/Smarty/plugins/modifier.purify.php index dea422d10d..58433e08cf 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.purify.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.purify.php @@ -12,7 +12,6 @@ /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ /** diff --git a/civicrm/CRM/Core/Smarty/plugins/modifier.substring.php b/civicrm/CRM/Core/Smarty/plugins/modifier.substring.php index 8f03c6e03a..42572ccd50 100644 --- a/civicrm/CRM/Core/Smarty/plugins/modifier.substring.php +++ b/civicrm/CRM/Core/Smarty/plugins/modifier.substring.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Core/Smarty/resources/String.php b/civicrm/CRM/Core/Smarty/resources/String.php index 126b7dcde7..b533b44c78 100644 --- a/civicrm/CRM/Core/Smarty/resources/String.php +++ b/civicrm/CRM/Core/Smarty/resources/String.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * * @param $tpl_name * @param $tpl_source * @param $smarty_obj diff --git a/civicrm/CRM/Core/TableHierarchy.php b/civicrm/CRM/Core/TableHierarchy.php index 62195bd0db..835688d0ab 100644 --- a/civicrm/CRM/Core/TableHierarchy.php +++ b/civicrm/CRM/Core/TableHierarchy.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Core_TableHierarchy { diff --git a/civicrm/CRM/Core/Transaction.php b/civicrm/CRM/Core/Transaction.php index a2297bee1f..f2030606b6 100644 --- a/civicrm/CRM/Core/Transaction.php +++ b/civicrm/CRM/Core/Transaction.php @@ -14,7 +14,6 @@ * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing * @copyright David Strauss <david@fourkitchens.com> (c) 2007 - * $Id$ * * (Note: This has been considerably rewritten; the interface is preserved * for backward compatibility.) diff --git a/civicrm/CRM/Custom/Form/ChangeFieldType.php b/civicrm/CRM/Custom/Form/ChangeFieldType.php index e5436ce95d..8ba794c5cc 100644 --- a/civicrm/CRM/Custom/Form/ChangeFieldType.php +++ b/civicrm/CRM/Custom/Form/ChangeFieldType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/DeleteField.php b/civicrm/CRM/Custom/Form/DeleteField.php index 8298ec9660..c713bbdbd1 100644 --- a/civicrm/CRM/Custom/Form/DeleteField.php +++ b/civicrm/CRM/Custom/Form/DeleteField.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/DeleteGroup.php b/civicrm/CRM/Custom/Form/DeleteGroup.php index 391bfce6cd..a8e69436d4 100644 --- a/civicrm/CRM/Custom/Form/DeleteGroup.php +++ b/civicrm/CRM/Custom/Form/DeleteGroup.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/Field.php b/civicrm/CRM/Custom/Form/Field.php index a2ee643cbe..f5e6096c0e 100644 --- a/civicrm/CRM/Custom/Form/Field.php +++ b/civicrm/CRM/Custom/Form/Field.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -540,11 +538,7 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { ); // is searchable by range? - $searchRange = []; - $searchRange[] = $this->createElement('radio', NULL, NULL, ts('Yes'), '1'); - $searchRange[] = $this->createElement('radio', NULL, NULL, ts('No'), '0'); - - $this->addGroup($searchRange, 'is_search_range', ts('Search by Range?')); + $this->addRadio('is_search_range', ts('Search by Range?'), [ts('No'), ts('Yes')]); // add buttons $this->addButtons([ diff --git a/civicrm/CRM/Custom/Form/Group.php b/civicrm/CRM/Custom/Form/Group.php index dc8836b703..0c37d90374 100644 --- a/civicrm/CRM/Custom/Form/Group.php +++ b/civicrm/CRM/Custom/Form/Group.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/MoveField.php b/civicrm/CRM/Custom/Form/MoveField.php index e88a9854dc..3156bb15ad 100644 --- a/civicrm/CRM/Custom/Form/MoveField.php +++ b/civicrm/CRM/Custom/Form/MoveField.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/Option.php b/civicrm/CRM/Custom/Form/Option.php index 004e1d51a3..3bb6a5fb6c 100644 --- a/civicrm/CRM/Custom/Form/Option.php +++ b/civicrm/CRM/Custom/Form/Option.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Form/Preview.php b/civicrm/CRM/Custom/Form/Preview.php index e8a6a08dfc..102712d94d 100644 --- a/civicrm/CRM/Custom/Form/Preview.php +++ b/civicrm/CRM/Custom/Form/Preview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Import/Form/DataSource.php b/civicrm/CRM/Custom/Import/Form/DataSource.php index b7c9a6df0a..751969385c 100644 --- a/civicrm/CRM/Custom/Import/Form/DataSource.php +++ b/civicrm/CRM/Custom/Import/Form/DataSource.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Import/Parser.php b/civicrm/CRM/Custom/Import/Parser.php index c71018bb79..bc934cb0c1 100644 --- a/civicrm/CRM/Custom/Import/Parser.php +++ b/civicrm/CRM/Custom/Import/Parser.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ abstract class CRM_Custom_Import_Parser extends CRM_Contact_Import_Parser { diff --git a/civicrm/CRM/Custom/Page/AJAX.php b/civicrm/CRM/Custom/Page/AJAX.php index 3b56de1adb..78e2addf77 100644 --- a/civicrm/CRM/Custom/Page/AJAX.php +++ b/civicrm/CRM/Custom/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** @@ -93,7 +92,6 @@ class CRM_Custom_Page_AJAX { /** * Get list of Multi Record Fields. - * */ public static function getMultiRecordFieldList() { @@ -139,10 +137,6 @@ class CRM_Custom_Page_AJAX { $multiRecordFields['recordsTotal'] = $totalRecords; $multiRecordFields['recordsFiltered'] = $totalRecords; - if (!empty($_GET['is_unit_test'])) { - return $multiRecordFields; - } - CRM_Utils_JSON::output($multiRecordFields); } diff --git a/civicrm/CRM/Custom/Page/Field.php b/civicrm/CRM/Custom/Page/Field.php index d10a73dfa3..58c44f7525 100644 --- a/civicrm/CRM/Custom/Page/Field.php +++ b/civicrm/CRM/Custom/Page/Field.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Page/Group.php b/civicrm/CRM/Custom/Page/Group.php index d8a931e63d..65a6aac617 100644 --- a/civicrm/CRM/Custom/Page/Group.php +++ b/civicrm/CRM/Custom/Page/Group.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Custom/Page/Option.php b/civicrm/CRM/Custom/Page/Option.php index 7c409c7d78..855ed99b9e 100644 --- a/civicrm/CRM/Custom/Page/Option.php +++ b/civicrm/CRM/Custom/Page/Option.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dashlet/Page/Activity.php b/civicrm/CRM/Dashlet/Page/Activity.php index 8e05e0aa93..23083bbfe5 100644 --- a/civicrm/CRM/Dashlet/Page/Activity.php +++ b/civicrm/CRM/Dashlet/Page/Activity.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dashlet/Page/Blog.php b/civicrm/CRM/Dashlet/Page/Blog.php index dd605811f9..6c8cd4e7ac 100644 --- a/civicrm/CRM/Dashlet/Page/Blog.php +++ b/civicrm/CRM/Dashlet/Page/Blog.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dashlet/Page/CaseDashboard.php b/civicrm/CRM/Dashlet/Page/CaseDashboard.php index 3428e2e447..3e309d1cc4 100644 --- a/civicrm/CRM/Dashlet/Page/CaseDashboard.php +++ b/civicrm/CRM/Dashlet/Page/CaseDashboard.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dashlet/Page/GettingStarted.php b/civicrm/CRM/Dashlet/Page/GettingStarted.php index f09a490f7e..c032301c7a 100644 --- a/civicrm/CRM/Dashlet/Page/GettingStarted.php +++ b/civicrm/CRM/Dashlet/Page/GettingStarted.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dashlet/Page/MyCases.php b/civicrm/CRM/Dashlet/Page/MyCases.php index 1b643ff72d..7f336c9af6 100644 --- a/civicrm/CRM/Dashlet/Page/MyCases.php +++ b/civicrm/CRM/Dashlet/Page/MyCases.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dedupe/BAO/Rule.php b/civicrm/CRM/Dedupe/BAO/Rule.php index ab58f12321..0c40a52c58 100644 --- a/civicrm/CRM/Dedupe/BAO/Rule.php +++ b/civicrm/CRM/Dedupe/BAO/Rule.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -92,17 +90,6 @@ class CRM_Dedupe_BAO_Rule extends CRM_Dedupe_DAO_Rule { break; case 'civicrm_address': - $id = 'contact_id'; - $on[] = 't1.location_type_id = t2.location_type_id'; - $innerJoinClauses[] = 't1.location_type_id = t2.location_type_id'; - if (!empty($this->params['civicrm_address']['location_type_id'])) { - $locTypeId = CRM_Utils_Type::escape($this->params['civicrm_address']['location_type_id'], 'Integer', FALSE); - if ($locTypeId) { - $where[] = "t1.location_type_id = $locTypeId"; - } - } - break; - case 'civicrm_email': case 'civicrm_im': case 'civicrm_openid': diff --git a/civicrm/CRM/Dedupe/BAO/RuleGroup.php b/civicrm/CRM/Dedupe/BAO/RuleGroup.php index d18c6d5f82..5e1258e775 100644 --- a/civicrm/CRM/Dedupe/BAO/RuleGroup.php +++ b/civicrm/CRM/Dedupe/BAO/RuleGroup.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Dedupe/Finder.php b/civicrm/CRM/Dedupe/Finder.php index 97e8abcf51..52f6dc4a81 100644 --- a/civicrm/CRM/Dedupe/Finder.php +++ b/civicrm/CRM/Dedupe/Finder.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -252,7 +250,7 @@ class CRM_Dedupe_Finder { // the -digit to civicrm_address.location_type_id and -Primary to civicrm_address.is_primary foreach ($flat as $key => $value) { $matches = []; - if (preg_match('/(.*)-(Primary-[\d+])$|(.*)-(\d+|Primary)$/', $key, $matches)) { + if (preg_match('/(.*)-(Primary-[\d+])$|(.*)-(\d+-\d+)$|(.*)-(\d+|Primary)$/', $key, $matches)) { $return = array_values(array_filter($matches)); // make sure the first occurrence is kept, not the last $flat[$return[1]] = empty($flat[$return[1]]) ? $value : $flat[$return[1]]; diff --git a/civicrm/CRM/Dedupe/MergeHandler.php b/civicrm/CRM/Dedupe/MergeHandler.php index e48352cfd7..891bc96c90 100644 --- a/civicrm/CRM/Dedupe/MergeHandler.php +++ b/civicrm/CRM/Dedupe/MergeHandler.php @@ -1,38 +1,21 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2020 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | 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 and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | 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 (c) 2004-2020 - * * This class exists primarily for the purposes of supporting code clean up in the Merger class. * * It is expected to be fast-moving and calling it outside the refactoring work is not advised. + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing */ class CRM_Dedupe_MergeHandler { diff --git a/civicrm/CRM/Dedupe/Merger.php b/civicrm/CRM/Dedupe/Merger.php index 56d5d3473b..c4be7070d9 100644 --- a/civicrm/CRM/Dedupe/Merger.php +++ b/civicrm/CRM/Dedupe/Merger.php @@ -616,8 +616,7 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m * @throws \Civi\API\Exception\UnauthorizedException */ protected static function filterRowBasedCustomDataFromCustomTables(array &$cidRefs) { - $customTables = (array) CustomGroup::get() - ->setCheckPermissions(FALSE) + $customTables = (array) CustomGroup::get(FALSE) ->setSelect(['table_name']) ->addWhere('is_multiple', '=', 0) ->addWhere('extends', 'IN', array_merge(['Contact'], CRM_Contact_BAO_ContactType::contactTypes())) @@ -633,6 +632,30 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m } } + /** + * Update the contact with the new parameters. + * + * This function is intended as an interim function, with the intent being + * an apiv4 call. + * + * The function was calling the rather-terrifying createProfileContact. I copied all + * that code into this function and then removed all the parts that have no effect in this scenario. + * + * @param int $contactID + * @param array $params + * + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception + * @throws \Civi\API\Exception\UnauthorizedException + */ + protected static function createContact($contactID, $params) { + // This parameter causes blank fields to be be emptied out. + // We can probably remove. + $params['updateBlankLocInfo'] = TRUE; + list($data) = CRM_Contact_BAO_Contact::formatProfileContactParams($params, [], $contactID); + CRM_Contact_BAO_Contact::create($data); + } + /** * Given a contact ID, will check if a record exists in given table. * @@ -930,7 +953,8 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m unset($dupePairs[$index]); continue; } - if (($result = self::dedupePair($dupes, $mode, $checkPermissions, $cacheKeyString)) === FALSE) { + CRM_Utils_Hook::merge('flip', $dupes, $dupes['dstID'], $dupes['srcID']); + if (($result = self::dedupePair((int) $dupes['dstID'], (int) $dupes['srcID'], $mode, $checkPermissions, $cacheKeyString)) === FALSE) { unset($dupePairs[$index]); continue; } @@ -1000,7 +1024,11 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m } /** - * Compare 2 addresses to see if they are the same. + * Compare 2 addresses to see if they are the effectively the same. + * + * Being the same would mean same location type and any populated fields that describe the locationn match. + * + * Metadata fields such as is_primary, on_hold, manual_geocode may differ. * * @param array $mainAddress * @param array $comparisonAddress @@ -1020,6 +1048,39 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m return TRUE; } + /** + * Does the location array have valid data. + * + * While not UI-creatable some sites wind up with email or address rows with no actual email or address + * through non core-UI processes. + * + * @param array $location + * + * @return bool + */ + public static function locationHasData($location) { + return !empty(self::getLocationDataFields($location)); + } + + /** + * Get the location data from a location array, filtering out metadata. + * + * This returns data like street_address but not metadata like is_primary, on_hold etc. + * + * @param array $location + * + * @return mixed + */ + public static function getLocationDataFields($location) { + $keysToIgnore = array_merge(self::ignoredFields(), ['display', 'location_type_id']); + foreach ($location as $field => $value) { + if (in_array($field, $keysToIgnore, TRUE)) { + unset($location[$field]); + } + } + return $location; + } + /** * A function to build an array of information about location blocks that is * required when merging location fields @@ -1092,9 +1153,6 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m * * elements => An array of form elements for the merge UI * - * rel_table_elements => An array of form elements for the merge UI for - * entities related to the contact (eg: checkbox to move 'mailings') - * * rel_tables => Stores the tables that have related entities for the contact * for example mailings, groups * @@ -1124,7 +1182,7 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m $compareFields = self::retrieveFields($main, $other); - $rows = $elements = $relTableElements = $migrationInfo = []; + $rows = $elements = $migrationInfo = []; foreach ($compareFields['contact'] as $field) { if ($field === 'contact_sub_type') { @@ -1181,7 +1239,6 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m $mergeHandler = new CRM_Dedupe_MergeHandler((int) $mainId, (int) $otherId); $relTables = $mergeHandler->getTablesRelatedToTheMergePair(); foreach ($relTables as $name => $null) { - $relTableElements[] = ['checkbox', "move_$name"]; $migrationInfo["move_$name"] = 1; $relTables[$name]['main_url'] = str_replace('$cid', $mainId, $relTables[$name]['url']); @@ -1269,7 +1326,6 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m $result = [ 'rows' => $rows, 'elements' => $elements, - 'rel_table_elements' => $relTableElements, 'rel_tables' => $relTables, 'main_details' => $main, 'other_details' => $other, @@ -1469,8 +1525,7 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m if (!isset($submitted['suffix_id']) && !empty($migrationInfo['main_details']['suffix_id'])) { $submitted['suffix_id'] = $migrationInfo['main_details']['suffix_id']; } - $null = []; - CRM_Contact_BAO_Contact::createProfileContact($submitted, $null, $mainId); + self::createContact($mainId, $submitted); } $transaction->commit(); CRM_Utils_Hook::post('merge', 'Contact', $mainId); @@ -1863,26 +1918,22 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m /** * Dedupe a pair of contacts. * - * @param array $dupes + * @param int $mainId Id of contact to keep. + * @param int $otherId Id of contact to delete. * @param string $mode * @param bool $checkPermissions * @param string $cacheKeyString * * @return bool|array + * @throws \API_Exception * @throws \CRM_Core_Exception + * @throws \CRM_Core_Exception_ResourceConflictException * @throws \CiviCRM_API3_Exception - * @throws \API_Exception + * @throws \Civi\API\Exception\UnauthorizedException */ - protected static function dedupePair($dupes, $mode = 'safe', $checkPermissions = TRUE, $cacheKeyString = NULL) { - CRM_Utils_Hook::merge('flip', $dupes, $dupes['dstID'], $dupes['srcID']); - $mainId = $dupes['dstID']; - $otherId = $dupes['srcID']; + protected static function dedupePair(int $mainId, int $otherId, $mode = 'safe', $checkPermissions = TRUE, $cacheKeyString = NULL) { $resultStats = []; - if (!$mainId || !$otherId) { - // return error - return FALSE; - } $migrationInfo = []; $conflicts = []; // Try to lock the contacts before we load the data as we don't want it changing under us. @@ -2145,13 +2196,19 @@ INNER JOIN civicrm_membership membership2 ON membership1.membership_type_id = m // If it exists on the 'main' contact already, skip it. Otherwise // if the location type exists already, log a conflict. foreach ($migrationInfo['main_details']['location_blocks'][$fieldName] as $mainAddressKey => $mainAddressRecord) { + if (!self::locationHasData($mainAddressRecord)) { + // Go ahead & overwrite the main address - it has no data in it. + // if it is the primary address then pass that honour to the address that actually has data. + $migrationInfo['location_blocks'][$fieldName][$mainAddressKey]['set_other_primary'] = $mainAddressRecord['is_primary']; + continue; + } if (self::locationIsSame($addressRecord, $mainAddressRecord)) { unset($migrationInfo[$key]); - break; + continue; } - elseif ($addressRecordLocTypeId == $mainAddressRecord['location_type_id']) { + if ($addressRecordLocTypeId == $mainAddressRecord['location_type_id']) { $conflicts[$key] = NULL; - break; + continue; } } } diff --git a/civicrm/CRM/Event/BAO/Participant.php b/civicrm/CRM/Event/BAO/Participant.php index d05b01176d..1f19c32f74 100644 --- a/civicrm/CRM/Event/BAO/Participant.php +++ b/civicrm/CRM/Event/BAO/Participant.php @@ -1769,7 +1769,7 @@ WHERE civicrm_participant.contact_id = {$contactID} AND /** * Delete participants of contact. * - * CRM-12155 + * @see https://issues.civicrm.org/jira/browse/CRM-12155 * * @param int $contactId * Contact id. @@ -1810,7 +1810,7 @@ WHERE civicrm_participant.contact_id = {$contactID} AND ]; // create activity with target contacts - $id = CRM_Core_Session::singleton()->getLoggedInContactID(); + $id = CRM_Core_Session::getLoggedInContactID(); if ($id) { $activityParams['source_contact_id'] = $id; $activityParams['target_contact_id'][] = $contactId; @@ -1877,19 +1877,15 @@ WHERE civicrm_participant.contact_id = {$contactID} AND * Evaluate whether a participant record is eligible for self-service transfer/cancellation. If so, * return additional participant/event details. * - * TODO: BAO-level functions shouldn't set a redirect, and it should be possible to return "false" to the - * calling function. The next refactor will add a fourth param $errors, which can be passed by reference - * from the calling function. Instead of redirecting, we will return the error. - * TODO: This function should always return FALSE when self-service has been disabled on an event. - * TODO: This function fails when the "hours until self-service" is greater than 24 or less than zero. + * TODO: This function fails when the "hours until self-service" is less than zero. * @param int $participantId * @param string $url * @param bool $isBackOffice */ - public static function getSelfServiceEligibility($participantId, $url, $isBackOffice) { + public static function getSelfServiceEligibility(int $participantId, string $url, bool $isBackOffice) : array { $optionGroupId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'participant_role', 'id', 'name'); $query = " - SELECT cpst.name as status, cov.name as role, cp.fee_level, cp.fee_amount, cp.register_date, cp.status_id, ce.start_date, ce.title, cp.event_id + SELECT cpst.name as status, cov.name as role, cp.fee_level, cp.fee_amount, cp.register_date, cp.status_id, ce.start_date, ce.title, cp.event_id, ce.allow_selfcancelxfer FROM civicrm_participant cp LEFT JOIN civicrm_participant_status_type cpst ON cpst.id = cp.status_id LEFT JOIN civicrm_option_value cov ON cov.value = cp.role_id and cov.option_group_id = {$optionGroupId} @@ -1897,40 +1893,44 @@ WHERE civicrm_participant.contact_id = {$contactID} AND WHERE cp.id = {$participantId}"; $dao = CRM_Core_DAO::executeQuery($query); while ($dao->fetch()) { + $details['eligible'] = TRUE; $details['status'] = $dao->status; $details['role'] = $dao->role; $details['fee_level'] = trim($dao->fee_level, CRM_Core_DAO::VALUE_SEPARATOR); $details['fee_amount'] = $dao->fee_amount; $details['register_date'] = $dao->register_date; $details['event_start_date'] = $dao->start_date; + $details['allow_selfcancelxfer'] = $dao->allow_selfcancelxfer; $eventTitle = $dao->title; $eventId = $dao->event_id; } + if (!$details['allow_selfcancelxfer']) { + $details['eligible'] = FALSE; + $details['ineligible_message'] = ts('This event registration can not be transferred or cancelled. Contact the event organizer if you have questions.'); + return $details; + } //verify participant status is still Registered if ($details['status'] != 'Registered') { - $status = "You cannot transfer or cancel your registration for " . $eventTitle . ' as you are not currently registered for this event.'; - CRM_Core_Session::setStatus($status, ts('Sorry'), 'alert'); - CRM_Utils_System::redirect($url); + $details['eligible'] = FALSE; + $details['ineligible_message'] = "You cannot transfer or cancel your registration for " . $eventTitle . ' as you are not currently registered for this event.'; + return $details; } + // Determine if it's too late to self-service cancel/transfer. $query = "select start_date as start, selfcancelxfer_time as time from civicrm_event where id = " . $eventId; $dao = CRM_Core_DAO::executeQuery($query); while ($dao->fetch()) { $time_limit = $dao->time; $start_date = $dao->start; } - $start_time = new Datetime($start_date); $timenow = new Datetime(); - if (!$isBackOffice && !empty($start_time) && $start_time < $timenow) { - $status = ts('Registration for this event cannot be cancelled or transferred once the event has begun. Contact the event organizer if you have questions.'); - CRM_Core_Error::statusBounce($status, $url, ts('Sorry')); - } - if (!$isBackOffice && !empty($time_limit) && $time_limit > 0) { - $interval = $timenow->diff($start_time); - $days = $interval->format('%d'); - $hours = $interval->format('%h'); - if ($hours <= $time_limit && $days < 1) { - $status = ts("Registration for this event cannot be cancelled or transferred less than %1 hours prior to the event's start time. Contact the event organizer if you have questions.", [1 => $time_limit]); - CRM_Core_Error::statusBounce($status, $url, ts('Sorry')); + if (!$isBackOffice && !empty($time_limit)) { + $cancelHours = abs($time_limit); + $cancelInterval = new DateInterval("PT${cancelHours}H"); + $cancelInterval->invert = $time_limit < 0 ? 1 : 0; + $cancelDeadline = (new Datetime($start_date))->sub($cancelInterval); + if ($timenow > $cancelDeadline) { + $details['eligible'] = FALSE; + $details['ineligible_message'] = ts("Registration for this event cannot be cancelled or transferred less than %1 hours prior to the event's start time. Contact the event organizer if you have questions.", [1 => $time_limit]); } } return $details; diff --git a/civicrm/CRM/Event/BAO/ParticipantPayment.php b/civicrm/CRM/Event/BAO/ParticipantPayment.php index 754e146e4a..f8ed9a5476 100644 --- a/civicrm/CRM/Event/BAO/ParticipantPayment.php +++ b/civicrm/CRM/Event/BAO/ParticipantPayment.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_BAO_ParticipantPayment extends CRM_Event_DAO_ParticipantPayment { diff --git a/civicrm/CRM/Event/BAO/ParticipantStatusType.php b/civicrm/CRM/Event/BAO/ParticipantStatusType.php index b0166dbff2..9db56d820b 100644 --- a/civicrm/CRM/Event/BAO/ParticipantStatusType.php +++ b/civicrm/CRM/Event/BAO/ParticipantStatusType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_BAO_ParticipantStatusType extends CRM_Event_DAO_ParticipantStatusType { diff --git a/civicrm/CRM/Event/Badge.php b/civicrm/CRM/Event/Badge.php index 4600ff95d0..8e22a144f5 100644 --- a/civicrm/CRM/Event/Badge.php +++ b/civicrm/CRM/Event/Badge.php @@ -1,25 +1,11 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | 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 and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | 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 | +--------------------------------------------------------------------+ */ @@ -33,8 +19,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/ManageEvent/Location.php b/civicrm/CRM/Event/Form/ManageEvent/Location.php index 5691fa2798..61145c3d56 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Location.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Location.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php b/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php index 20e383b22f..36b4619f51 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php +++ b/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php b/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php index 6c8b5cbbc2..ebfba8f0dc 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php +++ b/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -85,6 +83,7 @@ class CRM_Event_Form_ManageEvent_TabHeader { unset($tabs['repeat']['class']); } + // @todo Move to eventcart extension // check if we're in shopping cart mode for events if (!(bool) Civi::settings()->get('enable_cart')) { unset($tabs['conference']); diff --git a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php index 9cfa7ce2da..876da092c2 100644 --- a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php +++ b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/ParticipantView.php b/civicrm/CRM/Event/Form/ParticipantView.php index efe72c2e78..1d4f0bd454 100644 --- a/civicrm/CRM/Event/Form/ParticipantView.php +++ b/civicrm/CRM/Event/Form/ParticipantView.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Registration/ParticipantConfirm.php b/civicrm/CRM/Event/Form/Registration/ParticipantConfirm.php index 4a4b95b5c0..bf8a79203d 100644 --- a/civicrm/CRM/Event/Form/Registration/ParticipantConfirm.php +++ b/civicrm/CRM/Event/Form/Registration/ParticipantConfirm.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -23,10 +21,11 @@ * */ class CRM_Event_Form_Registration_ParticipantConfirm extends CRM_Event_Form_Registration { - // optional credit card return status code + /** - * CRM-6060 + * Optional credit card return status code * @var string + * @see https://issues.civicrm.org/jira/browse/CRM-6060 */ protected $_cc = NULL; diff --git a/civicrm/CRM/Event/Form/Registration/Register.php b/civicrm/CRM/Event/Form/Registration/Register.php index 80e3f7c72f..e44c213172 100644 --- a/civicrm/CRM/Event/Form/Registration/Register.php +++ b/civicrm/CRM/Event/Form/Registration/Register.php @@ -45,9 +45,9 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { * Skip duplicate check. * * This can be set using hook_civicrm_buildForm() to override the registration dupe check. - * CRM-7604 * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-7604 */ public $_skipDupeRegistrationCheck = FALSE; @@ -629,6 +629,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { } } } + $form->_priceSet['id'] = $form->_priceSet['id'] ?? $form->_priceSetId; $form->assign('priceSet', $form->_priceSet); } else { diff --git a/civicrm/CRM/Event/Form/Registration/ThankYou.php b/civicrm/CRM/Event/Form/Registration/ThankYou.php index 4f9898b540..12dbd1abfa 100644 --- a/civicrm/CRM/Event/Form/Registration/ThankYou.php +++ b/civicrm/CRM/Event/Form/Registration/ThankYou.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Search.php b/civicrm/CRM/Event/Form/Search.php index 8cb0c34121..3000110687 100644 --- a/civicrm/CRM/Event/Form/Search.php +++ b/civicrm/CRM/Event/Form/Search.php @@ -285,8 +285,6 @@ class CRM_Event_Form_Search extends CRM_Core_Form_Search { $this->_formValues["participant_test"] = 0; } - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - $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/SearchEvent.php b/civicrm/CRM/Event/Form/SearchEvent.php index 31f0951192..269eeb3650 100644 --- a/civicrm/CRM/Event/Form/SearchEvent.php +++ b/civicrm/CRM/Event/Form/SearchEvent.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Form_SearchEvent extends CRM_Core_Form { diff --git a/civicrm/CRM/Event/Form/SelfSvcTransfer.php b/civicrm/CRM/Event/Form/SelfSvcTransfer.php index 5d72f2aaa3..1d5ac36d72 100644 --- a/civicrm/CRM/Event/Form/SelfSvcTransfer.php +++ b/civicrm/CRM/Event/Form/SelfSvcTransfer.php @@ -137,7 +137,7 @@ class CRM_Event_Form_SelfSvcTransfer extends CRM_Core_Form { $this->_userContext = $session->readUserContext(); $this->_from_participant_id = CRM_Utils_Request::retrieve('pid', 'Positive', $this, FALSE, NULL, 'REQUEST'); $this->_userChecksum = CRM_Utils_Request::retrieve('cs', 'String', $this, FALSE, NULL, 'REQUEST'); - $this->isBackoffice = CRM_Utils_Request::retrieve('is_backoffice', 'String', $this, FALSE, NULL, 'REQUEST'); + $this->isBackoffice = CRM_Utils_Request::retrieve('is_backoffice', 'String', $this, FALSE, NULL, 'REQUEST') ?? FALSE; $params = ['id' => $this->_from_participant_id]; $participant = $values = []; $this->_participant = CRM_Event_BAO_Participant::getValues($params, $values, $participant); @@ -165,6 +165,9 @@ class CRM_Event_Form_SelfSvcTransfer extends CRM_Core_Form { $details = CRM_Event_BAO_Participant::participantDetails($this->_from_participant_id); $selfServiceDetails = CRM_Event_BAO_Participant::getSelfServiceEligibility($this->_from_participant_id, $url, $this->isBackoffice); + if (!$selfServiceDetails['eligible']) { + CRM_Core_Error::statusBounce($selfServiceDetails['ineligible_message'], $url, ts('Sorry')); + } $details = array_merge($details, $selfServiceDetails); $this->assign('details', $details); //This participant row will be cancelled. Get line item(s) to cancel diff --git a/civicrm/CRM/Event/Form/SelfSvcUpdate.php b/civicrm/CRM/Event/Form/SelfSvcUpdate.php index 33b9f7f3f8..a87d7aff27 100644 --- a/civicrm/CRM/Event/Form/SelfSvcUpdate.php +++ b/civicrm/CRM/Event/Form/SelfSvcUpdate.php @@ -110,7 +110,7 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form { $participant = $values = []; $this->_participant_id = CRM_Utils_Request::retrieve('pid', 'Positive', $this, FALSE, NULL, 'REQUEST'); $this->_userChecksum = CRM_Utils_Request::retrieve('cs', 'String', $this, FALSE, NULL, 'REQUEST'); - $this->isBackoffice = CRM_Utils_Request::retrieve('is_backoffice', 'String', $this, FALSE, NULL, 'REQUEST'); + $this->isBackoffice = CRM_Utils_Request::retrieve('is_backoffice', 'String', $this, FALSE, FALSE, 'REQUEST') ?? FALSE; $params = ['id' => $this->_participant_id]; $this->_participant = CRM_Event_BAO_Participant::getValues($params, $values, $participant); $this->_part_values = $values[$this->_participant_id]; @@ -140,6 +140,9 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form { $contributionId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $this->_participant_id, 'contribution_id', 'participant_id'); $this->assign('contributionId', $contributionId); $selfServiceDetails = CRM_Event_BAO_Participant::getSelfServiceEligibility($this->_participant_id, $url, $this->isBackoffice); + if (!$selfServiceDetails['eligible']) { + CRM_Core_Error::statusBounce($selfServiceDetails['ineligible_message'], $url, ts('Sorry')); + } $details = array_merge($details, $selfServiceDetails); $this->assign('details', $details); $this->selfsvcupdateUrl = CRM_Utils_System::url('civicrm/event/selfsvcupdate', "reset=1&id={$this->_participant_id}&id=0"); diff --git a/civicrm/CRM/Event/Form/Task.php b/civicrm/CRM/Event/Form/Task.php index 62773152d9..18962108a6 100644 --- a/civicrm/CRM/Event/Form/Task.php +++ b/civicrm/CRM/Event/Form/Task.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/AddToGroup.php b/civicrm/CRM/Event/Form/Task/AddToGroup.php index 87c47c3fa6..11a7f3fca7 100644 --- a/civicrm/CRM/Event/Form/Task/AddToGroup.php +++ b/civicrm/CRM/Event/Form/Task/AddToGroup.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/Cancel.php b/civicrm/CRM/Event/Form/Task/Cancel.php index d52e55bf93..71a29f9d89 100644 --- a/civicrm/CRM/Event/Form/Task/Cancel.php +++ b/civicrm/CRM/Event/Form/Task/Cancel.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/Delete.php b/civicrm/CRM/Event/Form/Task/Delete.php index d84c977c2f..a1df319e1b 100644 --- a/civicrm/CRM/Event/Form/Task/Delete.php +++ b/civicrm/CRM/Event/Form/Task/Delete.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/ParticipantStatus.php b/civicrm/CRM/Event/Form/Task/ParticipantStatus.php index 9d16a25cd2..5c54e6f782 100644 --- a/civicrm/CRM/Event/Form/Task/ParticipantStatus.php +++ b/civicrm/CRM/Event/Form/Task/ParticipantStatus.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Form_Task_ParticipantStatus extends CRM_Event_Form_Task_Batch { diff --git a/civicrm/CRM/Event/Form/Task/PickProfile.php b/civicrm/CRM/Event/Form/Task/PickProfile.php index 00d4012d94..d120f81b5f 100644 --- a/civicrm/CRM/Event/Form/Task/PickProfile.php +++ b/civicrm/CRM/Event/Form/Task/PickProfile.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/Print.php b/civicrm/CRM/Event/Form/Task/Print.php index 207528c5d0..c64e92f9b1 100644 --- a/civicrm/CRM/Event/Form/Task/Print.php +++ b/civicrm/CRM/Event/Form/Task/Print.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/Result.php b/civicrm/CRM/Event/Form/Task/Result.php index a3a5ea00fb..8c692686a1 100644 --- a/civicrm/CRM/Event/Form/Task/Result.php +++ b/civicrm/CRM/Event/Form/Task/Result.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/SaveSearch.php b/civicrm/CRM/Event/Form/Task/SaveSearch.php index 6f32217a7f..32f54f67f2 100644 --- a/civicrm/CRM/Event/Form/Task/SaveSearch.php +++ b/civicrm/CRM/Event/Form/Task/SaveSearch.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/SaveSearch/Update.php b/civicrm/CRM/Event/Form/Task/SaveSearch/Update.php index f61fc194db..4cb6e006f3 100644 --- a/civicrm/CRM/Event/Form/Task/SaveSearch/Update.php +++ b/civicrm/CRM/Event/Form/Task/SaveSearch/Update.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Form/Task/SearchTaskHookSample.php b/civicrm/CRM/Event/Form/Task/SearchTaskHookSample.php index 43d5e6bc73..efc940e574 100644 --- a/civicrm/CRM/Event/Form/Task/SearchTaskHookSample.php +++ b/civicrm/CRM/Event/Form/Task/SearchTaskHookSample.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Import/Controller.php b/civicrm/CRM/Event/Import/Controller.php index 57daa15a0b..baf5521a88 100644 --- a/civicrm/CRM/Event/Import/Controller.php +++ b/civicrm/CRM/Event/Import/Controller.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Import_Controller extends CRM_Core_Controller { diff --git a/civicrm/CRM/Event/Import/Form/DataSource.php b/civicrm/CRM/Event/Import/Form/DataSource.php index 78b246feea..c97c9d7fdb 100644 --- a/civicrm/CRM/Event/Import/Form/DataSource.php +++ b/civicrm/CRM/Event/Import/Form/DataSource.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -35,19 +33,11 @@ class CRM_Event_Import_Form_DataSource extends CRM_Import_Form_DataSource { parent::buildQuickForm(); $duplicateOptions = []; - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Skip'), CRM_Import_Parser::DUPLICATE_SKIP - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Update'), CRM_Import_Parser::DUPLICATE_UPDATE - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('No Duplicate Checking'), CRM_Import_Parser::DUPLICATE_NOCHECK - ); - $this->addGroup($duplicateOptions, 'onDuplicate', - ts('On Duplicate Entries') - ); - + $this->addRadio('onDuplicate', ts('On Duplicate Entries'), [ + CRM_Import_Parser::DUPLICATE_SKIP => ts('Skip'), + CRM_Import_Parser::DUPLICATE_UPDATE => ts('Update'), + CRM_Import_Parser::DUPLICATE_NOCHECK => ts('No Duplicate Checking'), + ]); $this->setDefaults(['onDuplicate' => CRM_Import_Parser::DUPLICATE_SKIP]); $this->addContactTypeSelector(); diff --git a/civicrm/CRM/Event/Import/Form/MapField.php b/civicrm/CRM/Event/Import/Form/MapField.php index f208534d4a..8182aa80db 100644 --- a/civicrm/CRM/Event/Import/Form/MapField.php +++ b/civicrm/CRM/Event/Import/Form/MapField.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Import/Form/Preview.php b/civicrm/CRM/Event/Import/Form/Preview.php index 71ac2a1719..0a7e5ca96d 100644 --- a/civicrm/CRM/Event/Import/Form/Preview.php +++ b/civicrm/CRM/Event/Import/Form/Preview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Import/Form/Summary.php b/civicrm/CRM/Event/Import/Form/Summary.php index 917c69c0b8..42beb0d376 100644 --- a/civicrm/CRM/Event/Import/Form/Summary.php +++ b/civicrm/CRM/Event/Import/Form/Summary.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Import/Parser.php b/civicrm/CRM/Event/Import/Parser.php index c1ec6a7989..46e74961b9 100644 --- a/civicrm/CRM/Event/Import/Parser.php +++ b/civicrm/CRM/Event/Import/Parser.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ abstract class CRM_Event_Import_Parser extends CRM_Import_Parser { diff --git a/civicrm/CRM/Event/Import/Parser/Participant.php b/civicrm/CRM/Event/Import/Parser/Participant.php index bb1703c835..5ed2fecfbc 100644 --- a/civicrm/CRM/Event/Import/Parser/Participant.php +++ b/civicrm/CRM/Event/Import/Parser/Participant.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ require_once 'CRM/Utils/DeprecatedUtils.php'; diff --git a/civicrm/CRM/Event/Info.php b/civicrm/CRM/Event/Info.php index 6cc453aa20..a468dc5163 100644 --- a/civicrm/CRM/Event/Info.php +++ b/civicrm/CRM/Event/Info.php @@ -16,8 +16,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Info extends CRM_Core_Component_Info { diff --git a/civicrm/CRM/Event/Page/AJAX.php b/civicrm/CRM/Event/Page/AJAX.php index 6d68ed6725..6de7690947 100644 --- a/civicrm/CRM/Event/Page/AJAX.php +++ b/civicrm/CRM/Event/Page/AJAX.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Page/EventInfo.php b/civicrm/CRM/Event/Page/EventInfo.php index 265b3f5dfe..83671166ab 100644 --- a/civicrm/CRM/Event/Page/EventInfo.php +++ b/civicrm/CRM/Event/Page/EventInfo.php @@ -272,21 +272,11 @@ class CRM_Event_Page_EventInfo extends CRM_Core_Page { $registerText = $values['event']['registration_link_text']; } - // check if we're in shopping cart mode for events - $enable_cart = Civi::settings()->get('enable_cart'); - if ($enable_cart) { - $link = CRM_Event_Cart_BAO_EventInCart::get_registration_link($this->_id); - $registerText = $link['label']; - - $url = CRM_Utils_System::url($link['path'], $link['query'] . $action_query, FALSE, NULL, TRUE, TRUE); - } - //Fixed for CRM-4855 $allowRegistration = CRM_Event_BAO_Event::showHideRegistrationLink($values); $this->assign('registerText', $registerText); $this->assign('registerURL', $url); - $this->assign('eventCartEnabled', $enable_cart); } } elseif (CRM_Core_Permission::check('register for events')) { diff --git a/civicrm/CRM/Event/Page/List.php b/civicrm/CRM/Event/Page/List.php index e3f4a08618..ffeae8ba92 100644 --- a/civicrm/CRM/Event/Page/List.php +++ b/civicrm/CRM/Event/Page/List.php @@ -23,13 +23,12 @@ class CRM_Event_Page_List extends CRM_Core_Page { $info = CRM_Event_BAO_Event::getCompleteInfo($start, $type, $id, $end); $this->assign('events', $info); + // @todo Move this to eventcart extension // check if we're in shopping cart mode for events - $enable_cart = (bool) Civi::settings()->get('enable_cart'); - $this->assign('eventCartEnabled', $enable_cart); - - if ($enable_cart) { + if ((bool) Civi::settings()->get('enable_cart')) { $this->assign('registration_links', TRUE); } + return parent::run(); } diff --git a/civicrm/CRM/Event/Page/ManageEvent.php b/civicrm/CRM/Event/Page/ManageEvent.php index bc7badd236..08dc44dfbb 100644 --- a/civicrm/CRM/Event/Page/ManageEvent.php +++ b/civicrm/CRM/Event/Page/ManageEvent.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -125,13 +123,15 @@ class CRM_Event_Page_ManageEvent extends CRM_Core_Page { /** * Get tab Links for events. * - * @param $enableCart - * * @return array * (reference) of tab links + * @throws \CiviCRM_API3_Exception */ public static function &tabs() { - $enableCart = Civi::settings()->get('enable_cart'); + // @todo Move to eventcart extension + // check if we're in shopping cart mode for events + $enableCart = (bool) Civi::settings()->get('enable_cart'); + $cacheKey = $enableCart ? 1 : 0; if (!(self::$_tabLinks)) { self::$_tabLinks = []; @@ -342,9 +342,6 @@ ORDER BY start_date desc while ($pcpDao->fetch()) { $eventPCPS[$pcpDao->entity_id] = $pcpDao->entity_id; } - // check if we're in shopping cart mode for events - $enableCart = Civi::settings()->get('enable_cart'); - $this->assign('eventCartEnabled', $enableCart); $mapping = CRM_Utils_Array::first(CRM_Core_BAO_ActionSchedule::getMappings([ 'id' => CRM_Event_ActionMapping::EVENT_NAME_MAPPING_ID, ])); @@ -428,7 +425,7 @@ ORDER BY start_date desc } } - $manageEvent['tab'] = self::tabs($enableCart); + $manageEvent['tab'] = self::tabs(); $this->assign('rows', $manageEvent); $statusTypes = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 1', 'label'); diff --git a/civicrm/CRM/Event/Page/ParticipantListing.php b/civicrm/CRM/Event/Page/ParticipantListing.php index 6c5ddf07c5..6d58554a37 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing.php +++ b/civicrm/CRM/Event/Page/ParticipantListing.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_ParticipantListing extends CRM_Core_Page { diff --git a/civicrm/CRM/Event/Page/ParticipantListing/Name.php b/civicrm/CRM/Event/Page/ParticipantListing/Name.php index f40bf1d9d9..1792d2efee 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing/Name.php +++ b/civicrm/CRM/Event/Page/ParticipantListing/Name.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_ParticipantListing_Name extends CRM_Event_Page_ParticipantListing_Simple { diff --git a/civicrm/CRM/Event/Page/ParticipantListing/NameAndEmail.php b/civicrm/CRM/Event/Page/ParticipantListing/NameAndEmail.php index aed4bf5231..c1c1f9838f 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing/NameAndEmail.php +++ b/civicrm/CRM/Event/Page/ParticipantListing/NameAndEmail.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_ParticipantListing_NameAndEmail extends CRM_Event_Page_ParticipantListing_Simple { diff --git a/civicrm/CRM/Event/Page/ParticipantListing/NameStatusAndDate.php b/civicrm/CRM/Event/Page/ParticipantListing/NameStatusAndDate.php index 8277180b52..43b5aff703 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing/NameStatusAndDate.php +++ b/civicrm/CRM/Event/Page/ParticipantListing/NameStatusAndDate.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_ParticipantListing_NameStatusAndDate extends CRM_Core_Page { diff --git a/civicrm/CRM/Event/Page/ParticipantListing/Simple.php b/civicrm/CRM/Event/Page/ParticipantListing/Simple.php index 1341eb834b..58368dce2e 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing/Simple.php +++ b/civicrm/CRM/Event/Page/ParticipantListing/Simple.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_ParticipantListing_Simple extends CRM_Core_Page { diff --git a/civicrm/CRM/Event/Page/Tab.php b/civicrm/CRM/Event/Page/Tab.php index c9d1836026..ab29c9ce35 100644 --- a/civicrm/CRM/Event/Page/Tab.php +++ b/civicrm/CRM/Event/Page/Tab.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Event_Page_Tab extends CRM_Core_Page { diff --git a/civicrm/CRM/Event/Page/UserDashboard.php b/civicrm/CRM/Event/Page/UserDashboard.php index 0505d610ce..39097caa46 100644 --- a/civicrm/CRM/Event/Page/UserDashboard.php +++ b/civicrm/CRM/Event/Page/UserDashboard.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/PseudoConstant.php b/civicrm/CRM/Event/PseudoConstant.php index d99496720c..2ff32e629e 100644 --- a/civicrm/CRM/Event/PseudoConstant.php +++ b/civicrm/CRM/Event/PseudoConstant.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Selector/Search.php b/civicrm/CRM/Event/Selector/Search.php index adbc83513f..fdcaf58df1 100644 --- a/civicrm/CRM/Event/Selector/Search.php +++ b/civicrm/CRM/Event/Selector/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Event/Task.php b/civicrm/CRM/Event/Task.php index 6d54227016..24e2bd6b26 100644 --- a/civicrm/CRM/Event/Task.php +++ b/civicrm/CRM/Event/Task.php @@ -12,7 +12,6 @@ /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Event/xml/Menu/Event.xml b/civicrm/CRM/Event/xml/Menu/Event.xml index fda18a1b92..105ef9c087 100644 --- a/civicrm/CRM/Event/xml/Menu/Event.xml +++ b/civicrm/CRM/Event/xml/Menu/Event.xml @@ -128,13 +128,13 @@ <weight>399</weight> </item> <item> - <path>civicrm/admin/options/conference_slot</path> - <title>Conference Slot Labels</title> - <page_callback>CRM_Admin_Page_Options</page_callback> - <desc>Define conference slots and labels.</desc> - <access_arguments>administer CiviCRM,access CiviEvent</access_arguments> - <adminGroup>CiviEvent</adminGroup> - <weight>415</weight> + <path>civicrm/admin/options/conference_slot</path> + <title>Conference Slot Labels</title> + <page_callback>CRM_Admin_Page_Options</page_callback> + <desc>Define conference slots and labels.</desc> + <access_arguments>administer CiviCRM,access CiviEvent</access_arguments> + <adminGroup>CiviEvent</adminGroup> + <weight>415</weight> </item> <item> <path>civicrm/admin/setting/preferences/event</path> @@ -225,12 +225,12 @@ <weight>960</weight> </item> <item> - <path>civicrm/event/manage/conference</path> - <title>Conference Slots</title> - <page_callback>CRM_Event_Form_ManageEvent_Conference</page_callback> - <access_arguments>access CiviEvent</access_arguments> - <is_ssl>true</is_ssl> - <weight>950</weight> + <path>civicrm/event/manage/conference</path> + <title>Conference Slots</title> + <page_callback>CRM_Event_Form_ManageEvent_Conference</page_callback> + <access_arguments>access CiviEvent</access_arguments> + <is_ssl>true</is_ssl> + <weight>950</weight> </item> <item> <path>civicrm/event/add</path> @@ -297,50 +297,6 @@ <page_callback>CRM_Core_Page_AJAX_Location::getLocBlock</page_callback> <access_arguments>access CiviEvent</access_arguments> </item> - <item> - <path>civicrm/ajax/event/add_participant_to_cart</path> - <page_callback>CRM_Event_Cart_Page_CheckoutAJAX::add_participant_to_cart</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - </item> - <item> - <path>civicrm/ajax/event/remove_participant_from_cart</path> - <page_callback>CRM_Event_Cart_Page_CheckoutAJAX::remove_participant_from_cart</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - </item> - <item> - <path>civicrm/event/add_to_cart</path> - <title>Add Event To Cart</title> - <page_callback>CRM_Event_Cart_Page_AddToCart</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - <is_ssl>false</is_ssl> - </item> - <item> - <path>civicrm/event/cart_checkout</path> - <title>Cart Checkout</title> - <page_callback>CRM_Event_Cart_Controller_Checkout</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - <is_ssl>true</is_ssl> - </item> - <item> - <path>civicrm/event/remove_from_cart</path> - <title>Remove From Cart</title> - <page_callback>CRM_Event_Cart_Page_RemoveFromCart</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - <is_ssl>false</is_ssl> - </item> - <item> - <path>civicrm/event/view_cart</path> - <title>View Cart</title> - <page_callback>CRM_Event_Cart_Page_ViewCart</page_callback> - <access_callback>1</access_callback> - <is_public>true</is_public> - <is_ssl>false</is_ssl> - </item> <item> <path>civicrm/event/participant/feeselection</path> <title>Change Registration Selections</title> diff --git a/civicrm/CRM/Export/BAO/Export.php b/civicrm/CRM/Export/BAO/Export.php index 83e2fa5ba2..575aa9af24 100644 --- a/civicrm/CRM/Export/BAO/Export.php +++ b/civicrm/CRM/Export/BAO/Export.php @@ -132,7 +132,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c $addPaymentHeader = FALSE; - list($outputColumns, $metadata) = $processor->getExportStructureArrays(); + list($outputColumns) = $processor->getExportStructureArrays(); if ($processor->isMergeSameAddress()) { foreach (array_keys($processor->getAdditionalFieldsForSameAddressMerge()) as $field) { @@ -185,7 +185,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c while ($iterationDAO->fetch()) { $count++; $rowsThisIteration++; - $row = $processor->buildRow($query, $iterationDAO, $outputColumns, $metadata, $paymentDetails, $addPaymentHeader); + $row = $processor->buildRow($query, $iterationDAO, $outputColumns, $paymentDetails, $addPaymentHeader); if ($row === FALSE) { continue; } diff --git a/civicrm/CRM/Export/BAO/ExportProcessor.php b/civicrm/CRM/Export/BAO/ExportProcessor.php index 03e64b31b2..1dc733d9fd 100644 --- a/civicrm/CRM/Export/BAO/ExportProcessor.php +++ b/civicrm/CRM/Export/BAO/ExportProcessor.php @@ -781,7 +781,8 @@ class CRM_Export_BAO_ExportProcessor { $query = new CRM_Contact_BAO_Query($params, $returnProperties, NULL, FALSE, FALSE, $this->getQueryMode(), - FALSE, TRUE, TRUE, NULL, $this->getQueryOperator() + FALSE, TRUE, TRUE, NULL, $this->getQueryOperator(), + NULL, TRUE ); //sort by state @@ -869,8 +870,8 @@ class CRM_Export_BAO_ExportProcessor { // These oddly constructed keys are for legacy reasons. Altering them will affect test success // but in time it may be good to rationalise them. $label = $this->getOutputSpecificationLabel($key, $relationshipType, $locationType, $entityLabel); - $index = $this->getOutputSpecificationIndex($key, $relationshipType, $locationType, $entityLabel); - $fieldKey = $this->getOutputSpecificationFieldKey($key, $relationshipType, $locationType, $entityLabel); + $index = $this->getOutputSpecificationIndex($key, $relationshipType, $locationType, $entityTypeID); + $fieldKey = $this->getOutputSpecificationFieldKey($key, $relationshipType, $locationType, $entityTypeID); $this->outputSpecification[$index]['header'] = $label; $this->outputSpecification[$index]['sql_columns'] = $this->getSqlColumnDefinition($fieldKey, $key); @@ -960,13 +961,12 @@ class CRM_Export_BAO_ExportProcessor { * @param \CRM_Contact_BAO_Query $query * @param CRM_Core_DAO $iterationDAO * @param array $outputColumns - * @param $metadata * @param $paymentDetails * @param $addPaymentHeader * * @return array|bool */ - public function buildRow($query, $iterationDAO, $outputColumns, $metadata, $paymentDetails, $addPaymentHeader) { + public function buildRow($query, $iterationDAO, $outputColumns, $paymentDetails, $addPaymentHeader) { $paymentTableId = $this->getPaymentTableID(); if ($this->isHouseholdToSkip($iterationDAO->contact_id)) { return FALSE; @@ -1020,7 +1020,7 @@ class CRM_Export_BAO_ExportProcessor { $this->buildRelationshipFieldsForRow($row, $iterationDAO->contact_id, $value, $field); } else { - $row[$field] = $this->getTransformedFieldValue($field, $iterationDAO, $fieldValue, $metadata, $paymentDetails); + $row[$field] = $this->getTransformedFieldValue($field, $iterationDAO, $fieldValue, $paymentDetails); } } @@ -1082,12 +1082,13 @@ class CRM_Export_BAO_ExportProcessor { * @param $field * @param $iterationDAO * @param $fieldValue - * @param $metadata * @param $paymentDetails * * @return string + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception */ - public function getTransformedFieldValue($field, $iterationDAO, $fieldValue, $metadata, $paymentDetails) { + public function getTransformedFieldValue($field, $iterationDAO, $fieldValue, $paymentDetails) { $i18n = CRM_Core_I18n::singleton(); if ($field == 'id') { @@ -1145,31 +1146,26 @@ class CRM_Export_BAO_ExportProcessor { return $i18n->crm_translate($fieldValue); default: - if (isset($metadata[$field])) { - // No I don't know why we do it this way & whether we could - // make better use of pseudoConstants. - if (!empty($metadata[$field]['context'])) { - return $i18n->crm_translate($fieldValue, $metadata[$field]); - } - if (!empty($metadata[$field]['pseudoconstant'])) { - if (!empty($metadata[$field]['bao'])) { - return CRM_Core_PseudoConstant::getLabel($metadata[$field]['bao'], $metadata[$field]['name'], $fieldValue); - } - // This is not our normal syntax for pseudoconstants but I am a bit loath to - // call an external function until sure it is not increasing php processing given this - // may be iterated 100,000 times & we already have the $imProvider var loaded. - // That can be next refactor... - // Yes - definitely feeling hatred for this bit of code - I know you will beat me up over it's awfulness - // but I have to reach a stable point.... - $varName = $metadata[$field]['pseudoconstant']['var']; - if ($varName === 'imProviders') { - return CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_IM', 'provider_id', $fieldValue); - } - if ($varName === 'phoneTypes') { - return CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_Phone', 'phone_type_id', $fieldValue); + $fieldSpec = $this->outputSpecification[$this->getMungedFieldName($field)]['metadata']; + // No I don't know why we do it this way & whether we could + // make better use of pseudoConstants. + if (!empty($fieldSpec['context'])) { + return $i18n->crm_translate($fieldValue, $fieldSpec); + } + if (!empty($fieldSpec['pseudoconstant']) && !empty($fieldSpec['hasLocationType'])) { + if (!empty($fieldSpec['bao'])) { + $transformedValue = CRM_Core_PseudoConstant::getLabel($fieldSpec['bao'], $fieldSpec['name'], $fieldValue); + if ($transformedValue) { + return $transformedValue; } + return $fieldValue; + } + // Yes - definitely feeling hatred for this bit of code - I know you will beat me up over it's awfulness + // but I have to reach a stable point.... + $varName = $fieldSpec['pseudoconstant']['var']; + if ($varName === 'imProviders') { + return CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_IM', 'provider_id', $fieldValue); } - } return $fieldValue; } @@ -1559,12 +1555,6 @@ class CRM_Export_BAO_ExportProcessor { * @return string */ protected function getOutputSpecificationIndex($key, $relationshipType, $locationType, $entityLabel) { - if ($entityLabel || $key === 'im') { - // Just cos that's the history... - if ($key !== 'master_id') { - $key = $this->getHeaderForRow($key); - } - } if (!$relationshipType || $key !== 'id') { $key = $this->getMungedFieldName($key); } @@ -1612,12 +1602,6 @@ class CRM_Export_BAO_ExportProcessor { * @return string */ protected function getOutputSpecificationFieldKey($key, $relationshipType, $locationType, $entityLabel) { - if ($entityLabel || $key === 'im') { - if ($key !== 'state_province' && $key !== 'id') { - // @todo - test removing this - indexing by $key should be fine... - $key = $this->getHeaderForRow($key); - } - } if (!$relationshipType || $key !== 'id') { $key = $this->getMungedFieldName($key); } @@ -1704,7 +1688,7 @@ class CRM_Export_BAO_ExportProcessor { * yet find a way to comment them for posterity. */ public function getExportStructureArrays() { - $outputColumns = $metadata = []; + $outputColumns = []; $queryFields = $this->getQueryFields(); foreach ($this->getReturnProperties() as $key => $value) { if (($key != 'location' || !is_array($value)) && !$this->isRelationshipTypeKey($key)) { @@ -1741,13 +1725,12 @@ class CRM_Export_BAO_ExportProcessor { $daoFieldName .= "-" . $type[1]; } $this->addOutputSpecification($actualDBFieldName, NULL, $locationType, CRM_Utils_Array::value(1, $type)); - $metadata[$daoFieldName] = $this->getMetaDataForField($actualDBFieldName); $outputColumns[$daoFieldName] = TRUE; } } } } - return [$outputColumns, $metadata]; + return [$outputColumns]; } /** @@ -2082,13 +2065,13 @@ WHERE id IN ( $deleteIDString ) */ public function getPreview($limit) { $rows = []; - list($outputColumns, $metadata) = $this->getExportStructureArrays(); + list($outputColumns) = $this->getExportStructureArrays(); $query = $this->runQuery([], ''); CRM_Core_DAO::disableFullGroupByMode(); $result = CRM_Core_DAO::executeQuery($query[1] . ' LIMIT ' . (int) $limit); CRM_Core_DAO::reenableFullGroupByMode(); while ($result->fetch()) { - $rows[] = $this->buildRow($query[0], $result, $outputColumns, $metadata, [], []); + $rows[] = $this->buildRow($query[0], $result, $outputColumns, [], []); } return $rows; } diff --git a/civicrm/CRM/Export/Form/Map.php b/civicrm/CRM/Export/Form/Map.php index 65ada5bc35..a4f64d533f 100644 --- a/civicrm/CRM/Export/Form/Map.php +++ b/civicrm/CRM/Export/Form/Map.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Export/Form/Select.php b/civicrm/CRM/Export/Form/Select.php index 04ac33617a..3570008e59 100644 --- a/civicrm/CRM/Export/Form/Select.php +++ b/civicrm/CRM/Export/Form/Select.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Extension/Manager/Report.php b/civicrm/CRM/Extension/Manager/Report.php index bd8b5d67a7..da14a38b21 100644 --- a/civicrm/CRM/Extension/Manager/Report.php +++ b/civicrm/CRM/Extension/Manager/Report.php @@ -24,7 +24,10 @@ class CRM_Extension_Manager_Report extends CRM_Extension_Manager_Base { */ public function __construct() { parent::__construct(TRUE); - $this->groupId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', + } + + public function getGroupId() { + return CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', self::REPORT_GROUP_NAME, 'id', 'name' ); } @@ -51,7 +54,7 @@ class CRM_Extension_Manager_Report extends CRM_Extension_Manager_Base { throw new CRM_Core_Exception(ts('Component for which you are trying to install the extension (%1) is currently disabled.', [1 => $info->typeInfo['component']])); } $weight = CRM_Utils_Weight::getDefaultWeight('CRM_Core_DAO_OptionValue', - ['option_group_id' => $this->groupId] + ['option_group_id' => $this->getGroupId()] ); $params = [ 'label' => $info->label . ' (' . $info->key . ')', @@ -60,7 +63,7 @@ class CRM_Extension_Manager_Report extends CRM_Extension_Manager_Base { 'weight' => $weight, 'description' => $info->label . ' (' . $info->key . ')', 'component_id' => $compId, - 'option_group_id' => $this->groupId, + 'option_group_id' => $this->getGroupId(), 'is_active' => 1, ]; diff --git a/civicrm/CRM/Extension/Manager/Search.php b/civicrm/CRM/Extension/Manager/Search.php index d498711f52..13ec3bca1e 100644 --- a/civicrm/CRM/Extension/Manager/Search.php +++ b/civicrm/CRM/Extension/Manager/Search.php @@ -24,7 +24,10 @@ class CRM_Extension_Manager_Search extends CRM_Extension_Manager_Base { */ public function __construct() { parent::__construct(TRUE); - $this->groupId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', + } + + public function getGroupId() { + return CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', self::CUSTOM_SEARCH_GROUP_NAME, 'id', 'name' ); } @@ -42,11 +45,11 @@ class CRM_Extension_Manager_Search extends CRM_Extension_Manager_Base { } $weight = CRM_Utils_Weight::getDefaultWeight('CRM_Core_DAO_OptionValue', - ['option_group_id' => $this->groupId] + ['option_group_id' => $this->getGroupId()] ); $params = [ - 'option_group_id' => $this->groupId, + 'option_group_id' => $this->getGroupId(), 'weight' => $weight, 'description' => $info->label . ' (' . $info->key . ')', 'name' => $info->key, diff --git a/civicrm/CRM/Financial/BAO/FinancialItem.php b/civicrm/CRM/Financial/BAO/FinancialItem.php index 317fb8dadb..fb5dca3d16 100644 --- a/civicrm/CRM/Financial/BAO/FinancialItem.php +++ b/civicrm/CRM/Financial/BAO/FinancialItem.php @@ -221,7 +221,7 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem { /** * Check if contact is present in financial_item table. * - * CRM-12929 + * @see https://issues.civicrm.org/jira/browse/CRM-12929 * * @param array $contactIds * An array contact id's. diff --git a/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php b/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php index 87ff4c19ac..f7cb9652cb 100644 --- a/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php +++ b/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php @@ -164,7 +164,7 @@ class CRM_Financial_BAO_FinancialTypeAccount extends CRM_Financial_DAO_EntityFin /** * Create default entity financial accounts * for financial type - * CRM-12470 + * @see https://issues.civicrm.org/jira/browse/CRM-12470 * * @param $financialType * @@ -190,7 +190,7 @@ class CRM_Financial_BAO_FinancialTypeAccount extends CRM_Financial_DAO_EntityFin if (!$dao->N) { $params = [ 'name' => $financialType->name, - 'contact_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', CRM_Core_Config::domainID(), 'contact_id'), + 'contact_id' => CRM_Core_BAO_Domain::getDomain()->contact_id, 'financial_account_type_id' => array_search('Revenue', $financialAccountTypeID), 'description' => $financialType->description, 'account_type_code' => 'INC', diff --git a/civicrm/CRM/Financial/BAO/Order.php b/civicrm/CRM/Financial/BAO/Order.php index b7f9b834e0..43fa9cd2d7 100644 --- a/civicrm/CRM/Financial/BAO/Order.php +++ b/civicrm/CRM/Financial/BAO/Order.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * Order class. * * This class is intended to become the object to manage orders, including via Order.api. diff --git a/civicrm/CRM/Financial/BAO/Payment.php b/civicrm/CRM/Financial/BAO/Payment.php index 1101aab35e..f841363f14 100644 --- a/civicrm/CRM/Financial/BAO/Payment.php +++ b/civicrm/CRM/Financial/BAO/Payment.php @@ -79,6 +79,21 @@ class CRM_Financial_BAO_Payment { $paymentTrxnParams['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Refunded'); } + //If Payment is recorded on Failed contribution, update it to Pending. + if ($contributionStatus === 'Failed' && $params['total_amount'] > 0) { + //Enter a financial trxn to record a payment in receivable account + //as failed transaction does not insert any trxn values. Hence, if Payment is + //recorded on a failed contribution, the transition happens from Failed -> Pending -> Completed. + $ftParams = array_merge($paymentTrxnParams, [ + 'from_financial_account_id' => NULL, + 'to_financial_account_id' => $accountsReceivableAccount, + 'is_payment' => 0, + 'status_id' => CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending'), + ]); + CRM_Core_BAO_FinancialTrxn::create($ftParams); + $contributionStatus = 'Pending'; + self::updateContributionStatus($contribution['id'], $contributionStatus); + } $trxn = CRM_Core_BAO_FinancialTrxn::create($paymentTrxnParams); if ($params['total_amount'] < 0 && !empty($params['cancelled_payment_id'])) { diff --git a/civicrm/CRM/Financial/BAO/PaymentProcessor.php b/civicrm/CRM/Financial/BAO/PaymentProcessor.php index ed37743c5a..a24cde25ea 100644 --- a/civicrm/CRM/Financial/BAO/PaymentProcessor.php +++ b/civicrm/CRM/Financial/BAO/PaymentProcessor.php @@ -278,11 +278,13 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces * @param bool $reset * @param bool $isCurrentDomainOnly * Do we only want to load payment processors associated with the current domain. + * @param bool|NULL $isActive + * Do we only want active processors, only inactive (FALSE) or all processors (NULL) * * @throws CiviCRM_API3_Exception * @return array */ - public static function getAllPaymentProcessors($mode = 'all', $reset = FALSE, $isCurrentDomainOnly = TRUE) { + public static function getAllPaymentProcessors($mode = 'all', $reset = FALSE, $isCurrentDomainOnly = TRUE, $isActive = TRUE) { $cacheKey = 'CRM_Financial_BAO_Payment_Processor_' . $mode . '_' . $isCurrentDomainOnly . '_' . CRM_Core_Config::domainID(); if (!$reset) { @@ -293,10 +295,13 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces } $retrievalParameters = [ - 'is_active' => TRUE, 'options' => ['sort' => 'is_default DESC, name', 'limit' => 0], 'api.payment_processor_type.getsingle' => 1, ]; + if (isset($isActive)) { + // We use isset because we don't want to set the is_active parameter at all is $isActive is NULL + $retrievalParameters['is_active'] = $isActive; + } if ($isCurrentDomainOnly) { $retrievalParameters['domain_id'] = CRM_Core_Config::domainID(); } @@ -377,17 +382,19 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces * * @return array * available processors + * + * @throws \CiviCRM_API3_Exception */ public static function getPaymentProcessors($capabilities = [], $ids = FALSE) { if (is_array($ids)) { - $testProcessors = in_array('TestMode', $capabilities) ? self::getAllPaymentProcessors('test') : []; - $processors = self::getAllPaymentProcessors('all', FALSE, FALSE); - if (in_array('TestMode', $capabilities)) { + if (in_array('TestMode', $capabilities, TRUE)) { + $testProcessors = in_array('TestMode', $capabilities) ? self::getAllPaymentProcessors('test') : []; + $allProcessors = self::getAllPaymentProcessors('all', FALSE, FALSE, NULL); $possibleLiveIDs = array_diff($ids, array_keys($testProcessors)); foreach ($possibleLiveIDs as $possibleLiveID) { - if (isset($processors[$possibleLiveID]) && ($liveProcessorName = $processors[$possibleLiveID]['name']) != FALSE) { + if (isset($allProcessors[$possibleLiveID]) && ($liveProcessorName = $allProcessors[$possibleLiveID]['name']) != FALSE) { foreach ($testProcessors as $index => $testProcessor) { - if ($testProcessor['name'] == $liveProcessorName) { + if ($testProcessor['name'] === $liveProcessorName) { $ids[] = $testProcessor['id']; } } @@ -395,6 +402,9 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces } $processors = $testProcessors; } + else { + $processors = self::getAllPaymentProcessors('all', FALSE, FALSE); + } } else { $processors = self::getAllPaymentProcessors('all'); @@ -407,7 +417,7 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces } // Invalid processors will store a null value in 'object' (e.g. if not all required config fields are present). // This is determined by calling when loading the processor via the $processorObject->checkConfig() function. - if (!is_a($processor['object'], 'CRM_Core_Payment')) { + if (!$processor['object'] instanceof \CRM_Core_Payment) { unset($processors[$index]); continue; } diff --git a/civicrm/CRM/Financial/Form/FinancialAccount.php b/civicrm/CRM/Financial/Form/FinancialAccount.php index a99ed8f997..860d210037 100644 --- a/civicrm/CRM/Financial/Form/FinancialAccount.php +++ b/civicrm/CRM/Financial/Form/FinancialAccount.php @@ -160,7 +160,7 @@ class CRM_Financial_Form_FinancialAccount extends CRM_Contribute_Form { public function setDefaultValues() { $defaults = parent::setDefaultValues(); if ($this->_action & CRM_Core_Action::ADD) { - $defaults['contact_id'] = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', CRM_Core_Config::domainID(), 'contact_id'); + $defaults['contact_id'] = CRM_Core_BAO_Domain::getDomain()->contact_id; } return $defaults; } diff --git a/civicrm/CRM/Friend/BAO/Friend.php b/civicrm/CRM/Friend/BAO/Friend.php index 49cb7b9d88..df14f59082 100644 --- a/civicrm/CRM/Friend/BAO/Friend.php +++ b/civicrm/CRM/Friend/BAO/Friend.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Friend/Form/Contribute.php b/civicrm/CRM/Friend/Form/Contribute.php index 1be8f42c1d..0a85b96a1a 100644 --- a/civicrm/CRM/Friend/Form/Contribute.php +++ b/civicrm/CRM/Friend/Form/Contribute.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Friend/Form/Event.php b/civicrm/CRM/Friend/Form/Event.php index a40c68e874..cad46dde25 100644 --- a/civicrm/CRM/Friend/Form/Event.php +++ b/civicrm/CRM/Friend/Form/Event.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/BAO/Grant.php b/civicrm/CRM/Grant/BAO/Grant.php index c314802a2b..d38aeb5c41 100644 --- a/civicrm/CRM/Grant/BAO/Grant.php +++ b/civicrm/CRM/Grant/BAO/Grant.php @@ -14,13 +14,6 @@ */ class CRM_Grant_BAO_Grant extends CRM_Grant_DAO_Grant { - /** - * Class constructor. - */ - public function __construct() { - parent::__construct(); - } - /** * Get events Summary. * @@ -93,7 +86,7 @@ class CRM_Grant_BAO_Grant extends CRM_Grant_DAO_Grant { * @param array $defaults * (reference ) an assoc array to hold the flattened values. * - * @return CRM_Grant_BAO_ManageGrant + * @return CRM_Grant_DAO_Grant */ public static function retrieve(&$params, &$defaults) { $grant = new CRM_Grant_DAO_Grant(); @@ -118,30 +111,6 @@ class CRM_Grant_BAO_Grant extends CRM_Grant_DAO_Grant { $hook = $id ? 'edit' : 'create'; CRM_Utils_Hook::pre($hook, 'Grant', $id, $params); - // first clean up all the money fields - $moneyFields = [ - 'amount_total', - 'amount_granted', - 'amount_requested', - ]; - foreach ($moneyFields as $field) { - if (isset($params[$field])) { - $params[$field] = CRM_Utils_Rule::cleanMoney($params[$field]); - } - } - // convert dates to mysql format - $dates = [ - 'application_received_date', - 'decision_date', - 'money_transfer_date', - 'grant_due_date', - ]; - - foreach ($dates as $d) { - if (isset($params[$d])) { - $params[$d] = CRM_Utils_Date::processDate($params[$d], NULL, TRUE); - } - } $grant = new CRM_Grant_DAO_Grant(); $grant->id = $id; diff --git a/civicrm/CRM/Grant/Controller/Search.php b/civicrm/CRM/Grant/Controller/Search.php index 992528ffda..166cb93e9f 100644 --- a/civicrm/CRM/Grant/Controller/Search.php +++ b/civicrm/CRM/Grant/Controller/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Grant.php b/civicrm/CRM/Grant/Form/Grant.php index 80d4f97b8d..84125e58d9 100644 --- a/civicrm/CRM/Grant/Form/Grant.php +++ b/civicrm/CRM/Grant/Form/Grant.php @@ -40,8 +40,6 @@ class CRM_Grant_Form_Grant extends CRM_Core_Form { /** * Set variables up before form is built. - * - * @return void */ public function preProcess() { @@ -263,6 +261,16 @@ class CRM_Grant_Form_Grant extends CRM_Core_Form { 'civicrm_grant', $this->_id ); + $moneyFields = [ + 'amount_total', + 'amount_granted', + 'amount_requested', + ]; + foreach ($moneyFields as $field) { + if (isset($params[$field])) { + $params[$field] = CRM_Utils_Rule::cleanMoney($params[$field]); + } + } $grant = CRM_Grant_BAO_Grant::create($params, $ids); diff --git a/civicrm/CRM/Grant/Form/GrantView.php b/civicrm/CRM/Grant/Form/GrantView.php index 082f6de6e4..672861bcf0 100644 --- a/civicrm/CRM/Grant/Form/GrantView.php +++ b/civicrm/CRM/Grant/Form/GrantView.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Search.php b/civicrm/CRM/Grant/Form/Search.php index 1ea774db22..b997f2cab7 100644 --- a/civicrm/CRM/Grant/Form/Search.php +++ b/civicrm/CRM/Grant/Form/Search.php @@ -162,8 +162,6 @@ class CRM_Grant_Form_Search extends CRM_Core_Form_Search { $this->_formValues = CRM_Contact_BAO_SavedSearch::getFormValues($this->_ssID); } - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues); $this->set('queryParams', $this->_queryParams); diff --git a/civicrm/CRM/Grant/Form/Task/Delete.php b/civicrm/CRM/Grant/Form/Task/Delete.php index 155fe0e584..5a05c0d98c 100644 --- a/civicrm/CRM/Grant/Form/Task/Delete.php +++ b/civicrm/CRM/Grant/Form/Task/Delete.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Task/Print.php b/civicrm/CRM/Grant/Form/Task/Print.php index 4534f51ec0..70dcd64936 100644 --- a/civicrm/CRM/Grant/Form/Task/Print.php +++ b/civicrm/CRM/Grant/Form/Task/Print.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Task/Result.php b/civicrm/CRM/Grant/Form/Task/Result.php index fe1f932e39..3e03f65536 100644 --- a/civicrm/CRM/Grant/Form/Task/Result.php +++ b/civicrm/CRM/Grant/Form/Task/Result.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Task/SearchTaskHookSample.php b/civicrm/CRM/Grant/Form/Task/SearchTaskHookSample.php index 9d31e18714..01ce981f45 100644 --- a/civicrm/CRM/Grant/Form/Task/SearchTaskHookSample.php +++ b/civicrm/CRM/Grant/Form/Task/SearchTaskHookSample.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Form/Task/Update.php b/civicrm/CRM/Grant/Form/Task/Update.php index ba62dda100..d8388cb5f2 100644 --- a/civicrm/CRM/Grant/Form/Task/Update.php +++ b/civicrm/CRM/Grant/Form/Task/Update.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -82,9 +80,9 @@ class CRM_Grant_Form_Task_Update extends CRM_Grant_Form_Task { $values[$key] = $value; } foreach ($this->_grantIds as $grantId) { - $ids['grant_id'] = $grantId; + $values['id'] = $grantId; - CRM_Grant_BAO_Grant::add($values, $ids); + CRM_Grant_BAO_Grant::add($values); $updatedGrants++; } } diff --git a/civicrm/CRM/Grant/Info.php b/civicrm/CRM/Grant/Info.php index fea61808aa..e4093715f3 100644 --- a/civicrm/CRM/Grant/Info.php +++ b/civicrm/CRM/Grant/Info.php @@ -16,8 +16,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Grant_Info extends CRM_Core_Component_Info { diff --git a/civicrm/CRM/Grant/Page/Tab.php b/civicrm/CRM/Grant/Page/Tab.php index 450bb76e10..4f2219364a 100644 --- a/civicrm/CRM/Grant/Page/Tab.php +++ b/civicrm/CRM/Grant/Page/Tab.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/Selector/Search.php b/civicrm/CRM/Grant/Selector/Search.php index 27918d27e5..07a2205f8a 100644 --- a/civicrm/CRM/Grant/Selector/Search.php +++ b/civicrm/CRM/Grant/Selector/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Grant/StateMachine/Search.php b/civicrm/CRM/Grant/StateMachine/Search.php index eade9bb5b4..1fec37f322 100644 --- a/civicrm/CRM/Grant/StateMachine/Search.php +++ b/civicrm/CRM/Grant/StateMachine/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Grant_StateMachine_Search extends CRM_Core_StateMachine { diff --git a/civicrm/CRM/Grant/Task.php b/civicrm/CRM/Grant/Task.php index 4778a933b6..0bd104ddbf 100644 --- a/civicrm/CRM/Grant/Task.php +++ b/civicrm/CRM/Grant/Task.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Group/Controller.php b/civicrm/CRM/Group/Controller.php index d6a5372181..540ca3ec73 100644 --- a/civicrm/CRM/Group/Controller.php +++ b/civicrm/CRM/Group/Controller.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Group_Controller extends CRM_Core_Controller { diff --git a/civicrm/CRM/Group/Form/Search.php b/civicrm/CRM/Group/Form/Search.php index 59b6cd52cb..819b061f21 100644 --- a/civicrm/CRM/Group/Form/Search.php +++ b/civicrm/CRM/Group/Form/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Group_Form_Search extends CRM_Core_Form { diff --git a/civicrm/CRM/Group/Page/AJAX.php b/civicrm/CRM/Group/Page/AJAX.php index 55428b5ef6..b314d5cb61 100644 --- a/civicrm/CRM/Group/Page/AJAX.php +++ b/civicrm/CRM/Group/Page/AJAX.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** @@ -64,10 +63,6 @@ class CRM_Group_Page_AJAX { } } - if (!empty($_GET['is_unit_test'])) { - return $groups; - } - CRM_Utils_JSON::output($groups); } diff --git a/civicrm/CRM/Group/StateMachine.php b/civicrm/CRM/Group/StateMachine.php index d1408e506d..2895be5b28 100644 --- a/civicrm/CRM/Group/StateMachine.php +++ b/civicrm/CRM/Group/StateMachine.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Group_StateMachine extends CRM_Core_StateMachine { diff --git a/civicrm/CRM/Import/DataSource.php b/civicrm/CRM/Import/DataSource.php index 2b54760822..e7a8cc8459 100644 --- a/civicrm/CRM/Import/DataSource.php +++ b/civicrm/CRM/Import/DataSource.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Import/DataSource/CSV.php b/civicrm/CRM/Import/DataSource/CSV.php index e03b5972f7..9651e47888 100644 --- a/civicrm/CRM/Import/DataSource/CSV.php +++ b/civicrm/CRM/Import/DataSource/CSV.php @@ -43,6 +43,8 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { * uploaded to the temporary table in the DB. * * @param CRM_Core_Form $form + * + * @throws \CRM_Core_Exception */ public function buildQuickForm(&$form) { $form->add('hidden', 'hidden_dataSource', 'CRM_Import_DataSource_CSV'); @@ -74,6 +76,8 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { * @param array $params * @param string $db * @param \CRM_Core_Form $form + * + * @throws \CRM_Core_Exception */ public function postProcess(&$params, &$db, &$form) { $file = $params['uploadFile']['name']; @@ -100,19 +104,20 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { * File name to load. * @param bool $headers * Whether the first row contains headers. - * @param string $table + * @param string $tableName * Name of table from which data imported. * @param string $fieldSeparator * Character that separates the various columns in the file. * - * @return string + * @return array * name of the created table + * @throws \CRM_Core_Exception */ private static function _CsvToTable( &$db, $file, $headers = FALSE, - $table = NULL, + $tableName = NULL, $fieldSeparator = ',' ) { $result = []; @@ -182,16 +187,17 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { } } - // FIXME: we should regen this table's name if it exists rather than drop it - if (!$table) { - $table = 'civicrm_import_job_' . md5(uniqid(rand(), TRUE)); + if ($tableName) { + // Drop previous table if passed in and create new one. + $db->query("DROP TABLE IF EXISTS $tableName"); } - - $db->query("DROP TABLE IF EXISTS $table"); + $table = CRM_Utils_SQL_TempTable::build()->setDurable(); + $tableName = $table->getName(); + // Do we still need this? + $db->query("DROP TABLE IF EXISTS $tableName"); + $table->createWithColumns(implode(' text, ', $columns) . ' text'); $numColumns = count($columns); - $create = "CREATE TABLE $table (" . implode(' text, ', $columns) . " text) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"; - $db->query($create); // the proper approach, but some MySQL installs do not have this enabled // $load = "LOAD DATA LOCAL INFILE '$file' INTO TABLE $table FIELDS TERMINATED BY '$fieldSeparator' OPTIONALLY ENCLOSED BY '\"'"; @@ -228,7 +234,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { $count++; if ($count >= self::NUM_ROWS_TO_INSERT && !empty($sql)) { - $sql = "INSERT IGNORE INTO $table VALUES $sql"; + $sql = "INSERT IGNORE INTO $tableName VALUES $sql"; $db->query($sql); $sql = NULL; @@ -238,14 +244,14 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { } if (!empty($sql)) { - $sql = "INSERT IGNORE INTO $table VALUES $sql"; + $sql = "INSERT IGNORE INTO $tableName VALUES $sql"; $db->query($sql); } fclose($fd); //get the import tmp table name. - $result['import_table_name'] = $table; + $result['import_table_name'] = $tableName; return $result; } diff --git a/civicrm/CRM/Import/DataSource/SQL.php b/civicrm/CRM/Import/DataSource/SQL.php index 7fe07047dc..26d3e09faa 100644 --- a/civicrm/CRM/Import/DataSource/SQL.php +++ b/civicrm/CRM/Import/DataSource/SQL.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Import_DataSource_SQL extends CRM_Import_DataSource { @@ -82,6 +80,8 @@ class CRM_Import_DataSource_SQL extends CRM_Import_DataSource { * @param array $params * @param string $db * @param \CRM_Core_Form $form + * + * @throws \CRM_Core_Exception */ public function postProcess(&$params, &$db, &$form) { $importJob = new CRM_Contact_Import_ImportJob( diff --git a/civicrm/CRM/Import/Form/DataSource.php b/civicrm/CRM/Import/Form/DataSource.php index 0e8fe5a48c..90e5cd71c7 100644 --- a/civicrm/CRM/Import/Form/DataSource.php +++ b/civicrm/CRM/Import/Form/DataSource.php @@ -95,26 +95,17 @@ abstract class CRM_Import_Form_DataSource extends CRM_Core_Form { */ protected function addContactTypeSelector() { //contact types option - $contactOptions = []; + $contactTypeOptions = []; if (CRM_Contact_BAO_ContactType::isActive('Individual')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Individual'), CRM_Import_Parser::CONTACT_INDIVIDUAL - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_INDIVIDUAL] = ts('Individual'); } if (CRM_Contact_BAO_ContactType::isActive('Household')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Household'), CRM_Import_Parser::CONTACT_HOUSEHOLD - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_HOUSEHOLD] = ts('Household'); } if (CRM_Contact_BAO_ContactType::isActive('Organization')) { - $contactOptions[] = $this->createElement('radio', - NULL, NULL, ts('Organization'), CRM_Import_Parser::CONTACT_ORGANIZATION - ); + $contactTypeOptions[CRM_Import_Parser::CONTACT_ORGANIZATION] = ts('Organization'); } - - $this->addGroup($contactOptions, 'contactType', - ts('Contact Type') - ); + $this->addRadio('contactType', ts('Contact Type'), $contactTypeOptions); $this->setDefaults([ 'contactType' => CRM_Import_Parser::CONTACT_INDIVIDUAL, diff --git a/civicrm/CRM/Logging/Differ.php b/civicrm/CRM/Logging/Differ.php index 2e05cf1d70..a124a40069 100644 --- a/civicrm/CRM/Logging/Differ.php +++ b/civicrm/CRM/Logging/Differ.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Logging_Differ { private $db; diff --git a/civicrm/CRM/Logging/Schema.php b/civicrm/CRM/Logging/Schema.php index 183af4100a..e9160bbdef 100644 --- a/civicrm/CRM/Logging/Schema.php +++ b/civicrm/CRM/Logging/Schema.php @@ -72,11 +72,13 @@ class CRM_Logging_Schema { * @throws API_Exception */ public static function checkLoggingSupport(&$value, $fieldSpec) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); if (!(CRM_Core_DAO::checkTriggerViewPermission(FALSE)) && $value) { throw new API_Exception(ts("In order to use this functionality, the installation's database user must have privileges to create triggers and views (if binary logging is enabled – this means the SUPER privilege). This install does not have the required privilege(s) enabled.")); } + // dev/core#1812 Disable logging in a multilingual environment. + if (CRM_Core_I18n::isMultilingual() && $value) { + throw new API_Exception(ts("Logging is not supported in a multilingual environment!")); + } return TRUE; } diff --git a/civicrm/CRM/Mailing/BAO/Mailing.php b/civicrm/CRM/Mailing/BAO/Mailing.php index 8169513e89..8a1e952909 100644 --- a/civicrm/CRM/Mailing/BAO/Mailing.php +++ b/civicrm/CRM/Mailing/BAO/Mailing.php @@ -1528,6 +1528,12 @@ ORDER BY civicrm_email.is_bulkmail DESC \Civi::log('Parameter $ids is no longer used by Mailing::create. Use the api or just pass $params', ['civi.tag' => 'deprecated']); } + // CRM-#1843 + // If it is a mass sms, set url_tracking to false + if (!empty($params['sms_provider_id'])) { + $params['url_tracking'] = 0; + } + // CRM-12430 // Do the below only for an insert // for an update, we should not set the defaults diff --git a/civicrm/CRM/Mailing/BAO/MailingJob.php b/civicrm/CRM/Mailing/BAO/MailingJob.php index 8ebd890834..4b1d5c6656 100644 --- a/civicrm/CRM/Mailing/BAO/MailingJob.php +++ b/civicrm/CRM/Mailing/BAO/MailingJob.php @@ -432,6 +432,8 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) $now = time(); $params = []; $count = 0; + // dev/core#1768 Get the mail sync interval. + $mail_sync_interval = Civi::settings()->get('civimail_sync_interval'); while ($recipients->fetch()) { // CRM-18543: there are situations when both the email and phone are null. // Skip the recipient in this case. @@ -453,7 +455,8 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) $recipients->phone_id, ]; $count++; - if ($count % CRM_Mailing_Config::BULK_MAIL_INSERT_COUNT == 0) { + // dev/core#1768 Mail sync interval is now configurable. + if ($count % $mail_sync_interval == 0) { CRM_Mailing_Event_BAO_Queue::bulkCreate($params, $now); $count = 0; $params = []; @@ -576,6 +579,8 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) $returnProperties = $mailing->getReturnProperties(); $params = $targetParams = $deliveredParams = []; $count = 0; + // dev/core#1768 Get the mail sync interval. + $mail_sync_interval = Civi::settings()->get('civimail_sync_interval'); $retryGroup = FALSE; // CRM-15702: Sending bulk sms to contacts without e-mail address fails. @@ -708,7 +713,8 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) $targetParams[] = $field['contact_id']; $count++; - if ($count % CRM_Mailing_Config::BULK_MAIL_INSERT_COUNT == 0) { + // dev/core#1768 Mail sync interval is now configurable. + if ($count % $mail_sync_interval == 0) { $this->writeToDB( $deliveredParams, $targetParams, diff --git a/civicrm/CRM/Mailing/Config.php b/civicrm/CRM/Mailing/Config.php index afe2f7d2dc..cc38702225 100644 --- a/civicrm/CRM/Mailing/Config.php +++ b/civicrm/CRM/Mailing/Config.php @@ -27,6 +27,8 @@ class CRM_Mailing_Config { // special value for mail bulk inserts to avoid // potential duplication, assuming a smaller number reduces number of queries // by some factor, so some tradeoff. CRM-8678 + // dev/core#1768 Remove this after Dec 2020. + // Replaced with civimail_sync_interval. const BULK_MAIL_INSERT_COUNT = 10; } diff --git a/civicrm/CRM/Mailing/Event/BAO/Opened.php b/civicrm/CRM/Mailing/Event/BAO/Opened.php index f180fddb50..1ecc078839 100644 --- a/civicrm/CRM/Mailing/Event/BAO/Opened.php +++ b/civicrm/CRM/Mailing/Event/BAO/Opened.php @@ -112,7 +112,7 @@ class CRM_Mailing_Event_BAO_Opened extends CRM_Mailing_Event_DAO_Opened { } /** - * CRM-12814 + * @see https://issues.civicrm.org/jira/browse/CRM-12814 * Get opened count for each mailing for a given set of mailing IDs * * @param $mailingIDs diff --git a/civicrm/CRM/Mailing/Event/BAO/Reply.php b/civicrm/CRM/Mailing/Event/BAO/Reply.php index 25fb8f4fff..ed240b720f 100644 --- a/civicrm/CRM/Mailing/Event/BAO/Reply.php +++ b/civicrm/CRM/Mailing/Event/BAO/Reply.php @@ -227,17 +227,15 @@ class CRM_Mailing_Event_BAO_Reply extends CRM_Mailing_Event_DAO_Reply { $component->id = $mailing->reply_id; $component->find(TRUE); - $message = new Mail_Mime("\n"); - $domain = CRM_Core_BAO_Domain::getDomain(); list($domainEmailName, $_) = CRM_Core_BAO_Domain::getNameAndEmail(); - $headers = [ - 'Subject' => $component->subject, - 'To' => $to, - 'From' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', - 'Reply-To' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), - 'Return-Path' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + $params = [ + 'subject' => $component->subject, + 'toEmail' => $to, + 'from' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', + 'replyTo' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + 'returnPath' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), ]; // TODO: do we need reply tokens? @@ -257,24 +255,19 @@ class CRM_Mailing_Event_BAO_Reply extends CRM_Mailing_Event_DAO_Reply { if ($eq->format == 'HTML' || $eq->format == 'Both') { $html = CRM_Utils_Token::replaceDomainTokens($html, $domain, TRUE, $tokens['html']); $html = CRM_Utils_Token::replaceMailingTokens($html, $mailing, NULL, $tokens['html']); - $message->setHTMLBody($html); } if (!$html || $eq->format == 'Text' || $eq->format == 'Both') { $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, FALSE, $tokens['text']); $text = CRM_Utils_Token::replaceMailingTokens($text, $mailing, NULL, $tokens['text']); - $message->setTxtBody($text); } + $params['html'] = $html; + $params['text'] = $text; - $b = CRM_Utils_Mail::setMimeParams($message); - $h = $message->headers($headers); - CRM_Mailing_BAO_Mailing::addMessageIdHeader($h, 'a', $eq->job_id, queue_id, $eq->hash); - - $mailer = \Civi::service('pear_mail'); - if (is_object($mailer)) { - $errorScope = CRM_Core_TemporaryErrorScope::ignoreException(); - $mailer->send($to, $h, $b); - unset($errorScope); + CRM_Mailing_BAO_Mailing::addMessageIdHeader($params, 'a', $eq->job_id, queue_id, $eq->hash); + if (CRM_Core_BAO_MailSettings::includeMessageId()) { + $params['messageId'] = $params['Message-ID']; } + CRM_Utils_Mail::send($params); } /** diff --git a/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php b/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php index e13ee159b6..3468c533b1 100644 --- a/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php +++ b/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php @@ -229,8 +229,6 @@ class CRM_Mailing_Event_BAO_Resubscribe { } } - $message = new Mail_mime("\n"); - list($addresses, $urls) = CRM_Mailing_BAO_Mailing::getVerpAndUrls($job, $queue_id, $eq->hash, $eq->email); $bao = new CRM_Mailing_BAO_Mailing(); $bao->body_text = $text; @@ -241,34 +239,28 @@ class CRM_Mailing_Event_BAO_Resubscribe { $html = CRM_Utils_Token::replaceResubscribeTokens($html, $domain, $groups, TRUE, $eq->contact_id, $eq->hash); $html = CRM_Utils_Token::replaceActionTokens($html, $addresses, $urls, TRUE, $tokens['html']); $html = CRM_Utils_Token::replaceMailingTokens($html, $dao, NULL, $tokens['html']); - $message->setHTMLBody($html); } if (!$html || $eq->format == 'Text' || $eq->format == 'Both') { $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, TRUE, $tokens['text']); $text = CRM_Utils_Token::replaceResubscribeTokens($text, $domain, $groups, FALSE, $eq->contact_id, $eq->hash); $text = CRM_Utils_Token::replaceActionTokens($text, $addresses, $urls, FALSE, $tokens['text']); $text = CRM_Utils_Token::replaceMailingTokens($text, $dao, NULL, $tokens['text']); - $message->setTxtBody($text); } - $headers = [ - 'Subject' => $component->subject, - 'From' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', - 'To' => $eq->email, - 'Reply-To' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), - 'Return-Path' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + $params = [ + 'subject' => $component->subject, + 'from' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', + 'toEmail' => $eq->email, + 'replyTo' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + 'returnPath' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + 'html' => $html, + 'text' => $text, ]; - CRM_Mailing_BAO_Mailing::addMessageIdHeader($headers, 'e', $job, $queue_id, $eq->hash); - $b = CRM_Utils_Mail::setMimeParams($message); - $h = $message->headers($headers); - - $mailer = \Civi::service('pear_mail'); - - if (is_object($mailer)) { - $errorScope = CRM_Core_TemporaryErrorScope::ignoreException(); - $mailer->send($eq->email, $h, $b); - unset($errorScope); + CRM_Mailing_BAO_Mailing::addMessageIdHeader($params, 'e', $job, $queue_id, $eq->hash); + if (CRM_Core_BAO_MailSettings::includeMessageId()) { + $params['messageId'] = $params['Message-ID']; } + CRM_Utils_Mail::send($params); } } diff --git a/civicrm/CRM/Mailing/Event/BAO/Subscribe.php b/civicrm/CRM/Mailing/Event/BAO/Subscribe.php index 1dfad54a4a..71baa417fe 100644 --- a/civicrm/CRM/Mailing/Event/BAO/Subscribe.php +++ b/civicrm/CRM/Mailing/Event/BAO/Subscribe.php @@ -205,12 +205,12 @@ SELECT civicrm_email.id as email_id $component->find(TRUE); - $headers = [ - 'Subject' => $component->subject, - 'From' => "\"{$domainEmailName}\" <{$domainEmailAddress}>", - 'To' => $email, - 'Reply-To' => $confirm, - 'Return-Path' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + $params = [ + 'subject' => $component->subject, + 'from' => "\"{$domainEmailName}\" <{$domainEmailAddress}>", + 'toEmail' => $email, + 'replyTo' => $confirm, + 'returnPath' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), ]; $url = CRM_Utils_System::url('civicrm/mailing/confirm', @@ -246,24 +246,17 @@ SELECT civicrm_email.id as email_id // render the & entities in text mode, so that the links work $text = str_replace('&', '&', $text); - $message = new Mail_mime("\n"); - - $message->setHTMLBody($html); - $message->setTxtBody($text); - $b = CRM_Utils_Mail::setMimeParams($message); - $h = $message->headers($headers); - CRM_Mailing_BAO_Mailing::addMessageIdHeader($h, 's', + CRM_Mailing_BAO_Mailing::addMessageIdHeader($params, 's', $this->contact_id, $this->id, $this->hash ); - $mailer = \Civi::service('pear_mail'); - - if (is_object($mailer)) { - $errorScope = CRM_Core_TemporaryErrorScope::ignoreException(); - $mailer->send($email, $h, $b); - unset($errorScope); + $params['html'] = $html; + $params['text'] = $text; + if (CRM_Core_BAO_MailSettings::includeMessageId()) { + $params['messageId'] = $params['Message-ID']; } + CRM_Utils_Mail::send($params); } /** diff --git a/civicrm/CRM/Mailing/Event/BAO/TrackableURLOpen.php b/civicrm/CRM/Mailing/Event/BAO/TrackableURLOpen.php index 6c314f04b6..856f577edb 100644 --- a/civicrm/CRM/Mailing/Event/BAO/TrackableURLOpen.php +++ b/civicrm/CRM/Mailing/Event/BAO/TrackableURLOpen.php @@ -169,7 +169,7 @@ class CRM_Mailing_Event_BAO_TrackableURLOpen extends CRM_Mailing_Event_DAO_Track /** * Get tracked url count for each mailing for a given set of mailing IDs. * - * CRM-12814 + * @see https://issues.civicrm.org/jira/browse/CRM-12814 * * @param array $mailingIDs * diff --git a/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php b/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php index 920ae7d3bc..ce92b388e2 100644 --- a/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php +++ b/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php @@ -365,8 +365,6 @@ WHERE email = %2 } } - $message = new Mail_mime("\n"); - list($addresses, $urls) = CRM_Mailing_BAO_Mailing::getVerpAndUrls($job, $queue_id, $eq->hash, $eq->email); $bao = new CRM_Mailing_BAO_Mailing(); $bao->body_text = $text; @@ -377,37 +375,30 @@ WHERE email = %2 $html = CRM_Utils_Token::replaceUnsubscribeTokens($html, $domain, $groups, TRUE, $eq->contact_id, $eq->hash); $html = CRM_Utils_Token::replaceActionTokens($html, $addresses, $urls, TRUE, $tokens['html']); $html = CRM_Utils_Token::replaceMailingTokens($html, $dao, NULL, $tokens['html']); - $message->setHTMLBody($html); } if (!$html || $eq->format == 'Text' || $eq->format == 'Both') { $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, FALSE, $tokens['text']); $text = CRM_Utils_Token::replaceUnsubscribeTokens($text, $domain, $groups, FALSE, $eq->contact_id, $eq->hash); $text = CRM_Utils_Token::replaceActionTokens($text, $addresses, $urls, FALSE, $tokens['text']); $text = CRM_Utils_Token::replaceMailingTokens($text, $dao, NULL, $tokens['text']); - $message->setTxtBody($text); } $emailDomain = CRM_Core_BAO_MailSettings::defaultDomain(); - $headers = [ - 'Subject' => $component->subject, - 'From' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', - 'To' => $eq->email, - 'Reply-To' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), - 'Return-Path' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + $params = [ + 'subject' => $component->subject, + 'from' => "\"$domainEmailName\" <" . CRM_Core_BAO_Domain::getNoReplyEmailAddress() . '>', + 'toEmail' => $eq->email, + 'replyTo' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + 'returnPath' => CRM_Core_BAO_Domain::getNoReplyEmailAddress(), + 'html' => $html, + 'text' => $text, ]; - CRM_Mailing_BAO_Mailing::addMessageIdHeader($headers, 'u', $job, $queue_id, $eq->hash); - - $b = CRM_Utils_Mail::setMimeParams($message); - $h = $message->headers($headers); - - $mailer = \Civi::service('pear_mail'); - - if (is_object($mailer)) { - $errorScope = CRM_Core_TemporaryErrorScope::ignoreException(); - $mailer->send($eq->email, $h, $b); - unset($errorScope); + CRM_Mailing_BAO_Mailing::addMessageIdHeader($params, 'u', $job, $queue_id, $eq->hash); + if (CRM_Core_BAO_MailSettings::includeMessageId()) { + $params['messageId'] = $params['Message-ID']; } + CRM_Utils_Mail::send($params); } /** diff --git a/civicrm/CRM/Mailing/Form/Subscribe.php b/civicrm/CRM/Mailing/Form/Subscribe.php index 1be92c1214..97405dce40 100644 --- a/civicrm/CRM/Mailing/Form/Subscribe.php +++ b/civicrm/CRM/Mailing/Form/Subscribe.php @@ -105,32 +105,11 @@ ORDER BY title"; $this->addFormRule(['CRM_Mailing_Form_Subscribe', 'formRule']); } - $addCaptcha = TRUE; - - // if recaptcha is not configured, then dont add it - // CRM-11316 Only enable ReCAPTCHA for anonymous visitors - $config = CRM_Core_Config::singleton(); + // CRM-11316 Enable ReCAPTCHA for anonymous visitors $session = CRM_Core_Session::singleton(); $contactID = $session->get('userID'); - if (empty($config->recaptchaPublicKey) || - empty($config->recaptchaPrivateKey) || - $contactID - ) { - $addCaptcha = FALSE; - } - else { - // If this is POST request and came from a block, - // lets add recaptcha only if already present. - // Gross hack for now. - if (!empty($_POST) && - !array_key_exists('recaptcha_challenge_field', $_POST) - ) { - $addCaptcha = FALSE; - } - } - - if ($addCaptcha) { + if (!$contactID) { CRM_Utils_ReCAPTCHA::enableCaptchaOnForm($this); } diff --git a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml index d4cc7d274a..78ac7ebe06 100644 --- a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml +++ b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml @@ -206,10 +206,12 @@ <path>civicrm/mailing/url</path> <page_callback>CRM_Mailing_Page_Url</page_callback> <access_arguments>*always allow*</access_arguments> + <is_public>true</is_public> </item> <item> <path>civicrm/mailing/open</path> <page_callback>CRM_Mailing_Page_Open</page_callback> <access_arguments>*always allow*</access_arguments> + <is_public>true</is_public> </item> </menu> diff --git a/civicrm/CRM/Member/BAO/Membership.php b/civicrm/CRM/Member/BAO/Membership.php index c927be1aff..6640b4b113 100644 --- a/civicrm/CRM/Member/BAO/Membership.php +++ b/civicrm/CRM/Member/BAO/Membership.php @@ -385,42 +385,48 @@ class CRM_Member_BAO_Membership extends CRM_Member_DAO_Membership { self::createRelatedMemberships($params, $membership); - // do not add to recent items for import, CRM-4399 if (empty($params['skipRecentView'])) { - $url = CRM_Utils_System::url('civicrm/contact/view/membership', - "action=view&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" - ); - if (empty($membership->membership_type_id)) { - // ie in an update situation. - $membership->find(TRUE); - } - $membershipTypes = CRM_Member_PseudoConstant::membershipType(); - $title = CRM_Contact_BAO_Contact::displayName($membership->contact_id) . ' - ' . ts('Membership Type:') . ' ' . $membershipTypes[$membership->membership_type_id]; + self::addToRecentItems($membership); + } - $recentOther = []; - if (CRM_Core_Permission::checkActionPermission('CiviMember', CRM_Core_Action::UPDATE)) { - $recentOther['editUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership', - "action=update&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" - ); - } - if (CRM_Core_Permission::checkActionPermission('CiviMember', CRM_Core_Action::DELETE)) { - $recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership', - "action=delete&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" - ); - } + return $membership; + } - // add the recently created Membership - CRM_Utils_Recent::add($title, - $url, - $membership->id, - 'Membership', - $membership->contact_id, - NULL, - $recentOther + /** + * @param \CRM_Member_DAO_Membership $membership + */ + private static function addToRecentItems($membership) { + $url = CRM_Utils_System::url('civicrm/contact/view/membership', + "action=view&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" + ); + if (empty($membership->membership_type_id)) { + // ie in an update situation. + $membership->find(TRUE); + } + $title = CRM_Contact_BAO_Contact::displayName($membership->contact_id) . ' - ' . ts('Membership Type:') + . ' ' . CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'membership_type_id', $membership->membership_type_id); + + $recentOther = []; + if (CRM_Core_Permission::checkActionPermission('CiviMember', CRM_Core_Action::UPDATE)) { + $recentOther['editUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership', + "action=update&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" + ); + } + if (CRM_Core_Permission::checkActionPermission('CiviMember', CRM_Core_Action::DELETE)) { + $recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/contact/view/membership', + "action=delete&reset=1&id={$membership->id}&cid={$membership->contact_id}&context=home" ); } - return $membership; + // add the recently created Membership + CRM_Utils_Recent::add($title, + $url, + $membership->id, + 'Membership', + $membership->contact_id, + NULL, + $recentOther + ); } /** @@ -891,13 +897,11 @@ INNER JOIN civicrm_membership_type type ON ( type.id = membership.membership_ty * * @return array * array of importable Fields + * @throws \CRM_Core_Exception */ - public static function &importableFields($contactType = 'Individual', $status = TRUE) { - if (!self::$_importableFields) { - if (!self::$_importableFields) { - self::$_importableFields = []; - } - + public static function importableFields($contactType = 'Individual', $status = TRUE) { + $fields = Civi::cache('fields')->get('membership_importable_fields' . $contactType . $status); + if (!$fields) { if (!$status) { $fields = ['' => ['title' => '- ' . ts('do not import') . ' -']]; } @@ -935,16 +939,16 @@ INNER JOIN civicrm_membership_type type ON ( type.id = membership.membership_ty } } $tmpContactField['external_identifier'] = $contactFields['external_identifier']; - $tmpContactField['external_identifier']['title'] = $contactFields['external_identifier']['title'] . " " . ts('(match to contact)'); + $tmpContactField['external_identifier']['title'] = $contactFields['external_identifier']['title'] . ' ' . ts('(match to contact)'); - $tmpFields['membership_contact_id']['title'] = $tmpFields['membership_contact_id']['title'] . " " . ts('(match to contact)'); + $tmpFields['membership_contact_id']['title'] .= ' ' . ts('(match to contact)'); $fields = array_merge($fields, $tmpContactField); $fields = array_merge($fields, $tmpFields); $fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Membership')); - self::$_importableFields = $fields; + Civi::cache('fields')->set('membership_importable_fields' . $contactType . $status, $fields); } - return self::$_importableFields; + return $fields; } /** @@ -2164,21 +2168,50 @@ INNER JOIN civicrm_contact contact ON ( contact.id = membership.contact_id AND * IMPORTANT: * Sending renewal reminders has been migrated from this job to the Scheduled Reminders function as of 4.3. * + * @param array $params + * only_active_membership_types, exclude_test_memberships, exclude_membership_status_ids + * * @return array * * @throws \CiviCRM_API3_Exception * @throws \CRM_Core_Exception */ - public static function updateAllMembershipStatus() { - // Tests for this function are in api_v3_JobTest. Please add tests for all updates. - - $updateCount = $processCount = self::updateDeceasedMembersStatuses(); - + public static function updateAllMembershipStatus($params = []) { // We want all of the statuses as id => name, even the disabled ones (cf. // CRM-15475), to identify which are Pending, Deceased, Cancelled, and // Expired. $allStatus = CRM_Member_BAO_Membership::buildOptions('status_id', 'validate'); - $allTypes = CRM_Member_PseudoConstant::membershipType(); + if (empty($params['exclude_membership_status_ids'])) { + $params['exclude_membership_status_ids'] = [ + array_search('Pending', $allStatus), + array_search('Cancelled', $allStatus), + array_search('Expired', $allStatus) ?: 0, + array_search('Deceased', $allStatus), + ]; + } + // Deceased is *always* excluded because it is has very specific processing below. + elseif (!in_array(array_search('Deceased', $allStatus), $params['exclude_membership_status_ids'])) { + $params['exclude_membership_status_ids'][] = array_search('Deceased', $allStatus); + } + + for ($index = 0; $index < count($params['exclude_membership_status_ids']); $index++) { + $queryParams[$index] = [$params['exclude_membership_status_ids'][$index], 'Integer']; + } + $membershipStatusClause = 'civicrm_membership.status_id NOT IN (%' . implode(', %', array_keys($queryParams)) . ')'; + + // Tests for this function are in api_v3_JobTest. Please add tests for all updates. + + $updateCount = $processCount = self::updateDeceasedMembersStatuses(); + + $whereClauses[] = 'civicrm_contact.is_deceased = 0'; + if ($params['exclude_test_memberships']) { + $whereClauses[] = 'civicrm_membership.is_test = 0'; + } + $whereClause = implode(' AND ', $whereClauses); + $activeMembershipClause = ''; + if ($params['only_active_membership_types']) { + $activeMembershipClause = ' AND civicrm_membership_type.is_active = 1'; + } // This query retrieves ALL memberships of active types. $baseQuery = " @@ -2197,15 +2230,8 @@ SELECT civicrm_membership.id as membership_id, FROM civicrm_membership INNER JOIN civicrm_contact ON ( civicrm_membership.contact_id = civicrm_contact.id ) INNER JOIN civicrm_membership_type ON - (civicrm_membership.membership_type_id = civicrm_membership_type.id AND civicrm_membership_type.is_active = 1) -WHERE civicrm_membership.is_test = 0 - AND civicrm_contact.is_deceased = 0 "; - - $deceaseStatusId = array_search('Deceased', $allStatus); - $pendingStatusId = array_search('Pending', $allStatus); - $cancelledStatusId = array_search('Cancelled', $allStatus); - // Expired is not reserved so might not exist. A value of `0` won't break. - $expiredStatusId = array_search('Expired', $allStatus) ?: 0; + (civicrm_membership.membership_type_id = civicrm_membership_type.id {$activeMembershipClause}) +WHERE {$whereClause}"; $query = $baseQuery . " AND civicrm_membership.is_override IS NOT NULL AND civicrm_membership.status_override_end_date IS NOT NULL"; $dao1 = CRM_Core_DAO::executeQuery($query); @@ -2214,18 +2240,14 @@ WHERE civicrm_membership.is_test = 0 } $query = $baseQuery . " AND (civicrm_membership.is_override = 0 OR civicrm_membership.is_override IS NULL) - AND civicrm_membership.status_id NOT IN (%1, %2, %3, %4) + AND {$membershipStatusClause} AND civicrm_membership.owner_membership_id IS NULL "; - $params = [ - 1 => [$pendingStatusId, 'Integer'], - 2 => [$cancelledStatusId, 'Integer'], - 3 => [$expiredStatusId, 'Integer'], - 4 => [$deceaseStatusId, 'Integer'], - ]; - $dao2 = CRM_Core_DAO::executeQuery($query, $params); + + $allMembershipTypes = CRM_Member_BAO_MembershipType::getAllMembershipTypes(); + + $dao2 = CRM_Core_DAO::executeQuery($query, $queryParams); while ($dao2->fetch()) { - // echo "."; $processCount++; // Put common parameters into array for easy access @@ -2234,7 +2256,7 @@ WHERE civicrm_membership.is_test = 0 'status_id' => $dao2->status_id, 'contact_id' => $dao2->contact_id, 'membership_type_id' => $dao2->membership_type_id, - 'membership_type' => $allTypes[$dao2->membership_type_id], + 'membership_type' => $allMembershipTypes[$dao2->membership_type_id]['name'], 'join_date' => $dao2->join_date, 'start_date' => $dao2->start_date, 'end_date' => $dao2->end_date, @@ -2261,7 +2283,6 @@ WHERE civicrm_membership.is_test = 0 $memParams = $memberParams; $memParams['status_id'] = $statusId; $memParams['createActivity'] = TRUE; - $memParams['version'] = 3; // Unset columns which should remain unchanged from their current saved // values. This avoids race condition in which these values may have @@ -2278,7 +2299,7 @@ WHERE civicrm_membership.is_test = 0 //since there is change in status. //process member record. - civicrm_api('membership', 'create', $memParams); + civicrm_api3('membership', 'create', $memParams); $updateCount++; } } diff --git a/civicrm/CRM/Member/BAO/MembershipBlock.php b/civicrm/CRM/Member/BAO/MembershipBlock.php index 46898b0220..94a7cb5ba3 100644 --- a/civicrm/CRM/Member/BAO/MembershipBlock.php +++ b/civicrm/CRM/Member/BAO/MembershipBlock.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_BAO_MembershipBlock extends CRM_Member_DAO_MembershipBlock { diff --git a/civicrm/CRM/Member/BAO/MembershipLog.php b/civicrm/CRM/Member/BAO/MembershipLog.php index daf544ff25..d7fc4f6166 100644 --- a/civicrm/CRM/Member/BAO/MembershipLog.php +++ b/civicrm/CRM/Member/BAO/MembershipLog.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_BAO_MembershipLog extends CRM_Member_DAO_MembershipLog { diff --git a/civicrm/CRM/Member/BAO/MembershipPayment.php b/civicrm/CRM/Member/BAO/MembershipPayment.php index 095caf7d75..32d9af030f 100644 --- a/civicrm/CRM/Member/BAO/MembershipPayment.php +++ b/civicrm/CRM/Member/BAO/MembershipPayment.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_BAO_MembershipPayment extends CRM_Member_DAO_MembershipPayment { diff --git a/civicrm/CRM/Member/BAO/MembershipStatus.php b/civicrm/CRM/Member/BAO/MembershipStatus.php index fc187f186b..fa4a7665f8 100644 --- a/civicrm/CRM/Member/BAO/MembershipStatus.php +++ b/civicrm/CRM/Member/BAO/MembershipStatus.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus { @@ -68,7 +66,6 @@ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus { /** * Takes an associative array and creates a membership Status object. - * See http://wiki.civicrm.org/confluence/display/CRM/Database+layer * * @param array $params * (reference ) an assoc array of name/value pairs. @@ -200,61 +197,45 @@ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus { /** * Find the membership status based on start date, end date, join date & status date. * + * Loop through all the membership status definitions, ordered by their + * weight. For each, we loop through all possible variations of the given + * start, end, and join dates and adjust the starts and ends based on that + * membership status's rules, where the last computed set of adjusted start + * and end becomes a candidate. Then we compare that candidate to either + * "today" or some other given date, and if it falls between the adjusted + * start and end we have a match and we stop looping through status + * definitions. Then we call a hook in case that wasn't enough loops. + * * @param string $startDate * Start date of the member whose membership status is to be calculated. * @param string $endDate * End date of the member whose membership status is to be calculated. * @param string $joinDate * Join date of the member whose membership status is to be calculated. - * @param \date|string $statusDate status date of the member whose membership status is to be calculated. - * @param bool $excludeIsAdmin the statuses those having is_admin = 1. - * Exclude the statuses those having is_admin = 1. + * @param string $statusDate + * Either the string "today" or a date against which we compare the adjusted start and end based on the status rules. + * @param bool $excludeIsAdmin + * Exclude the statuses having is_admin = 1. * @param int $membershipTypeID + * Not used directly but gets passed to the hook. * @param array $membership - * Membership params as available to calling function - passed to the hook. + * Membership params as available to calling function - not used directly but passed to the hook. * * @return array */ public static function getMembershipStatusByDate( $startDate, $endDate, $joinDate, - $statusDate = 'today', $excludeIsAdmin = FALSE, $membershipTypeID, $membership = [] + $statusDate = 'today', $excludeIsAdmin = FALSE, $membershipTypeID = NULL, $membership = [] ) { $membershipDetails = []; if (!$statusDate || $statusDate == 'today') { - $statusDate = getdate(); - $statusDate = date('Ymd', - mktime($statusDate['hours'], - $statusDate['minutes'], - $statusDate['seconds'], - $statusDate['mon'], - $statusDate['mday'], - $statusDate['year'] - ) - ); + $statusDate = date('Ymd'); } else { $statusDate = CRM_Utils_Date::customFormat($statusDate, '%Y%m%d'); } - $dates = ['start', 'end', 'join']; - $events = ['start', 'end']; - - foreach ($dates as $dat) { - if (${$dat . 'Date'} && ${$dat . 'Date'} != "null") { - ${$dat . 'Date'} = CRM_Utils_Date::customFormat(${$dat . 'Date'}, '%Y%m%d'); - - ${$dat . 'Year'} = substr(${$dat . 'Date'}, 0, 4); - - ${$dat . 'Month'} = substr(${$dat . 'Date'}, 4, 2); - - ${$dat . 'Day'} = substr(${$dat . 'Date'}, 6, 2); - } - else { - ${$dat . 'Date'} = ''; - } - } - //fix for CRM-3570, if we have statuses with is_admin=1, //exclude these statuses from calculatation during import. $where = "is_active = 1"; @@ -269,48 +250,56 @@ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus { ORDER BY weight ASC"; $membershipStatus = CRM_Core_DAO::executeQuery($query); - $hour = $minute = $second = 0; + + $dates = [ + 'start' => ($startDate && $startDate !== 'null') ? date('Ymd', strtotime($startDate)) : '', + 'end' => ($endDate && $endDate !== 'null') ? date('Ymd', strtotime($endDate)) : '', + 'join' => ($joinDate && $joinDate !== 'null') ? date('Ymd', strtotime($joinDate)) : '', + ]; while ($membershipStatus->fetch()) { $startEvent = NULL; $endEvent = NULL; - foreach ($events as $eve) { - foreach ($dates as $dat) { + foreach (['start', 'end'] as $eve) { + foreach ($dates as $dat => $date) { // calculate start-event/date and end-event/date - if (($membershipStatus->{$eve . '_event'} == $dat . '_date') && - ${$dat . 'Date'} + if (($membershipStatus->{$eve . '_event'} === $dat . '_date') && + $date ) { if ($membershipStatus->{$eve . '_event_adjust_unit'} && $membershipStatus->{$eve . '_event_adjust_interval'} ) { + $month = date('m', strtotime($date)); + $day = date('d', strtotime($date)); + $year = date('Y', strtotime($date)); // add in months - if ($membershipStatus->{$eve . '_event_adjust_unit'} == 'month') { - ${$eve . 'Event'} = date('Ymd', mktime($hour, $minute, $second, - ${$dat . 'Month'} + $membershipStatus->{$eve . '_event_adjust_interval'}, - ${$dat . 'Day'}, - ${$dat . 'Year'} + if ($membershipStatus->{$eve . '_event_adjust_unit'} === 'month') { + ${$eve . 'Event'} = date('Ymd', mktime(0, 0, 0, + $month + $membershipStatus->{$eve . '_event_adjust_interval'}, + $day, + $year )); } // add in days - if ($membershipStatus->{$eve . '_event_adjust_unit'} == 'day') { - ${$eve . 'Event'} = date('Ymd', mktime($hour, $minute, $second, - ${$dat . 'Month'}, - ${$dat . 'Day'} + $membershipStatus->{$eve . '_event_adjust_interval'}, - ${$dat . 'Year'} + if ($membershipStatus->{$eve . '_event_adjust_unit'} === 'day') { + ${$eve . 'Event'} = date('Ymd', mktime(0, 0, 0, + $month, + $day + $membershipStatus->{$eve . '_event_adjust_interval'}, + $year )); } // add in years - if ($membershipStatus->{$eve . '_event_adjust_unit'} == 'year') { - ${$eve . 'Event'} = date('Ymd', mktime($hour, $minute, $second, - ${$dat . 'Month'}, - ${$dat . 'Day'}, - ${$dat . 'Year'} + $membershipStatus->{$eve . '_event_adjust_interval'} + if ($membershipStatus->{$eve . '_event_adjust_unit'} === 'year') { + ${$eve . 'Event'} = date('Ymd', mktime(0, 0, 0, + $month, + $day, + $year + $membershipStatus->{$eve . '_event_adjust_interval'} )); } // if no interval and unit, present } else { - ${$eve . 'Event'} = ${$dat . 'Date'}; + ${$eve . 'Event'} = $date; } } } diff --git a/civicrm/CRM/Member/BAO/MembershipType.php b/civicrm/CRM/Member/BAO/MembershipType.php index 09b3eef0c4..11593a8e44 100644 --- a/civicrm/CRM/Member/BAO/MembershipType.php +++ b/civicrm/CRM/Member/BAO/MembershipType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { diff --git a/civicrm/CRM/Member/Controller/Search.php b/civicrm/CRM/Member/Controller/Search.php index 4d4e062765..02ca8b7ff6 100644 --- a/civicrm/CRM/Member/Controller/Search.php +++ b/civicrm/CRM/Member/Controller/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Membership.php b/civicrm/CRM/Member/Form/Membership.php index 007971bf21..3c98b8570b 100644 --- a/civicrm/CRM/Member/Form/Membership.php +++ b/civicrm/CRM/Member/Form/Membership.php @@ -497,7 +497,7 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $totalAmount = $values['minimum_fee'] ?? NULL; //CRM-18827 - override the default value if total_amount is submitted if (!empty($this->_submitValues['total_amount'])) { - $totalAmount = $this->_submitValues['total_amount']; + $totalAmount = CRM_Utils_Rule::cleanMoney($this->_submitValues['total_amount']); } // build membership info array, which is used when membership type is selected to: // - set the payment information block @@ -1780,23 +1780,24 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $buttonName = $this->controller->getButtonName(); $session = CRM_Core_Session::singleton(); - if ($this->_context === 'standalone') { - if ($buttonName == $this->getButtonName('upload', 'new')) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/member/add', + if ($buttonName == $this->getButtonName('upload', 'new')) { + if ($this->_context === 'standalone') { + $url = CRM_Utils_System::url('civicrm/member/add', 'reset=1&action=add&context=standalone' - )); + ); } else { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view', - "reset=1&cid={$this->_contactID}&selectedChild=member" - )); + $url = CRM_Utils_System::url('civicrm/contact/view/membership', + "reset=1&action=add&context=membership&cid={$this->_contactID}" + ); } } - elseif ($buttonName == $this->getButtonName('upload', 'new')) { - $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view/membership', - "reset=1&action=add&context=membership&cid={$this->_contactID}" - )); + else { + $url = CRM_Utils_System::url('civicrm/contact/view', + "reset=1&cid={$this->_contactID}&selectedChild=member" + ); } + $session->replaceUserContext($url); } /** diff --git a/civicrm/CRM/Member/Form/MembershipConfig.php b/civicrm/CRM/Member/Form/MembershipConfig.php index e0b349730d..b1a8937256 100644 --- a/civicrm/CRM/Member/Form/MembershipConfig.php +++ b/civicrm/CRM/Member/Form/MembershipConfig.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/MembershipType.php b/civicrm/CRM/Member/Form/MembershipType.php index 096aa786e0..a5c3c7d06d 100644 --- a/civicrm/CRM/Member/Form/MembershipType.php +++ b/civicrm/CRM/Member/Form/MembershipType.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Member/Form/MembershipView.php b/civicrm/CRM/Member/Form/MembershipView.php index 6f4a71580e..348ea4b1eb 100644 --- a/civicrm/CRM/Member/Form/MembershipView.php +++ b/civicrm/CRM/Member/Form/MembershipView.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Search.php b/civicrm/CRM/Member/Form/Search.php index b8bb22b8be..fc0ba94de0 100644 --- a/civicrm/CRM/Member/Form/Search.php +++ b/civicrm/CRM/Member/Form/Search.php @@ -222,8 +222,6 @@ class CRM_Member_Form_Search extends CRM_Core_Form_Search { $this->_formValues["member_test"] = 0; } - CRM_Core_BAO_CustomValue::fixCustomFieldValue($this->_formValues); - $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/Delete.php b/civicrm/CRM/Member/Form/Task/Delete.php index 3f613b1334..e002a53017 100644 --- a/civicrm/CRM/Member/Form/Task/Delete.php +++ b/civicrm/CRM/Member/Form/Task/Delete.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/Label.php b/civicrm/CRM/Member/Form/Task/Label.php index df6aa2d3b0..4ba5fc8525 100644 --- a/civicrm/CRM/Member/Form/Task/Label.php +++ b/civicrm/CRM/Member/Form/Task/Label.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/PDFLetter.php b/civicrm/CRM/Member/Form/Task/PDFLetter.php index 22eb984b8b..3d6019a476 100644 --- a/civicrm/CRM/Member/Form/Task/PDFLetter.php +++ b/civicrm/CRM/Member/Form/Task/PDFLetter.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/PickProfile.php b/civicrm/CRM/Member/Form/Task/PickProfile.php index 87b80cd011..f8fe9db245 100644 --- a/civicrm/CRM/Member/Form/Task/PickProfile.php +++ b/civicrm/CRM/Member/Form/Task/PickProfile.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/Print.php b/civicrm/CRM/Member/Form/Task/Print.php index a3bf5545a1..665561e3ee 100644 --- a/civicrm/CRM/Member/Form/Task/Print.php +++ b/civicrm/CRM/Member/Form/Task/Print.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/Result.php b/civicrm/CRM/Member/Form/Task/Result.php index 7eccff9add..fbf1786123 100644 --- a/civicrm/CRM/Member/Form/Task/Result.php +++ b/civicrm/CRM/Member/Form/Task/Result.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Form/Task/SearchTaskHookSample.php b/civicrm/CRM/Member/Form/Task/SearchTaskHookSample.php index a16c35f3a5..d73ffc549f 100644 --- a/civicrm/CRM/Member/Form/Task/SearchTaskHookSample.php +++ b/civicrm/CRM/Member/Form/Task/SearchTaskHookSample.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Import/Controller.php b/civicrm/CRM/Member/Import/Controller.php index 2696c5b71c..2a57c0a381 100644 --- a/civicrm/CRM/Member/Import/Controller.php +++ b/civicrm/CRM/Member/Import/Controller.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_Import_Controller extends CRM_Core_Controller { diff --git a/civicrm/CRM/Member/Import/Field.php b/civicrm/CRM/Member/Import/Field.php index 2f920277b8..c1898d66e3 100644 --- a/civicrm/CRM/Member/Import/Field.php +++ b/civicrm/CRM/Member/Import/Field.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_Import_Field { diff --git a/civicrm/CRM/Member/Import/Form/DataSource.php b/civicrm/CRM/Member/Import/Form/DataSource.php index 61d5daf090..d6913e9318 100644 --- a/civicrm/CRM/Member/Import/Form/DataSource.php +++ b/civicrm/CRM/Member/Import/Form/DataSource.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -34,17 +32,10 @@ class CRM_Member_Import_Form_DataSource extends CRM_Import_Form_DataSource { public function buildQuickForm() { parent::buildQuickForm(); - $duplicateOptions = []; - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Insert new Membership'), CRM_Import_Parser::DUPLICATE_SKIP - ); - $duplicateOptions[] = $this->createElement('radio', - NULL, NULL, ts('Update existing Membership'), CRM_Import_Parser::DUPLICATE_UPDATE - ); - - $this->addGroup($duplicateOptions, 'onDuplicate', - ts('Import mode') - ); + $this->addRadio('onDuplicate', ts('Import mode'), [ + CRM_Import_Parser::DUPLICATE_SKIP => ts('Insert new Membership'), + CRM_Import_Parser::DUPLICATE_UPDATE => ts('Update existing Membership'), + ]); $this->setDefaults([ 'onDuplicate' => CRM_Import_Parser::DUPLICATE_SKIP, ]); diff --git a/civicrm/CRM/Member/Import/Form/MapField.php b/civicrm/CRM/Member/Import/Form/MapField.php index e7c110692f..aa1ec10b21 100644 --- a/civicrm/CRM/Member/Import/Form/MapField.php +++ b/civicrm/CRM/Member/Import/Form/MapField.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Import/Form/Preview.php b/civicrm/CRM/Member/Import/Form/Preview.php index d3c1f1f2f2..dbf1b1ec4e 100644 --- a/civicrm/CRM/Member/Import/Form/Preview.php +++ b/civicrm/CRM/Member/Import/Form/Preview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Import/Form/Summary.php b/civicrm/CRM/Member/Import/Form/Summary.php index aac4009656..ae20c68144 100644 --- a/civicrm/CRM/Member/Import/Form/Summary.php +++ b/civicrm/CRM/Member/Import/Form/Summary.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Import/Parser.php b/civicrm/CRM/Member/Import/Parser.php index 7ad2f3f4cf..045d336a84 100644 --- a/civicrm/CRM/Member/Import/Parser.php +++ b/civicrm/CRM/Member/Import/Parser.php @@ -13,8 +13,8 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ * + * Class CRM_Member_Import_Parser */ abstract class CRM_Member_Import_Parser extends CRM_Import_Parser { diff --git a/civicrm/CRM/Member/Import/Parser/Membership.php b/civicrm/CRM/Member/Import/Parser/Membership.php index b43b507705..50e75e19ee 100644 --- a/civicrm/CRM/Member/Import/Parser/Membership.php +++ b/civicrm/CRM/Member/Import/Parser/Membership.php @@ -125,7 +125,7 @@ class CRM_Member_Import_Parser_Membership extends CRM_Member_Import_Parser { */ public function summary(&$values) { $erroneousField = NULL; - $response = $this->setActiveFieldValues($values, $erroneousField); + $this->setActiveFieldValues($values, $erroneousField); $errorRequired = FALSE; @@ -268,7 +268,7 @@ class CRM_Member_Import_Parser_Membership extends CRM_Member_Import_Parser { } $session = CRM_Core_Session::singleton(); - $dateType = $session->get('dateTypes'); + $dateType = CRM_Core_Session::singleton()->get('dateTypes'); $formatted = []; $customDataType = !empty($params['contact_type']) ? $params['contact_type'] : 'Membership'; $customFields = CRM_Core_BAO_CustomField::getFields($customDataType); diff --git a/civicrm/CRM/Member/Info.php b/civicrm/CRM/Member/Info.php index 6264d40a56..653bff34c5 100644 --- a/civicrm/CRM/Member/Info.php +++ b/civicrm/CRM/Member/Info.php @@ -16,8 +16,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_Info extends CRM_Core_Component_Info { diff --git a/civicrm/CRM/Member/Page/AJAX.php b/civicrm/CRM/Member/Page/AJAX.php index 85dd654166..c9e14a83a9 100644 --- a/civicrm/CRM/Member/Page/AJAX.php +++ b/civicrm/CRM/Member/Page/AJAX.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Page/DashBoard.php b/civicrm/CRM/Member/Page/DashBoard.php index 62dcf8faeb..353ceeb75a 100644 --- a/civicrm/CRM/Member/Page/DashBoard.php +++ b/civicrm/CRM/Member/Page/DashBoard.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Page/MembershipStatus.php b/civicrm/CRM/Member/Page/MembershipStatus.php index 39a895c3b2..6800dfa905 100644 --- a/civicrm/CRM/Member/Page/MembershipStatus.php +++ b/civicrm/CRM/Member/Page/MembershipStatus.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Page/MembershipType.php b/civicrm/CRM/Member/Page/MembershipType.php index 1012cd28c6..8ef9f712c6 100644 --- a/civicrm/CRM/Member/Page/MembershipType.php +++ b/civicrm/CRM/Member/Page/MembershipType.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/Page/Tab.php b/civicrm/CRM/Member/Page/Tab.php index 6818490f17..ec2300d0ba 100644 --- a/civicrm/CRM/Member/Page/Tab.php +++ b/civicrm/CRM/Member/Page/Tab.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_Page_Tab extends CRM_Core_Page { diff --git a/civicrm/CRM/Member/Page/UserDashboard.php b/civicrm/CRM/Member/Page/UserDashboard.php index 7ac24c15ff..3fcb435fc1 100644 --- a/civicrm/CRM/Member/Page/UserDashboard.php +++ b/civicrm/CRM/Member/Page/UserDashboard.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/PseudoConstant.php b/civicrm/CRM/Member/PseudoConstant.php index 455ff98c9e..c46b3998d4 100644 --- a/civicrm/CRM/Member/PseudoConstant.php +++ b/civicrm/CRM/Member/PseudoConstant.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Member/StateMachine/Search.php b/civicrm/CRM/Member/StateMachine/Search.php index 8d3ea7a3c3..dc05d7f435 100644 --- a/civicrm/CRM/Member/StateMachine/Search.php +++ b/civicrm/CRM/Member/StateMachine/Search.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Member_StateMachine_Search extends CRM_Core_StateMachine { diff --git a/civicrm/CRM/Member/StatusOverrideTypes.php b/civicrm/CRM/Member/StatusOverrideTypes.php index 844b0aef50..57451fafa1 100644 --- a/civicrm/CRM/Member/StatusOverrideTypes.php +++ b/civicrm/CRM/Member/StatusOverrideTypes.php @@ -14,7 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ class CRM_Member_StatusOverrideTypes { /** diff --git a/civicrm/CRM/Member/Task.php b/civicrm/CRM/Member/Task.php index b042abe75a..661f2a72fc 100644 --- a/civicrm/CRM/Member/Task.php +++ b/civicrm/CRM/Member/Task.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Note/Form/Note.php b/civicrm/CRM/Note/Form/Note.php index 4ebc846bc1..574bb9eceb 100644 --- a/civicrm/CRM/Note/Form/Note.php +++ b/civicrm/CRM/Note/Form/Note.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/BAO/PCP.php b/civicrm/CRM/PCP/BAO/PCP.php index 2ea752cded..e71609eccd 100644 --- a/civicrm/CRM/PCP/BAO/PCP.php +++ b/civicrm/CRM/PCP/BAO/PCP.php @@ -464,10 +464,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; ['onclick' => "showHideByValue('pcp_display_in_roll','','nameID|nickID|personalNoteID','block','radio',false); pcpAnonymous( );"] ); $extraOption = ['onclick' => "return pcpAnonymous( );"]; - $elements = []; - $elements[] = &$page->createElement('radio', NULL, '', ts('Include my name and message'), 0, $extraOption); - $elements[] = &$page->createElement('radio', NULL, '', ts('List my support anonymously'), 1, $extraOption); - $page->addGroup($elements, 'pcp_is_anonymous', NULL, ' '); + $page->addRadio('pcp_is_anonymous', '', [ts('Include my name and message'), ts('List my support anonymously')], [], ' ', FALSE, [$extraOption, $extraOption]); $page->_defaults['pcp_is_anonymous'] = 0; $page->add('text', 'pcp_roll_nickname', ts('Name'), ['maxlength' => 30]); @@ -664,7 +661,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; list($domainEmailName, $domainEmailAddress) = CRM_Core_BAO_Domain::getNameAndEmail(); if (!$domainEmailAddress || $domainEmailAddress == 'info@EXAMPLE.ORG') { - $fixUrl = CRM_Utils_System::url("civicrm/admin/domain", 'action=update&reset=1'); + $fixUrl = CRM_Utils_System::url('civicrm/admin/options/from_email_address', 'reset=1'); throw new CRM_Core_Exception(ts('The site administrator needs to enter a valid \'FROM Email Address\' in <a href="%1">Administer CiviCRM » Communications » FROM Email Addresses</a>. The email address used may need to be a valid mail account with your email service provider.', [1 => $fixUrl])); } diff --git a/civicrm/CRM/PCP/Controller/PCP.php b/civicrm/CRM/PCP/Controller/PCP.php index 62339c1bc2..9e15499b16 100644 --- a/civicrm/CRM/PCP/Controller/PCP.php +++ b/civicrm/CRM/PCP/Controller/PCP.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/Form/Contribute.php b/civicrm/CRM/PCP/Form/Contribute.php index 45d6a4b026..8c5b82c7d9 100644 --- a/civicrm/CRM/PCP/Form/Contribute.php +++ b/civicrm/CRM/PCP/Form/Contribute.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/Form/Event.php b/civicrm/CRM/PCP/Form/Event.php index 004282d383..265ee1c623 100644 --- a/civicrm/CRM/PCP/Form/Event.php +++ b/civicrm/CRM/PCP/Form/Event.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/Form/PCP.php b/civicrm/CRM/PCP/Form/PCP.php index d9fbcb7c69..ca2fb16427 100644 --- a/civicrm/CRM/PCP/Form/PCP.php +++ b/civicrm/CRM/PCP/Form/PCP.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/Form/PCPAccount.php b/civicrm/CRM/PCP/Form/PCPAccount.php index 7c96a629cf..70d82bb2c3 100644 --- a/civicrm/CRM/PCP/Form/PCPAccount.php +++ b/civicrm/CRM/PCP/Form/PCPAccount.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/Page/PCP.php b/civicrm/CRM/PCP/Page/PCP.php index c6f9d04bd3..3150662b63 100644 --- a/civicrm/CRM/PCP/Page/PCP.php +++ b/civicrm/CRM/PCP/Page/PCP.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/PCP/Page/PCPInfo.php b/civicrm/CRM/PCP/Page/PCPInfo.php index de831f3b24..437ef4d968 100644 --- a/civicrm/CRM/PCP/Page/PCPInfo.php +++ b/civicrm/CRM/PCP/Page/PCPInfo.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/PCP/StateMachine/PCP.php b/civicrm/CRM/PCP/StateMachine/PCP.php index 6f500bea17..d3b6ba9630 100644 --- a/civicrm/CRM/PCP/StateMachine/PCP.php +++ b/civicrm/CRM/PCP/StateMachine/PCP.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/BAO/LineItem.php b/civicrm/CRM/Price/BAO/LineItem.php index c26c39e2d8..b94b20755a 100644 --- a/civicrm/CRM/Price/BAO/LineItem.php +++ b/civicrm/CRM/Price/BAO/LineItem.php @@ -186,8 +186,8 @@ WHERE li.contribution_id = %1"; */ public static function getLineItems($entityId, $entity = 'participant', $isQuick = FALSE, $isQtyZero = TRUE, $relatedEntity = FALSE) { $whereClause = $fromClause = NULL; - $selectClause = " - SELECT li.id, + $selectClause = ' + SELECT li.id, li.label, li.contribution_id, li.qty, @@ -205,19 +205,19 @@ WHERE li.contribution_id = %1"; li.price_field_value_id, li.financial_type_id, li.tax_amount, - pfv.description"; + pfv.description'; - $condition = "li.entity_id = %2.id AND li.entity_table = 'civicrm_%2'"; + $condition = "li.entity_id = civicrm_%2.id AND li.entity_table = 'civicrm_%2'"; if ($relatedEntity) { - $condition = "li.contribution_id = %2.id "; + $condition = 'li.contribution_id = civicrm_%2.id '; } $fromClause = " - FROM civicrm_%2 as %2 + FROM civicrm_%2 LEFT JOIN civicrm_line_item li ON ({$condition}) - LEFT JOIN civicrm_price_field_value pfv ON ( pfv.id = li.price_field_value_id ) + LEFT JOIN civicrm_price_field_value pfv ON (pfv.id = li.price_field_value_id) LEFT JOIN civicrm_price_field pf ON (pf.id = li.price_field_id )"; - $whereClause = " WHERE %2.id = %1"; + $whereClause = " WHERE civicrm_%2.id = %1"; $orderByClause = " ORDER BY pf.weight, pfv.weight"; if ($isQuick) { diff --git a/civicrm/CRM/Price/BAO/PriceSet.php b/civicrm/CRM/Price/BAO/PriceSet.php index a6e2167d58..d2c1643071 100644 --- a/civicrm/CRM/Price/BAO/PriceSet.php +++ b/civicrm/CRM/Price/BAO/PriceSet.php @@ -862,6 +862,7 @@ WHERE id = %1"; } } } + $form->_priceSet['id'] = $form->_priceSet['id'] ?? $priceSetId; $form->assign('priceSet', $form->_priceSet); $component = 'contribution'; diff --git a/civicrm/CRM/Price/Form/DeleteField.php b/civicrm/CRM/Price/Form/DeleteField.php index 319f38e8a1..b6a961abb8 100644 --- a/civicrm/CRM/Price/Form/DeleteField.php +++ b/civicrm/CRM/Price/Form/DeleteField.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/Form/Option.php b/civicrm/CRM/Price/Form/Option.php index 750bfb7f99..e5f7fc1aaa 100644 --- a/civicrm/CRM/Price/Form/Option.php +++ b/civicrm/CRM/Price/Form/Option.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/Form/Preview.php b/civicrm/CRM/Price/Form/Preview.php index 35f71fa844..c4e87950ae 100644 --- a/civicrm/CRM/Price/Form/Preview.php +++ b/civicrm/CRM/Price/Form/Preview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/Page/Field.php b/civicrm/CRM/Price/Page/Field.php index 20c55449a6..d59d9a0eae 100644 --- a/civicrm/CRM/Price/Page/Field.php +++ b/civicrm/CRM/Price/Page/Field.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/Page/Option.php b/civicrm/CRM/Price/Page/Option.php index a8ea081f50..b3b2f7464a 100644 --- a/civicrm/CRM/Price/Page/Option.php +++ b/civicrm/CRM/Price/Page/Option.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Price/Page/Set.php b/civicrm/CRM/Price/Page/Set.php index 197d366e7a..340b205453 100644 --- a/civicrm/CRM/Price/Page/Set.php +++ b/civicrm/CRM/Price/Page/Set.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Profile/Form.php b/civicrm/CRM/Profile/Form.php index 31fe2d96bd..8d8f46cd88 100644 --- a/civicrm/CRM/Profile/Form.php +++ b/civicrm/CRM/Profile/Form.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Form/Dynamic.php b/civicrm/CRM/Profile/Form/Dynamic.php index db4424ef72..91c98e3f26 100644 --- a/civicrm/CRM/Profile/Form/Dynamic.php +++ b/civicrm/CRM/Profile/Form/Dynamic.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Form/Edit.php b/civicrm/CRM/Profile/Form/Edit.php index e041c1c1f0..7564dc37fc 100644 --- a/civicrm/CRM/Profile/Form/Edit.php +++ b/civicrm/CRM/Profile/Form/Edit.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Page/Listings.php b/civicrm/CRM/Profile/Page/Listings.php index 963d59b27f..c521848e1c 100644 --- a/civicrm/CRM/Profile/Page/Listings.php +++ b/civicrm/CRM/Profile/Page/Listings.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php index e9c5e56995..1311d85c3e 100644 --- a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php +++ b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { diff --git a/civicrm/CRM/Profile/Page/Router.php b/civicrm/CRM/Profile/Page/Router.php index bf439d24f8..3dbd8491f0 100644 --- a/civicrm/CRM/Profile/Page/Router.php +++ b/civicrm/CRM/Profile/Page/Router.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Page/View.php b/civicrm/CRM/Profile/Page/View.php index e23fada8bd..54f563d4e9 100644 --- a/civicrm/CRM/Profile/Page/View.php +++ b/civicrm/CRM/Profile/Page/View.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ /** diff --git a/civicrm/CRM/Profile/Selector/Listings.php b/civicrm/CRM/Profile/Selector/Listings.php index 8c7cd19959..b53a723b4f 100644 --- a/civicrm/CRM/Profile/Selector/Listings.php +++ b/civicrm/CRM/Profile/Selector/Listings.php @@ -491,7 +491,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR if ($editLink && ($mask & CRM_Core_Permission::EDIT)) { // do not allow edit for anon users in joomla frontend, CRM-4668 $config = CRM_Core_Config::singleton(); - if (!$config->userFrameworkFrontend || CRM_Core_Session::singleton()->getLoggedInContactID()) { + if (!$config->userFrameworkFrontend || CRM_Core_Session::getLoggedInContactID()) { $this->_editLink = TRUE; } } diff --git a/civicrm/CRM/Queue/BAO/QueueItem.php b/civicrm/CRM/Queue/BAO/QueueItem.php index 47b0cc233c..3b3f138469 100644 --- a/civicrm/CRM/Queue/BAO/QueueItem.php +++ b/civicrm/CRM/Queue/BAO/QueueItem.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Queue/Menu.php b/civicrm/CRM/Queue/Menu.php index 443b9d7b7f..b3883e569d 100644 --- a/civicrm/CRM/Queue/Menu.php +++ b/civicrm/CRM/Queue/Menu.php @@ -15,8 +15,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ require_once 'CRM/Core/I18n.php'; diff --git a/civicrm/CRM/Report/BAO/Hook.php b/civicrm/CRM/Report/BAO/Hook.php index b2be39e2c6..d922a5d689 100644 --- a/civicrm/CRM/Report/BAO/Hook.php +++ b/civicrm/CRM/Report/BAO/Hook.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Report/BAO/HookInterface.php b/civicrm/CRM/Report/BAO/HookInterface.php index ff054e73aa..69f4093a59 100644 --- a/civicrm/CRM/Report/BAO/HookInterface.php +++ b/civicrm/CRM/Report/BAO/HookInterface.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php index 4733569124..d202b84561 100644 --- a/civicrm/CRM/Report/Form.php +++ b/civicrm/CRM/Report/Form.php @@ -139,11 +139,6 @@ class CRM_Report_Form extends CRM_Core_Form { */ protected $_groupFilter = FALSE; - /** - * Required for civiexportexcel. - */ - public $supportsExportExcel = TRUE; - /** * Has the report been optimised for group filtering. * @@ -158,9 +153,8 @@ class CRM_Report_Form extends CRM_Core_Form { * separately marked every class with a groupFilter in the hope that will trigger * people to fix them as they touch them. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; @@ -1118,6 +1112,37 @@ class CRM_Report_Form extends CRM_Core_Form { return $this->_id; } + /** + * Getter for _outputMode + * + * Note you can implement hook_civicrm_alterReportVar('actions', ...) + * which indirectly allows setting _outputMode if the user chooses + * your action. + * + * @return string + */ + public function getOutputMode():string { + return $this->_outputMode; + } + + /** + * Getter for report header form field value + * + * @return string + */ + public function getReportHeader():string { + return $this->_formValues['report_header'] ?? ''; + } + + /** + * Getter for report footer form field value + * + * @return string + */ + public function getReportFooter():string { + return $this->_formValues['report_footer'] ?? ''; + } + /** * Setter for $_force. * @@ -1440,7 +1465,7 @@ class CRM_Report_Form extends CRM_Core_Form { if (!CRM_Core_Permission::check('view report sql')) { return; } - $ignored_output_modes = ['pdf', 'csv', 'print', 'excel2007']; + $ignored_output_modes = ['pdf', 'csv', 'print']; if (in_array($this->_outputMode, $ignored_output_modes)) { return; } @@ -1686,6 +1711,8 @@ class CRM_Report_Form extends CRM_Core_Form { unset($actions['report_instance.csv']); } + CRM_Utils_Hook::alterReportVar('actions', $actions, $this); + return $actions; } @@ -2844,32 +2871,35 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND CRM_Core_DAO::$_nullObject ); - $this->assign('printOnly', $this->printOnly); - - if ($this->_outputMode == 'print' || - ($this->_sendmail && !$this->_outputMode) - ) { - $this->printOnly = TRUE; - $this->addPaging = FALSE; + if ($this->_sendmail && !$this->_outputMode) { + // If we're here from the mail_report job, then the default there gets + // set to pdf before we get here, but if we're somehow here and sending + // by email and don't have a format set, then use print. + // @todo Is this on purpose - why would they be different defaults? $this->_outputMode = 'print'; + } + + // _outputMode means multiple things and can cover export to file formats, + // like csv, or actions with no output, like save. So this will only set + // a handler if it's one of the former. But it's also possible we have a + // really interesting handler out there. But the point is we don't need to + // know, just to know that a handler doesn't always get set by this call. + $this->setOutputHandler(); + + if (!empty($this->outputHandler)) { if ($this->_sendmail) { + // If we're sending by email these are the only options that make + // sense. + $this->printOnly = TRUE; + $this->addPaging = FALSE; $this->_absoluteUrl = TRUE; } - } - elseif ($this->_outputMode == 'pdf') { - $this->printOnly = TRUE; - $this->addPaging = FALSE; - $this->_absoluteUrl = TRUE; - } - elseif ($this->_outputMode == 'csv') { - $this->printOnly = TRUE; - $this->_absoluteUrl = TRUE; - $this->addPaging = FALSE; - } - elseif ($this->_outputMode == 'excel2007') { - $printOnly = TRUE; - $this->_absoluteUrl = TRUE; - $this->addPaging = FALSE; + else { + // otherwise ask the handler + $this->printOnly = $this->outputHandler->isPrintOnly(); + $this->addPaging = $this->outputHandler->isAddPaging(); + $this->_absoluteUrl = $this->outputHandler->isAbsoluteUrl(); + } } elseif ($this->_outputMode == 'copy' && $this->_criteriaForm) { $this->_createNew = TRUE; @@ -3416,111 +3446,38 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND */ public function endPostProcess(&$rows = NULL) { $this->assign('report_class', get_class($this)); + + // This is used by unit tests, where _outputMode is intentionally blank. + // Is there a reason it couldn't just always do this? It effectively does + // the same thing anyway by assigning it to the template (in + // doTemplateAssignment()). if ($this->_storeResultSet) { $this->_resultSet = $rows; } - if ($this->_outputMode == 'print' || - $this->_outputMode == 'pdf' || - $this->_sendmail - ) { - - $content = $this->compileContent(); - $url = CRM_Utils_System::url("civicrm/report/instance/{$this->_id}", - "reset=1", TRUE - ); - + // Add contacts to group + if ($this->_outputMode == 'group') { + $group = $this->_params['groups']; + $this->add2group($group); + } + else { if ($this->_sendmail) { - $config = CRM_Core_Config::singleton(); - $attachments = []; - - if ($this->_outputMode == 'csv') { - $content - = $this->_formValues['report_header'] . '<p>' . ts('Report URL') . - ": {$url}</p>" . '<p>' . - ts('The report is attached as a CSV file.') . '</p>' . - $this->_formValues['report_footer']; - - $csvFullFilename = $config->templateCompileDir . - CRM_Utils_File::makeFileName('CiviReport.csv'); - $csvContent = CRM_Report_Utils_Report::makeCsv($this, $rows); - file_put_contents($csvFullFilename, $csvContent); - $attachments[] = [ - 'fullPath' => $csvFullFilename, - 'mime_type' => 'text/csv', - 'cleanName' => 'CiviReport.csv', - ]; - } - if ($this->_outputMode == 'pdf') { - // generate PDF content - $pdfFullFilename = $config->templateCompileDir . - CRM_Utils_File::makeFileName('CiviReport.pdf'); - file_put_contents($pdfFullFilename, - CRM_Utils_PDF_Utils::html2pdf($content, "CiviReport.pdf", - TRUE, ['orientation' => 'landscape'] - ) - ); - // generate Email Content - $content - = $this->_formValues['report_header'] . '<p>' . ts('Report URL') . - ": {$url}</p>" . '<p>' . - ts('The report is attached as a PDF file.') . '</p>' . - $this->_formValues['report_footer']; - - $attachments[] = [ - 'fullPath' => $pdfFullFilename, - 'mime_type' => 'application/pdf', - 'cleanName' => 'CiviReport.pdf', - ]; - } - - if (CRM_Report_Utils_Report::mailReport($content, $this->_id, - $this->_outputMode, $attachments - ) - ) { - CRM_Core_Session::setStatus(ts("Report mail has been sent."), ts('Sent'), 'success'); - } - else { - CRM_Core_Session::setStatus(ts("Report mail could not be sent."), ts('Mail Error'), 'error'); - } - return; + $this->sendEmail(); } - elseif ($this->_outputMode == 'print') { - echo $content; - } - else { - // Nb. Once upon a time we used a package called Open Flash Charts to - // draw charts, and we had a feature whereby a browser could send the - // server a PNG version of the chart, which could then be included in a - // PDF by including <img> tags in the HTML for the conversion below. - // - // This feature stopped working when browsers stopped supporting Flash, - // and although we have a different client-side charting library in - // place, we decided not to reimplement the (rather convoluted) - // browser-sending-rendered-chart-to-server process. - // - // If this feature is required in future we should find a better way to - // render charts on the server side, e.g. server-created SVG. - CRM_Utils_PDF_Utils::html2pdf($content, "CiviReport.pdf", FALSE, ['orientation' => 'landscape']); + elseif (!empty($this->outputHandler)) { + $this->outputHandler->download(); + CRM_Utils_System::civiExit(); } - CRM_Utils_System::civiExit(); - } - elseif ($this->_outputMode == 'csv') { - CRM_Report_Utils_Report::export2csv($this, $rows); - } - elseif ($this->_outputMode == 'excel2007') { - CRM_CiviExportExcel_Utils_Report::export2excel2007($this, $rows); - } - elseif ($this->_outputMode == 'group') { - $group = $this->_params['groups']; - $this->add2group($group); + // else we don't need to do anything here since it must have been + // outputMode=save or something like that } } /** * Set store result set indicator to TRUE. * - * @todo explain what this does + * This is used by unit tests, along with getResultSet(), to get just + * the output rows unformatted. */ public function storeResultSet() { $this->_storeResultSet = TRUE; @@ -4338,13 +4295,12 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a } if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $filterName => $filter) { + $filterOp = $this->_params["{$filterName}_op"] ?? ''; if ((isset($this->_params["{$filterName}_value"]) && !CRM_Utils_System::isNull($this->_params["{$filterName}_value"])) || !empty($this->_params["{$filterName}_relative"]) - || CRM_Utils_Array::value("{$filterName}_op", $this->_params) == - 'nll' - || CRM_Utils_Array::value("{$filterName}_op", $this->_params) == - 'nnll' + || $filterOp === 'nll' + || $filterOp === 'nnll' ) { $this->_selectedTables[] = $tableName; $this->filteredTables[] = $tableName; @@ -5998,4 +5954,58 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a return ''; } + /** + * Retrieve a suitable object from the factory depending on the report + * parameters, which typically might just be dependent on outputMode. + * + * If there is no suitable output handler, e.g. if outputMode is "copy", + * then this sets it to NULL. + */ + public function setOutputHandler() { + $this->outputHandler = \Civi\Report\OutputHandlerFactory::singleton()->create($this); + } + + /** + * Send report by email + */ + public function sendEmail() { + if (empty($this->outputHandler)) { + // It's possible to end up here with outputMode unset, so we use + // the "print" handler which was the default before, i.e. include + // it as html in the body. + $oldOutputMode = $this->_outputMode ?? NULL; + $this->_outputMode = 'print'; + $this->setOutputHandler(); + $this->_outputMode = $oldOutputMode; + } + + $mailBody = $this->outputHandler->getMailBody(); + + $attachments = []; + $attachmentFileName = $this->outputHandler->getFileName(); + // It's not always in the form of an attachment, e.g. for 'print' the + // output ends up in $mailBody above. + if ($attachmentFileName) { + $fullFilename = CRM_Core_Config::singleton()->templateCompileDir . CRM_Utils_File::makeFileName($attachmentFileName); + file_put_contents($fullFilename, $this->outputHandler->getOutputString()); + $attachments[] = [ + 'fullPath' => $fullFilename, + 'mime_type' => $this->outputHandler->getMimeType(), + 'cleanName' => $attachmentFileName, + 'charset' => $this->outputHandler->getCharset(), + ]; + } + + // Send the email + // @todo outputMode doesn't seem to get used by mailReport, which is good + // since it shouldn't have any outputMode-related `if` statements in it. + // Someday could remove the param from the function call. + if (CRM_Report_Utils_Report::mailReport($mailBody, $this->_id, $this->_outputMode, $attachments)) { + CRM_Core_Session::setStatus(ts("Report mail has been sent."), ts('Sent'), 'success'); + } + else { + CRM_Core_Session::setStatus(ts("Report mail could not be sent."), ts('Mail Error'), 'error'); + } + } + } diff --git a/civicrm/CRM/Report/Form/Activity.php b/civicrm/CRM/Report/Form/Activity.php index e0c5b6408e..6d430a5a2c 100644 --- a/civicrm/CRM/Report/Form/Activity.php +++ b/civicrm/CRM/Report/Form/Activity.php @@ -28,9 +28,8 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/ActivitySummary.php b/civicrm/CRM/Report/Form/ActivitySummary.php index 0e7e780f91..fe5df28649 100644 --- a/civicrm/CRM/Report/Form/ActivitySummary.php +++ b/civicrm/CRM/Report/Form/ActivitySummary.php @@ -28,9 +28,8 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php index c3f9967b4e..5b43d96f55 100644 --- a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { diff --git a/civicrm/CRM/Report/Form/Case/Demographics.php b/civicrm/CRM/Report/Form/Case/Demographics.php index 6c9f105f85..99346e02e7 100644 --- a/civicrm/CRM/Report/Form/Case/Demographics.php +++ b/civicrm/CRM/Report/Form/Case/Demographics.php @@ -28,9 +28,8 @@ class CRM_Report_Form_Case_Demographics extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Case/Detail.php b/civicrm/CRM/Report/Form/Case/Detail.php index b241faaac0..3cb0fcfbd9 100644 --- a/civicrm/CRM/Report/Form/Case/Detail.php +++ b/civicrm/CRM/Report/Form/Case/Detail.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Case_Detail extends CRM_Report_Form { diff --git a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php index 5a2479b14b..7ad996b7a7 100644 --- a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php +++ b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php @@ -23,9 +23,8 @@ class CRM_Report_Form_Contact_CurrentEmployer extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contact/Detail.php b/civicrm/CRM/Report/Form/Contact/Detail.php index edbff9f3e9..47c98364f3 100644 --- a/civicrm/CRM/Report/Form/Contact/Detail.php +++ b/civicrm/CRM/Report/Form/Contact/Detail.php @@ -33,9 +33,8 @@ class CRM_Report_Form_Contact_Detail extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contact/LoggingDetail.php b/civicrm/CRM/Report/Form/Contact/LoggingDetail.php index 67f50ed51e..38e2e66aa8 100644 --- a/civicrm/CRM/Report/Form/Contact/LoggingDetail.php +++ b/civicrm/CRM/Report/Form/Contact/LoggingDetail.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contact_LoggingDetail extends CRM_Logging_ReportDetail { diff --git a/civicrm/CRM/Report/Form/Contact/Relationship.php b/civicrm/CRM/Report/Form/Contact/Relationship.php index d6873e3408..18ec0c7241 100644 --- a/civicrm/CRM/Report/Form/Contact/Relationship.php +++ b/civicrm/CRM/Report/Form/Contact/Relationship.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { @@ -35,9 +33,8 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; @@ -250,6 +247,7 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { ], 'is_active' => [ 'title' => ts('Is active?'), + 'type' => CRM_Utils_Type::T_BOOLEAN, ], 'relationship_id' => [ 'title' => ts('Rel ID'), @@ -772,8 +770,6 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { $entryFound = TRUE; } - $rows[$rowNum]['civicrm_relationship_is_active'] = $row['civicrm_relationship_is_active'] ? ts('Yes') : ''; - // skip looking further in rows, if first row itself doesn't // have the column we need if (!$entryFound) { diff --git a/civicrm/CRM/Report/Form/Contact/Summary.php b/civicrm/CRM/Report/Form/Contact/Summary.php index c920b08f7d..9261fc6d08 100644 --- a/civicrm/CRM/Report/Form/Contact/Summary.php +++ b/civicrm/CRM/Report/Form/Contact/Summary.php @@ -38,9 +38,8 @@ class CRM_Report_Form_Contact_Summary extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contribute/Bookkeeping.php b/civicrm/CRM/Report/Form/Contribute/Bookkeeping.php index ebec5bd423..f70c7d29d1 100644 --- a/civicrm/CRM/Report/Form/Contribute/Bookkeeping.php +++ b/civicrm/CRM/Report/Form/Contribute/Bookkeeping.php @@ -32,9 +32,8 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php b/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php index edfb9144ab..1ecd40caca 100644 --- a/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php +++ b/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contribute_DeferredRevenue extends CRM_Report_Form { @@ -291,20 +289,20 @@ class CRM_Report_Form_Contribute_DeferredRevenue extends CRM_Report_Form { AND entity_financial_trxn_item.entity_table = 'civicrm_financial_item' INNER JOIN civicrm_financial_trxn {$this->_aliases['civicrm_financial_trxn_1']} ON {$this->_aliases['civicrm_financial_trxn_1']}.to_financial_account_id = {$this->_aliases['civicrm_financial_account']}.id - AND {$this->_aliases['civicrm_financial_trxn_1']}.id = entity_financial_trxn_item.financial_trxn_id + AND {$this->_aliases['civicrm_financial_trxn_1']}.id = entity_financial_trxn_item.financial_trxn_id INNER JOIN civicrm_entity_financial_trxn financial_trxn_contribution ON financial_trxn_contribution.financial_trxn_id = {$this->_aliases['civicrm_financial_trxn_1']}.id AND financial_trxn_contribution.entity_table = 'civicrm_contribution' INNER JOIN civicrm_entity_financial_trxn entity_financial_trxn_contribution ON entity_financial_trxn_contribution.entity_id = {$this->_aliases['civicrm_financial_item']}.id - AND entity_financial_trxn_contribution.entity_table = 'civicrm_financial_item' + AND entity_financial_trxn_contribution.entity_table = 'civicrm_financial_item' INNER JOIN civicrm_financial_trxn {$this->_aliases['civicrm_financial_trxn']} ON {$this->_aliases['civicrm_financial_trxn']}.id = entity_financial_trxn_contribution.financial_trxn_id AND ({$this->_aliases['civicrm_financial_trxn']}.from_financial_account_id NOT IN (" . implode(',', array_keys($this->_deferredFinancialAccount)) . ") OR {$this->_aliases['civicrm_financial_trxn']}.from_financial_account_id IS NULL) INNER JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} ON {$this->_aliases['civicrm_contribution']}.id = financial_trxn_contribution.entity_id - INNER JOIN civicrm_line_item line_item + INNER JOIN civicrm_line_item line_item ON line_item.contribution_id = {$this->_aliases['civicrm_contribution']}.id AND line_item.financial_type_id = entity_financial_account_deferred.entity_id LEFT JOIN civicrm_participant {$this->_aliases['civicrm_participant']} diff --git a/civicrm/CRM/Report/Form/Contribute/Detail.php b/civicrm/CRM/Report/Form/Contribute/Detail.php index 73c1369b3a..14b5facbd9 100644 --- a/civicrm/CRM/Report/Form/Contribute/Detail.php +++ b/civicrm/CRM/Report/Form/Contribute/Detail.php @@ -59,9 +59,8 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { /** * This report has been optimised for group filtering. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; @@ -411,6 +410,7 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { * @param $rows * * @return array + * @throws \CRM_Core_Exception */ public function statistics(&$rows) { $statistics = parent::statistics($rows); @@ -418,17 +418,21 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { $totalAmount = $average = $fees = $net = []; $count = 0; $select = " - SELECT COUNT({$this->_aliases['civicrm_contribution']}.total_amount ) as count, - SUM( {$this->_aliases['civicrm_contribution']}.total_amount ) as amount, - ROUND(AVG({$this->_aliases['civicrm_contribution']}.total_amount), 2) as avg, - {$this->_aliases['civicrm_contribution']}.currency as currency, - SUM( {$this->_aliases['civicrm_contribution']}.fee_amount ) as fees, - SUM( {$this->_aliases['civicrm_contribution']}.net_amount ) as net + SELECT COUNT(civicrm_contribution_total_amount ) as count, + SUM( civicrm_contribution_total_amount ) as amount, + ROUND(AVG(civicrm_contribution_total_amount), 2) as avg, + stats.currency as currency, + SUM( stats.fee_amount ) as fees, + SUM( stats.net_amount ) as net "; - $group = "\nGROUP BY {$this->_aliases['civicrm_contribution']}.currency"; - $sql = "{$select} {$this->_from} {$this->_where} {$group}"; + $group = "\nGROUP BY civicrm_contribution_currency"; + $from = " FROM {$this->temporaryTables['civireport_contribution_detail_temp3']['name']} " + . "JOIN civicrm_contribution stats ON {$this->temporaryTables['civireport_contribution_detail_temp3']['name']}.civicrm_contribution_contribution_id = stats.id "; + $sql = "{$select} {$from} {$group} "; + CRM_Core_DAO::disableFullGroupByMode(); $dao = CRM_Core_DAO::executeQuery($sql); + CRM_Core_DAO::reenableFullGroupByMode(); $this->addToDeveloperTab($sql); while ($dao->fetch()) { diff --git a/civicrm/CRM/Report/Form/Contribute/Lybunt.php b/civicrm/CRM/Report/Form/Contribute/Lybunt.php index 4bba286d07..101717609d 100644 --- a/civicrm/CRM/Report/Form/Contribute/Lybunt.php +++ b/civicrm/CRM/Report/Form/Contribute/Lybunt.php @@ -51,9 +51,8 @@ class CRM_Report_Form_Contribute_Lybunt extends CRM_Report_Form { /** * This report has been optimised for group filtering. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; diff --git a/civicrm/CRM/Report/Form/Contribute/PCP.php b/civicrm/CRM/Report/Form/Contribute/PCP.php index 3b640a8d6d..d2ec81d21c 100644 --- a/civicrm/CRM/Report/Form/Contribute/PCP.php +++ b/civicrm/CRM/Report/Form/Contribute/PCP.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contribute_PCP extends CRM_Report_Form { diff --git a/civicrm/CRM/Report/Form/Contribute/Recur.php b/civicrm/CRM/Report/Form/Contribute/Recur.php index d53af38f0f..6f0109d284 100644 --- a/civicrm/CRM/Report/Form/Contribute/Recur.php +++ b/civicrm/CRM/Report/Form/Contribute/Recur.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contribute_Recur extends CRM_Report_Form { @@ -25,9 +23,8 @@ class CRM_Report_Form_Contribute_Recur extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contribute/RecurSummary.php b/civicrm/CRM/Report/Form/Contribute/RecurSummary.php index 9599ddb5d1..403ad49530 100644 --- a/civicrm/CRM/Report/Form/Contribute/RecurSummary.php +++ b/civicrm/CRM/Report/Form/Contribute/RecurSummary.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contribute_RecurSummary extends CRM_Report_Form { diff --git a/civicrm/CRM/Report/Form/Contribute/Repeat.php b/civicrm/CRM/Report/Form/Contribute/Repeat.php index aa4846c532..d5044a08e7 100644 --- a/civicrm/CRM/Report/Form/Contribute/Repeat.php +++ b/civicrm/CRM/Report/Form/Contribute/Repeat.php @@ -69,9 +69,8 @@ class CRM_Report_Form_Contribute_Repeat extends CRM_Report_Form { /** * This report has been optimised for group filtering. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; diff --git a/civicrm/CRM/Report/Form/Contribute/SoftCredit.php b/civicrm/CRM/Report/Form/Contribute/SoftCredit.php index 4394c70b2c..8370e74203 100644 --- a/civicrm/CRM/Report/Form/Contribute/SoftCredit.php +++ b/civicrm/CRM/Report/Form/Contribute/SoftCredit.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Contribute_SoftCredit extends CRM_Report_Form { @@ -43,9 +41,8 @@ class CRM_Report_Form_Contribute_SoftCredit extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Contribute/Summary.php b/civicrm/CRM/Report/Form/Contribute/Summary.php index 29dd59842e..b7c40f5a19 100644 --- a/civicrm/CRM/Report/Form/Contribute/Summary.php +++ b/civicrm/CRM/Report/Form/Contribute/Summary.php @@ -43,9 +43,8 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { /** * This report has been optimised for group filtering. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; diff --git a/civicrm/CRM/Report/Form/Contribute/Sybunt.php b/civicrm/CRM/Report/Form/Contribute/Sybunt.php index ec142d1a4a..1b45af360e 100644 --- a/civicrm/CRM/Report/Form/Contribute/Sybunt.php +++ b/civicrm/CRM/Report/Form/Contribute/Sybunt.php @@ -33,9 +33,8 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form { /** * This report has been optimised for group filtering. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; diff --git a/civicrm/CRM/Report/Form/Contribute/TopDonor.php b/civicrm/CRM/Report/Form/Contribute/TopDonor.php index 72a7243df4..83d903950e 100644 --- a/civicrm/CRM/Report/Form/Contribute/TopDonor.php +++ b/civicrm/CRM/Report/Form/Contribute/TopDonor.php @@ -30,9 +30,8 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Event/Income.php b/civicrm/CRM/Report/Form/Event/Income.php index 6a10c9fa0c..51caf3d4b1 100644 --- a/civicrm/CRM/Report/Form/Event/Income.php +++ b/civicrm/CRM/Report/Form/Event/Income.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Event_Income extends CRM_Report_Form { const ROW_COUNT_LIMIT = 2; diff --git a/civicrm/CRM/Report/Form/Event/ParticipantListCount.php b/civicrm/CRM/Report/Form/Event/ParticipantListCount.php index 31a0f70ab1..6e98f4be8b 100644 --- a/civicrm/CRM/Report/Form/Event/ParticipantListCount.php +++ b/civicrm/CRM/Report/Form/Event/ParticipantListCount.php @@ -30,9 +30,8 @@ class CRM_Report_Form_Event_ParticipantListCount extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Instance.php b/civicrm/CRM/Report/Form/Instance.php index 8aa9d4674c..76d6e2c9f8 100644 --- a/civicrm/CRM/Report/Form/Instance.php +++ b/civicrm/CRM/Report/Form/Instance.php @@ -365,7 +365,7 @@ class CRM_Report_Form_Instance { else { $statusMsg = ts('"%1" report has been successfully created. You are currently viewing the new report instance.', [1 => $instance->title]); } - CRM_Core_Session::setStatus($statusMsg); + CRM_Core_Session::setStatus($statusMsg, '', 'success'); if ($redirect) { $urlParams = ['reset' => 1]; diff --git a/civicrm/CRM/Report/Form/Mailing/Bounce.php b/civicrm/CRM/Report/Form/Mailing/Bounce.php index cfb798c179..4df4086508 100644 --- a/civicrm/CRM/Report/Form/Mailing/Bounce.php +++ b/civicrm/CRM/Report/Form/Mailing/Bounce.php @@ -42,9 +42,8 @@ class CRM_Report_Form_Mailing_Bounce extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Mailing/Clicks.php b/civicrm/CRM/Report/Form/Mailing/Clicks.php index bc96f7f9e3..7634844176 100644 --- a/civicrm/CRM/Report/Form/Mailing/Clicks.php +++ b/civicrm/CRM/Report/Form/Mailing/Clicks.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Mailing_Clicks extends CRM_Report_Form { @@ -44,9 +42,8 @@ class CRM_Report_Form_Mailing_Clicks extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Mailing/Detail.php b/civicrm/CRM/Report/Form/Mailing/Detail.php index 5eab237061..f6902c03b7 100644 --- a/civicrm/CRM/Report/Form/Mailing/Detail.php +++ b/civicrm/CRM/Report/Form/Mailing/Detail.php @@ -32,9 +32,8 @@ class CRM_Report_Form_Mailing_Detail extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Mailing/Opened.php b/civicrm/CRM/Report/Form/Mailing/Opened.php index 5db163b7eb..142d8d3d32 100644 --- a/civicrm/CRM/Report/Form/Mailing/Opened.php +++ b/civicrm/CRM/Report/Form/Mailing/Opened.php @@ -42,9 +42,8 @@ class CRM_Report_Form_Mailing_Opened extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Member/ContributionDetail.php b/civicrm/CRM/Report/Form/Member/ContributionDetail.php index ae05cbc939..69dd87b8c8 100644 --- a/civicrm/CRM/Report/Form/Member/ContributionDetail.php +++ b/civicrm/CRM/Report/Form/Member/ContributionDetail.php @@ -31,9 +31,8 @@ class CRM_Report_Form_Member_ContributionDetail extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; @@ -517,7 +516,6 @@ class CRM_Report_Form_Member_ContributionDetail extends CRM_Report_Form { FROM civicrm_contribution contribution INNER JOIN civicrm_contact {$this->_aliases['civicrm_contact']} ON {$this->_aliases['civicrm_contact']}.id = contribution.contact_id AND contribution.is_test = 0 - {$this->_aclFrom} LEFT JOIN civicrm_membership_payment mp ON contribution.id = mp.contribution_id LEFT JOIN civicrm_membership m diff --git a/civicrm/CRM/Report/Form/Member/Detail.php b/civicrm/CRM/Report/Form/Member/Detail.php index 5bbe1d5407..67ced4a650 100644 --- a/civicrm/CRM/Report/Form/Member/Detail.php +++ b/civicrm/CRM/Report/Form/Member/Detail.php @@ -35,10 +35,8 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { * The functionality for group filtering has been improved but not * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. - * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = FALSE; @@ -223,6 +221,25 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { ], 'grouping' => 'contri-fields', ], + 'civicrm_contribution_recur' => [ + 'dao' => 'CRM_Contribute_DAO_ContributionRecur', + 'fields' => [ + 'autorenew_status_id' => [ + 'name' => 'contribution_status_id', + 'title' => ts('Auto-Renew Subscription Status'), + ], + ], + 'filters' => [ + 'autorenew_status_id' => [ + 'name' => 'contribution_status_id', + 'title' => ts('Auto-Renew Subscription Status?'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => [0 => ts('None'), -1 => ts('Ended')] + CRM_Contribute_BAO_ContributionRecur::buildOptions('contribution_status_id', 'search'), + 'type' => CRM_Utils_Type::T_INT, + ], + ], + 'grouping' => 'member-fields', + ], ] + $this->getAddressColumns([ // These options are only excluded because they were not previously present. 'order_by' => FALSE, @@ -243,6 +260,23 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { parent::preProcess(); } + public function select() { + parent::select(); + if (in_array('civicrm_contribution_recur_autorenew_status_id', $this->_selectAliases)) { + // If we're getting auto-renew status we'll want to know if auto-renew has + // ended. + $this->_selectClauses[] = "{$this->_aliases['civicrm_contribution_recur']}.end_date as civicrm_contribution_recur_end_date"; + $this->_selectAliases[] = 'civicrm_contribution_recur_end_date'; + // Regenerate SELECT part of query + $this->_select = "SELECT " . implode(', ', $this->_selectClauses) . " "; + $this->_columnHeaders["civicrm_contribution_recur_end_date"] = [ + 'title' => NULL, + 'type' => NULL, + 'no_display' => TRUE, + ]; + } + } + public function from() { $this->setFromBase('civicrm_contact'); $this->_from .= " @@ -266,6 +300,80 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { LEFT JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} ON cmp.contribution_id={$this->_aliases['civicrm_contribution']}.id\n"; } + if ($this->isTableSelected('civicrm_contribution_recur')) { + $this->_from .= <<<HERESQL + LEFT JOIN civicrm_contribution_recur {$this->_aliases['civicrm_contribution_recur']} + ON {$this->_aliases['civicrm_membership']}.contribution_recur_id = {$this->_aliases['civicrm_contribution_recur']}.id +HERESQL; + } + } + + /** + * Override to add handling for autorenew status. + */ + public function whereClause(&$field, $op, $value, $min, $max) { + if ($field['dbAlias'] == "{$this->_aliases['civicrm_contribution_recur']}.contribution_status_id") { + $clauseParts = []; + switch ($op) { + case 'in': + if ($value !== NULL && is_array($value) && count($value) > 0) { + $regularOptions = implode(', ', array_diff($value, [0, -1])); + // None: is null + if (in_array(0, $value)) { + $clauseParts[] = "{$this->_aliases['civicrm_membership']}.contribution_recur_id IS NULL"; + } + // Ended: not null, end_date in past + if (in_array(-1, $value)) { + $clauseParts[] = <<<HERESQL + {$this->_aliases['civicrm_membership']}.contribution_recur_id IS NOT NULL + AND {$this->_aliases['civicrm_contribution_recur']}.end_date < NOW() +HERESQL; + } + // Normal statuses: IN() + if (!empty($regularOptions)) { + $clauseParts[] = "{$this->_aliases['civicrm_contribution_recur']}.contribution_status_id IN ($regularOptions)"; + } + // Double parentheses b/c ORs should be treated as a group + return '((' . implode(') OR (', $clauseParts) . '))'; + } + return; + + case 'notin': + if ($value !== NULL && is_array($value) && count($value) > 0) { + $regularOptions = implode(', ', array_diff($value, [0, -1])); + // None: is not null + if (in_array(0, $value)) { + $clauseParts[] = "{$this->_aliases['civicrm_membership']}.contribution_recur_id IS NOT NULL"; + } + // Ended: null or end_date in future + if (in_array(-1, $value)) { + $clauseParts[] = <<<HERESQL + {$this->_aliases['civicrm_membership']}.contribution_recur_id IS NULL + OR {$this->_aliases['civicrm_contribution_recur']}.end_date >= NOW() + OR {$this->_aliases['civicrm_contribution_recur']}.end_date IS NULL +HERESQL; + } + // Normal statuses: null or NOT IN() + if (!empty($regularOptions)) { + $clauseParts[] = <<<HERESQL + {$this->_aliases['civicrm_membership']}.contribution_recur_id IS NULL + OR {$this->_aliases['civicrm_contribution_recur']}.contribution_status_id NOT IN ($regularOptions) +HERESQL; + } + return '(' . implode(') AND (', $clauseParts) . ')'; + } + return; + + case 'nll': + return "{$this->_aliases['civicrm_membership']}.contribution_recur_id IS NULL"; + + case 'nnll': + return "{$this->_aliases['civicrm_membership']}.contribution_recur_id IS NOT NULL"; + } + } + else { + return parent::whereClause($field, $op, $value, $min, $max); + } } public function getOperationPair($type = "string", $fieldName = NULL) { @@ -369,6 +477,15 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { $rows[$rowNum]['civicrm_contribution_payment_instrument_id'] = $paymentInstruments[$value]; $entryFound = TRUE; } + if ($value = $row['civicrm_contribution_recur_autorenew_status_id'] ?? NULL) { + $rows[$rowNum]['civicrm_contribution_recur_autorenew_status_id'] = $contributionStatus[$value]; + if (!empty($row['civicrm_contribution_recur_end_date']) + && strtotime($row['civicrm_contribution_recur_end_date']) < time()) { + $ended = ts('ended'); + $rows[$rowNum]['civicrm_contribution_recur_autorenew_status_id'] .= " ($ended)"; + } + $entryFound = TRUE; + } if (array_key_exists('civicrm_membership_owner_membership_id', $row)) { $value = $row['civicrm_membership_owner_membership_id']; diff --git a/civicrm/CRM/Report/Form/Member/Lapse.php b/civicrm/CRM/Report/Form/Member/Lapse.php index acdb9a16b0..864c70ef34 100644 --- a/civicrm/CRM/Report/Form/Member/Lapse.php +++ b/civicrm/CRM/Report/Form/Member/Lapse.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Member_Lapse extends CRM_Report_Form { @@ -32,9 +30,8 @@ class CRM_Report_Form_Member_Lapse extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Member/Summary.php b/civicrm/CRM/Report/Form/Member/Summary.php index 1bd21077b7..7cb3dd125f 100644 --- a/civicrm/CRM/Report/Form/Member/Summary.php +++ b/civicrm/CRM/Report/Form/Member/Summary.php @@ -36,9 +36,8 @@ class CRM_Report_Form_Member_Summary extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Pledge/Detail.php b/civicrm/CRM/Report/Form/Pledge/Detail.php index d8e66c78e5..75de4ab4e7 100644 --- a/civicrm/CRM/Report/Form/Pledge/Detail.php +++ b/civicrm/CRM/Report/Form/Pledge/Detail.php @@ -42,9 +42,8 @@ class CRM_Report_Form_Pledge_Detail extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Pledge/Summary.php b/civicrm/CRM/Report/Form/Pledge/Summary.php index 0adf1b860c..d3f853e806 100644 --- a/civicrm/CRM/Report/Form/Pledge/Summary.php +++ b/civicrm/CRM/Report/Form/Pledge/Summary.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Pledge_Summary extends CRM_Report_Form { @@ -30,9 +28,8 @@ class CRM_Report_Form_Pledge_Summary extends CRM_Report_Form { * all reports have been adjusted to take care of it. This report has not * and will run an inefficient query until fixed. * - * CRM-19170 - * * @var bool + * @see https://issues.civicrm.org/jira/browse/CRM-19170 */ protected $groupFilterNotOptimised = TRUE; diff --git a/civicrm/CRM/Report/Form/Register.php b/civicrm/CRM/Report/Form/Register.php index c6d1babef5..cc1440150e 100644 --- a/civicrm/CRM/Report/Form/Register.php +++ b/civicrm/CRM/Report/Form/Register.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Form_Register extends CRM_Core_Form { public $_id; diff --git a/civicrm/CRM/Report/Info.php b/civicrm/CRM/Report/Info.php index 2d5f48f935..f86b06cf65 100644 --- a/civicrm/CRM/Report/Info.php +++ b/civicrm/CRM/Report/Info.php @@ -15,8 +15,6 @@ * abstract class. * * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Info extends CRM_Core_Component_Info { diff --git a/civicrm/CRM/Report/Interface.php b/civicrm/CRM/Report/Interface.php deleted file mode 100644 index 31c8aa50d0..0000000000 --- a/civicrm/CRM/Report/Interface.php +++ /dev/null @@ -1,109 +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 - */ -interface CRM_Report_Interface { - - /** - * The constructor gets the submitted form values. - * - * @param array $formValues - */ - public function __construct(&$formValues); - - /** - * Builds the quickform for this search. - * - * @param CRM_Core_Form $form - */ - public function buildForm(&$form); - - /** - * Builds the search query for various cases. We break it down into finer cases - * since you can optimize each query independently. All the functions below return - * a sql clause with only SELECT, FROM, WHERE sub-parts. The ORDER BY and LIMIT is - * added at a later stage - */ - - /** - * Count of records that match the current input parameters Used by pager. - */ - public function count(); - - /** - * Summary information for the query that can be displayed in the template. - * - * This is useful to pass total / sub total information if needed - */ - public function summary(); - - /** - * Get contact IDs. - * - * List of contact ids that match the current input parameters - * Used by different tasks. Will be also used to optimize the - * 'all' query below to avoid excessive LEFT JOIN blowup - * - * @param int $offset - * @param int $rowcount - * @param string $sort - */ - public function contactIDs($offset = 0, $rowcount = 0, $sort = NULL); - - /** - * Retrieve all the values that match the current input parameters used by the selector. - * - * @param int $offset - * @param int $rowcount - * @param string $sort - * @param bool $includeContactIDs - */ - public function all( - $offset = 0, $rowcount = 0, $sort = NULL, - $includeContactIDs = FALSE - ); - - /** - * The below two functions (from and where) are ONLY used if you want to - * expose a custom group as a smart group and be able to send a mailing - * to them via CiviMail. civicrm_email should be part of the from clause - * The from clause should be a valid sql from clause including the word FROM - * CiviMail will pick up the contacts where the email is primary and - * is not on hold / opt out / do not email - */ - - /** - * The from clause for the query. - */ - public function from(); - - /** - * The where clause for the query. - * - * @param bool $includeContactIDs - */ - public function where($includeContactIDs = FALSE); - - /** - * The template FileName to use to display the results. - */ - public function templateFile(); - - /** - * Returns an array of column headers and field names and sort options. - */ - public function &columns(); - -} diff --git a/civicrm/CRM/Report/OutputHandler/Csv.php b/civicrm/CRM/Report/OutputHandler/Csv.php new file mode 100644 index 0000000000..475e20aed3 --- /dev/null +++ b/civicrm/CRM/Report/OutputHandler/Csv.php @@ -0,0 +1,105 @@ +<?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\Report\OutputHandlerInterface; +use Civi\Report\OutputHandlerBase; + +/** + * CSV Report Output Handler + */ +class CRM_Report_OutputHandler_Csv extends OutputHandlerBase implements OutputHandlerInterface { + + /** + * Are we a suitable output handler based on the given form? + * + * The class member $form isn't set yet at this point since we don't + * even know if we're in play yet, so the form is a parameter. + * + * @param CRM_Report_Form $form + * + * @return bool + */ + public function isOutputHandlerFor(CRM_Report_Form $form):bool { + return ($form->getOutputMode() === 'csv'); + } + + /** + * Return the download filename. This should be the "clean" name, not + * a munged temporary filename. + * + * @return string + */ + public function getFileName():string { + return 'CiviReport.csv'; + } + + /** + * Return the html body of the email. + * + * @return string + */ + public function getMailBody():string { + // @todo It would be nice if this was more end-user configurable, but + // keeping it the same as it was before for now. + $url = CRM_Utils_System::url('civicrm/report/instance/' . $this->getForm()->getID(), 'reset=1', TRUE); + return $this->getForm()->getReportHeader() . '<p>' . ts('Report URL') . + ": {$url}</p>" . '<p>' . + ts('The report is attached as a CSV file.') . '</p>' . + $this->getForm()->getReportFooter(); + } + + /** + * Return the report contents as a string, in this case the csv output. + * + * @return string + */ + public function getOutputString():string { + //@todo Hmm. See note in CRM_Report_Form::endPostProcess about $rows. + $rows = $this->getForm()->getTemplate()->get_template_vars('rows'); + + // avoid pass-by-ref warning + $form = $this->getForm(); + + return CRM_Report_Utils_Report::makeCsv($form, $rows); + } + + /** + * Set headers as appropriate and send the output to the browser. + */ + public function download() { + //@todo Hmm. See note in CRM_Report_Form::endPostProcess about $rows. + $rows = $this->getForm()->getTemplate()->get_template_vars('rows'); + + // avoid pass-by-ref warning + $form = $this->getForm(); + + CRM_Report_Utils_Report::export2csv($form, $rows); + } + + /** + * Mime type of the attachment. + * + * @return string + */ + public function getMimeType():string { + return 'text/csv'; + } + + /** + * Charset of the attachment. + * + * @return string + */ + public function getCharset():string { + return 'utf-8'; + } + +} diff --git a/civicrm/CRM/Report/OutputHandler/Pdf.php b/civicrm/CRM/Report/OutputHandler/Pdf.php new file mode 100644 index 0000000000..420b1eee78 --- /dev/null +++ b/civicrm/CRM/Report/OutputHandler/Pdf.php @@ -0,0 +1,107 @@ +<?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\Report\OutputHandlerInterface; +use Civi\Report\OutputHandlerBase; + +/** + * PDF Report Output Handler + */ +class CRM_Report_OutputHandler_Pdf extends OutputHandlerBase implements OutputHandlerInterface { + + /** + * Are we a suitable output handler based on the given form? + * + * The class member $form isn't set yet at this point since we don't + * even know if we're in play yet, so the form is a parameter. + * + * @param CRM_Report_Form $form + * + * @return bool + */ + public function isOutputHandlerFor(CRM_Report_Form $form):bool { + return ($form->getOutputMode() === 'pdf'); + } + + /** + * Return the download filename. This should be the "clean" name, not + * a munged temporary filename. + * + * @return string + */ + public function getFileName():string { + return 'CiviReport.pdf'; + } + + /** + * Return the html body of the email. + * + * @return string + */ + public function getMailBody():string { + // @todo It would be nice if this was more end-user configurable, but + // keeping it the same as it was before for now. + $url = CRM_Utils_System::url('civicrm/report/instance/' . $this->getForm()->getID(), 'reset=1', TRUE); + return $this->getForm()->getReportHeader() . '<p>' . ts('Report URL') . + ": {$url}</p>" . '<p>' . + ts('The report is attached as a PDF file.') . '</p>' . + $this->getForm()->getReportFooter(); + } + + /** + * Return the report contents as a string, in this case the pdf file. + * + * @return string + */ + public function getOutputString():string { + return CRM_Utils_PDF_Utils::html2pdf( + $this->getForm()->compileContent(), + $this->getFileName(), + TRUE, + ['orientation' => 'landscape'] + ); + } + + /** + * Set headers as appropriate and send the output to the browser. + */ + public function download() { + // Nb. Once upon a time we used a package called Open Flash Charts to + // draw charts, and we had a feature whereby a browser could send the + // server a PNG version of the chart, which could then be included in a + // PDF by including <img> tags in the HTML for the conversion below. + // + // This feature stopped working when browsers stopped supporting Flash, + // and although we have a different client-side charting library in + // place, we decided not to reimplement the (rather convoluted) + // browser-sending-rendered-chart-to-server process. + // + // If this feature is required in future we should find a better way to + // render charts on the server side, e.g. server-created SVG. + + CRM_Utils_PDF_Utils::html2pdf( + $this->getForm()->compileContent(), + $this->getFileName(), + FALSE, + ['orientation' => 'landscape'] + ); + } + + /** + * Mime type of the attachment. + * + * @return string + */ + public function getMimeType():string { + return 'application/pdf'; + } + +} diff --git a/civicrm/CRM/Report/OutputHandler/Print.php b/civicrm/CRM/Report/OutputHandler/Print.php new file mode 100644 index 0000000000..02e04ea184 --- /dev/null +++ b/civicrm/CRM/Report/OutputHandler/Print.php @@ -0,0 +1,81 @@ +<?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\Report\OutputHandlerInterface; +use Civi\Report\OutputHandlerBase; + +/** + * CSV Report Output Handler + */ +class CRM_Report_OutputHandler_Print extends OutputHandlerBase implements OutputHandlerInterface { + + /** + * Are we a suitable output handler based on the given form? + * + * The class member $form isn't set yet at this point since we don't + * even know if we're in play yet, so the form is a parameter. + * + * @param CRM_Report_Form $form + * + * @return bool + */ + public function isOutputHandlerFor(CRM_Report_Form $form):bool { + return ($form->getOutputMode() === 'print'); + } + + /** + * Return the download filename. This should be the "clean" name, not + * a munged temporary filename. + * + * For 'print' there is no attachment. + * + * @return string + */ + public function getFileName():string { + return ''; + } + + /** + * Return the html body of the email. + * + * @return string + */ + public function getMailBody():string { + return $this->getOutputString(); + } + + /** + * Return the report contents as a string. + * + * @return string + */ + public function getOutputString():string { + return $this->getForm()->compileContent(); + } + + /** + * Set headers as appropriate and send the output to the browser. + * Here the headers are already text/html. + */ + public function download() { + echo $this->getOutputString(); + } + + /** + * Override so links displayed in the browser are relative. + * + * @return bool + */ + public function isAbsoluteUrl():bool { + return FALSE; + } + +} diff --git a/civicrm/CRM/Report/Utils/Get.php b/civicrm/CRM/Report/Utils/Get.php index 59cfbf7c4e..536fe3f422 100644 --- a/civicrm/CRM/Report/Utils/Get.php +++ b/civicrm/CRM/Report/Utils/Get.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Report_Utils_Get { diff --git a/civicrm/CRM/Report/Utils/Report.php b/civicrm/CRM/Report/Utils/Report.php index e2ca8de213..b3fd9556fa 100644 --- a/civicrm/CRM/Report/Utils/Report.php +++ b/civicrm/CRM/Report/Utils/Report.php @@ -209,10 +209,6 @@ WHERE inst.report_id = %1"; //Force a download and name the file using the current timestamp. $datetime = date('Ymd-Gi', $_SERVER['REQUEST_TIME']); CRM_Utils_System::setHttpHeader('Content-Disposition', 'attachment; filename=Report_' . $datetime . '.csv'); - // Output UTF BOM so that MS Excel copes with diacritics. This is recommended as - // the Windows variant but is tested with MS Excel for Mac (Office 365 v 16.31) - // and it continues to work on Libre Office, Numbers, Notes etc. - echo "\xEF\xBB\xBF"; echo self::makeCsv($form, $rows); CRM_Utils_System::civiExit(); } @@ -228,7 +224,11 @@ WHERE inst.report_id = %1"; */ public static function makeCsv(&$form, &$rows) { $config = CRM_Core_Config::singleton(); - $csv = ''; + + // Output UTF BOM so that MS Excel copes with diacritics. This is recommended as + // the Windows variant but is tested with MS Excel for Mac (Office 365 v 16.31) + // and it continues to work on Libre Office, Numbers, Notes etc. + $csv = "\xEF\xBB\xBF"; // Add headers if this is the first row. $columnHeaders = array_keys($form->_columnHeaders); diff --git a/civicrm/CRM/SMS/Form/Provider.php b/civicrm/CRM/SMS/Form/Provider.php index 9659e1a892..68e64de811 100644 --- a/civicrm/CRM/SMS/Form/Provider.php +++ b/civicrm/CRM/SMS/Form/Provider.php @@ -114,7 +114,7 @@ class CRM_SMS_Form_Provider extends CRM_Core_Form { if ($name) { $defaults['name'] = $name; $provider = CRM_SMS_Provider::singleton(['provider' => $name]); - $defaults['api_url'] = $provider->_apiURL; + $defaults['api_url'] = $provider->_apiURL ?? ''; } if (!$this->_id) { diff --git a/civicrm/CRM/SMS/Form/Schedule.php b/civicrm/CRM/SMS/Form/Schedule.php index a3f0a76374..3de19681be 100644 --- a/civicrm/CRM/SMS/Form/Schedule.php +++ b/civicrm/CRM/SMS/Form/Schedule.php @@ -52,11 +52,13 @@ class CRM_SMS_Form_Schedule extends CRM_Core_Form { // on page refresh. $this->setAttribute('autocomplete', 'off'); - $sendOptions = [ - $this->createElement('radio', NULL, NULL, ts('Send immediately'), 'send_immediate', ['id' => 'send_immediate', 'style' => 'margin-bottom: 10px;']), - $this->createElement('radio', NULL, NULL, ts('Send at:'), 'send_later', ['id' => 'send_later']), - ]; - $this->addGroup($sendOptions, 'send_option', '', '<br>'); + $this->addRadio('send_option', '', [ + 'send_immediate' => ts('Send immediately'), + 'send_later' => ts('Send at:'), + ], [], '<br>', FALSE, [ + 'send_immediate' => ['id' => 'send_immediate', 'style' => 'margin-bottom: 10px;'], + 'send_later' => ['id' => 'send_later'], + ]); $this->add('datepicker', 'start_date', '', NULL, FALSE, ['minDate' => time()]); diff --git a/civicrm/CRM/SMS/Message.php b/civicrm/CRM/SMS/Message.php index 8271f3cace..6f10af99d8 100644 --- a/civicrm/CRM/SMS/Message.php +++ b/civicrm/CRM/SMS/Message.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_SMS_Message { diff --git a/civicrm/CRM/Tag/Form/Tag.php b/civicrm/CRM/Tag/Form/Tag.php index fbb7961cbd..130d1a73f1 100644 --- a/civicrm/CRM/Tag/Form/Tag.php +++ b/civicrm/CRM/Tag/Form/Tag.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Form/AbstractPreview.php b/civicrm/CRM/UF/Form/AbstractPreview.php index 28568b50e6..a1e6c0414b 100644 --- a/civicrm/CRM/UF/Form/AbstractPreview.php +++ b/civicrm/CRM/UF/Form/AbstractPreview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Form/AdvanceSetting.php b/civicrm/CRM/UF/Form/AdvanceSetting.php index d21f666afc..0a7be0b724 100644 --- a/civicrm/CRM/UF/Form/AdvanceSetting.php +++ b/civicrm/CRM/UF/Form/AdvanceSetting.php @@ -32,12 +32,7 @@ class CRM_UF_Form_AdvanceSetting extends CRM_UF_Form_Group { $form->addElement('checkbox', 'is_map', ts('Enable mapping for this profile?')); // should we allow updates on a exisitng contact - $options = []; - $options[] = $form->createElement('radio', NULL, NULL, ts('Issue warning and do not save'), 0); - $options[] = $form->createElement('radio', NULL, NULL, ts('Update the matching contact'), 1); - $options[] = $form->createElement('radio', NULL, NULL, ts('Allow duplicate contact to be created'), 2); - - $form->addGroup($options, 'is_update_dupe', ts('What to do upon duplicate match')); + $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')); @@ -71,20 +66,10 @@ class CRM_UF_Form_AdvanceSetting extends CRM_UF_Form_Group { $form->_cmsId = TRUE; } - $options = []; - $options[] = $form->createElement('radio', NULL, NULL, ts('No account create option'), 0); - $options[] = $form->createElement('radio', NULL, NULL, ts('Give option, but not required'), 1); - $options[] = $form->createElement('radio', NULL, NULL, ts('Account creation required'), 2); - - $form->addGroup($options, 'is_cms_user', ts('%1 user account registration option?', [1 => $config->userFramework])); + $form->addRadio('is_cms_user', ts('%1 user account registration option?', [1 => $config->userFramework]), [ts('No account create option'), ts('Give option, but not required'), ts('Account creation required')]); // options for including Proximity Search in the profile search form - $proxOptions = []; - $proxOptions[] = $form->createElement('radio', NULL, NULL, ts('None'), 0); - $proxOptions[] = $form->createElement('radio', NULL, NULL, ts('Optional'), 1); - $proxOptions[] = $form->createElement('radio', NULL, NULL, ts('Required'), 2); - - $form->addGroup($proxOptions, 'is_proximity_search', ts('Proximity Search')); + $form->addRadio('is_proximity_search', ts('Proximity Search'), [ts('None'), ts('Optional'), ts('Required')]); } } diff --git a/civicrm/CRM/UF/Form/Field.php b/civicrm/CRM/UF/Form/Field.php index 4476ef7303..4bfcb214af 100644 --- a/civicrm/CRM/UF/Form/Field.php +++ b/civicrm/CRM/UF/Form/Field.php @@ -530,9 +530,9 @@ class CRM_UF_Form_Field extends CRM_Core_Form { $apiFormattedParams['location_type_id'] = $params['field_name'][2]; } } - elseif ($params['field_name'][2] == 0) { + elseif (isset($params['field_name'][2]) && $params['field_name'][2] == 0) { // 0 is Primary location type - $apiFormattedParams['location_type_id'] = NULL; + $apiFormattedParams['location_type_id'] = ''; } if (!empty($params['field_name'][3])) { $apiFormattedParams['phone_type_id'] = $params['field_name'][3]; diff --git a/civicrm/CRM/UF/Form/Inline/PreviewById.php b/civicrm/CRM/UF/Form/Inline/PreviewById.php index 599ea7af8c..befda199d3 100644 --- a/civicrm/CRM/UF/Form/Inline/PreviewById.php +++ b/civicrm/CRM/UF/Form/Inline/PreviewById.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Form/Preview.php b/civicrm/CRM/UF/Form/Preview.php index 5f75f45abc..7ef09e87a8 100644 --- a/civicrm/CRM/UF/Form/Preview.php +++ b/civicrm/CRM/UF/Form/Preview.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Page/AJAX.php b/civicrm/CRM/UF/Page/AJAX.php index 599874a36a..79788616a2 100644 --- a/civicrm/CRM/UF/Page/AJAX.php +++ b/civicrm/CRM/UF/Page/AJAX.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Page/Group.php b/civicrm/CRM/UF/Page/Group.php index 764e5355e8..f2d5a43431 100644 --- a/civicrm/CRM/UF/Page/Group.php +++ b/civicrm/CRM/UF/Page/Group.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/UF/Page/ProfileEditor.php b/civicrm/CRM/UF/Page/ProfileEditor.php index 466278a3fa..061b7ce742 100644 --- a/civicrm/CRM/UF/Page/ProfileEditor.php +++ b/civicrm/CRM/UF/Page/ProfileEditor.php @@ -192,7 +192,20 @@ class CRM_UF_Page_ProfileEditor extends CRM_Core_Page { break; default: - throw new CRM_Core_Exception("Unrecognized entity type: $entityType"); + if (strpos($entityType, 'Model') !== FALSE) { + $entity = str_replace('Model', '', $entityType); + $backboneModel = self::convertCiviModelToBackboneModel( + $entity, + ts('%1', [1 => $entity]), + $availableFields + ); + if (!empty($backboneModel['schema'])) { + $civiSchema[$entityType] = $backboneModel; + } + } + if (!isset($civiSchema[$entityType])) { + throw new CRM_Core_Exception("Unrecognized entity type: $entityType"); + } } } diff --git a/civicrm/CRM/Upgrade/4.3.5.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.5.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index c63f9126de..0000000000 --- a/civicrm/CRM/Upgrade/4.3.5.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.5.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_html.tpl deleted file mode 100644 index 6bfa5f5b78..0000000000 --- a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_html.tpl +++ /dev/null @@ -1,456 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - {/if} - - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {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 $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {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 $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <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} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </td> - </tr> - {if $email} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {/if} - - - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney} - </td> - <td> - {$line.line_total|crmMoney} - </td> - {if $pricesetFieldsCount } - <td> - {$line.participant_count} - </td> - {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amount && !$lineItem} - {foreach from=$amount item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> - </tr> - {/if} - {if $is_pay_later} - <tr> - <td colspan="2" {$labelStyle}> - {$pay_later_receipt} - </td> - </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=value key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=value key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customProfile} - {foreach from=$customProfile item=value key=customName} - <tr> - <th {$headerStyle}> - {ts 1=$customName+1}Participant Information - Participant %1{/ts} - </th> - </tr> - {foreach from=$value item=val key=field} - {if $field eq 'additionalCustomPre' or $field eq 'additionalCustomPost'} - <tr> - <td colspan="2" {$labelStyle}> - {if $field eq 'additionalCustomPre'} - {$additionalCustomPre_grouptitle} - {else} - {$additionalCustomPost_grouptitle} - {/if} - </td> - </tr> - {foreach from=$val item=v key=f} - <tr> - <td {$labelStyle}> - {$f} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/if} - {/foreach} - {/foreach} - {/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_text.tpl deleted file mode 100644 index 603ad2de4c..0000000000 --- a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_offline_receipt_text.tpl +++ /dev/null @@ -1,274 +0,0 @@ -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{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 $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{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} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{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} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} -{if $email} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Registered Email{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$email} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} -{/if} -{/if} ----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{capture assign=ts_participant_total}{if $pricesetFieldsCount }{ts}Total Participants{/ts}{/if}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $pricesetFieldsCount }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"} {$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amount && !$lineItem} -{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $is_pay_later } - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -=========================================================== -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPre item=value key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} -{$customName}: {$value} -{/if} -{/foreach} -{/if} - -{if $customPost} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPost item=value key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} -{$customName}: {$value} -{/if} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile item=value key=customName} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$customName+1}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=val key=field} -{if $field eq 'additionalCustomPre' or $field eq 'additionalCustomPost' } -{if $field eq 'additionalCustomPre' } -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$additionalCustomPre_grouptitle} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{else} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$additionalCustomPost_grouptitle} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{/if} -{foreach from=$val item=v key=f} -{$f}: {$v} -{/foreach} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} - - diff --git a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_html.tpl deleted file mode 100644 index 4e86fbfb2e..0000000000 --- a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_html.tpl +++ /dev/null @@ -1,450 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>Dear {contact.display_name},</p> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - - {else} - <p>Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to <strong>{if $isOnWaitlist}waitlisted{else}registered{/if}</strong> for the following:</p> - - {/if} - - <p> - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {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 $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {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 $is_pay_later && !$isAmountzero} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - - {if $conference_sessions} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Your schedule:{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {assign var='group_by_day' value='NA'} - {foreach from=$conference_sessions item=session} - {if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} - {assign var='group_by_day' value=$session.start_date} - <em>{$group_by_day|date_format:"%m/%d/%Y"}</em><br /> - {/if} - {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br /> - {if $session.location} {$session.location}<br />{/if} - {/foreach} - </td> - </tr> - {/if} - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <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} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </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 title=$event.title pageURL=$eventUrl} - </td> - </tr> - {/if} - {if $payer.name} - <tr> - <th {$headerStyle}> - {ts}You were registered by:{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$payer.name} - </td> - </tr> - {/if} - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - {if $pricesetFieldsCount }<td>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amounts && !$lineItem} - {foreach from=$amounts item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney:$currency} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - -{if $customPre} -{foreach from=$customPre item=customPr key=i} - <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> - {foreach from=$customPr item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> - {/if} - {/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} - <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> - {foreach from=$customPos item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customProfile} -{foreach from=$customProfile.profile item=eachParticipant key=participantID} - <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr> - {foreach from=$eachParticipant item=eachProfile key=pid} - <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr> - {foreach from=$eachProfile item=val key=field} - <tr>{foreach from=$val item=v key=f} - <td {$labelStyle}>{$field}</td> - <td {$valueStyle}>{$v}</td> - {/foreach} - </tr> - {/foreach} -{/foreach} -{/foreach} -{/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_text.tpl deleted file mode 100644 index db5bec9882..0000000000 --- a/civicrm/CRM/Upgrade/4.3.5.msg_template/message_templates/event_online_receipt_text.tpl +++ /dev/null @@ -1,277 +0,0 @@ -Dear {contact.display_name}, - -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} - -{else} -Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to {if $participant_status}$participant_status{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if} for the following: - -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{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 $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{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} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later && !$isAmountzero} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} -{if $conference_sessions} - - -{ts}Your schedule:{/ts} -{assign var='group_by_day' value='NA'} -{foreach from=$conference_sessions item=session} -{if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} -{assign var='group_by_day' value=$session.start_date} - -{$group_by_day|date_format:"%m/%d/%Y"} - - -{/if} -{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title} -{if $session.location} {$session.location}{/if} -{/foreach} -{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{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} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} - -{if $payer.name} -You were registered by: {$payer.name} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - -{/if} -{/if} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{if $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"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $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"} {$line.line_total|crmMoney:$currency|string_format:"%10s"}{$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amounts && !$lineItem} -{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -{foreach from=$customPre item=customPr key=i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle.$i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPr item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle.$j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPos item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile.profile item=eachParticipant key=participantID} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$participantID+2}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$eachParticipant item=eachProfile key=pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$customProfile.title.$pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$eachProfile item=val key=field} -{foreach from=$val item=v key=f} -{$field}: {$v} -{/foreach} -{/foreach} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index ba58c2652f..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.alpha1.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_html.tpl deleted file mode 100644 index d93593c337..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_html.tpl +++ /dev/null @@ -1,261 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $formValues.receipt_text} - <p>{$formValues.receipt_text|htmlize}</p> - {else} - <p>{ts}Thank you for your support.{/ts}</p> - {/if} - - <p>{ts}Please print this receipt for your records.{/ts}</p> - - </td> - </tr> - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Contribution Information{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$formValues.contributionType_name} - </td> - </tr> - - {if $lineItem and !$is_quick_config} - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - {/if} - - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$formValues.total_amount|crmMoney:$currency} - </td> - </tr> - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Received Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|truncate:10:''|crmDate} - </td> - </tr> - {/if} - - {if $receipt_date} - <tr> - <td {$labelStyle}> - {ts}Receipt Date{/ts} - </td> - <td {$valueStyle}> - {$receipt_date|truncate:10:''|crmDate} - </td> - </tr> - {/if} - - {if $formValues.paidBy and !$formValues.hidden_CreditCard} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$formValues.paidBy} - </td> - </tr> - {if $formValues.check_number} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$formValues.check_number} - </td> - </tr> - {/if} - {/if} - - {if $formValues.trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction ID{/ts} - </td> - <td {$valueStyle}> - {$formValues.trxn_id} - </td> - </tr> - {/if} - - {if $ccContribution} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - {if $formValues.honor_first_name} - <tr> - <th {$headerStyle}> - {$formValues.honor_type} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$formValues.honor_prefix} {$formValues.honor_first_name} {$formValues.honor_last_name}<br /> - {if $formValues.honor_email} - {ts}Honoree Email{/ts}: {$formValues.honor_email} - {/if} - </td> - </tr> - {/if} - - {if $formValues.product_name} - <tr> - <th {$headerStyle}> - {ts}Premium Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$formValues.product_name} - </td> - </tr> - {if $formValues.product_option} - <tr> - <td {$labelStyle}> - {ts}Option{/ts} - </td> - <td {$valueStyle}> - {$formValues.product_option} - </td> - </tr> - {/if} - {if $formValues.product_sku} - <tr> - <td {$labelStyle}> - {ts}SKU{/ts} - </td> - <td {$valueStyle}> - {$formValues.product_sku} - </td> - </tr> - {/if} - {if $fulfilled_date} - <tr> - <td {$labelStyle}> - {ts}Sent{/ts} - </td> - <td {$valueStyle}> - {$fulfilled_date|truncate:10:''|crmDate} - </td> - </tr> - {/if} - {/if} - - </table> - </td> - </tr> - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_text.tpl deleted file mode 100644 index 64a3db06c3..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/contribution_offline_receipt_text.tpl +++ /dev/null @@ -1,97 +0,0 @@ -{if $formValues.receipt_text} -{$formValues.receipt_text} -{else}{ts}Thank you for your support.{/ts}{/if} - -{ts}Please print this receipt for your records.{/ts} - - -=========================================================== -{ts}Contribution Information{/ts} - -=========================================================== -{ts}Financial Type{/ts}: {$formValues.contributionType_name} -{if $lineItem} -{foreach from=$lineItem item=value key=priceset} ---------------------------------------------------------- -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} ----------------------------------------------------------- -{foreach from=$value item=line} -{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"} {$line.line_total|crmMoney:$currency|string_format:"%10s"} -{/foreach} -{/foreach} -{/if} - -{ts}Total Amount{/ts}: {$formValues.total_amount|crmMoney:$currency} -{if $receive_date} -{ts}Received Date{/ts}: {$receive_date|truncate:10:''|crmDate} -{/if} -{if $receipt_date} -{ts}Receipt Date{/ts}: {$receipt_date|truncate:10:''|crmDate} -{/if} -{if $formValues.paidBy and !$formValues.hidden_CreditCard} -{ts}Paid By{/ts}: {$formValues.paidBy} -{if $formValues.check_number} -{ts}Check Number{/ts}: {$formValues.check_number} -{/if} -{/if} -{if $formValues.trxn_id} -{ts}Transaction ID{/ts}: {$formValues.trxn_id} -{/if} - -{if $ccContribution} -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} - -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================== -{$customName} -=========================================================== -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} -{if $formValues.honor_first_name} - -=========================================================== -{$formValues.honor_type} -=========================================================== -{$formValues.honor_prefix} {$formValues.honor_first_name} {$formValues.honor_last_name} -{if $formValues.honor_email} -{ts}Honoree Email{/ts}: {$formValues.honor_email} -{/if} -{/if} - -{if $formValues.product_name} -=========================================================== -{ts}Premium Information{/ts} - -=========================================================== -{$formValues.product_name} -{if $formValues.product_option} -{ts}Option{/ts}: {$formValues.product_option} -{/if} -{if $formValues.product_sku} -{ts}SKU{/ts}: {$formValues.product_sku} -{/if} -{if $fulfilled_date} -{ts}Sent{/ts}: {$fulfilled_date|crmDate} -{/if} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_html.tpl deleted file mode 100644 index 38004aa3a0..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_html.tpl +++ /dev/null @@ -1,456 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - {/if} - - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {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 $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {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 $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <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} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </td> - </tr> - {if $email} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {/if} - - - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney} - </td> - <td> - {$line.line_total|crmMoney} - </td> - {if $pricesetFieldsCount } - <td> - {$line.participant_count} - </td> - {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amount && !$lineItem} - {foreach from=$amount item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> - </tr> - {/if} - {if $is_pay_later} - <tr> - <td colspan="2" {$labelStyle}> - {$pay_later_receipt} - </td> - </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=value key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=value key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customProfile} - {foreach from=$customProfile item=value key=customName} - <tr> - <th {$headerStyle}> - {ts 1=$customName+1}Participant Information - Participant %1{/ts} - </th> - </tr> - {foreach from=$value item=val key=field} - {if $field eq 'additionalCustomPre' or $field eq 'additionalCustomPost'} - <tr> - <td colspan="2" {$labelStyle}> - {if $field eq 'additionalCustomPre'} - {$additionalCustomPre_grouptitle} - {else} - {$additionalCustomPost_grouptitle} - {/if} - </td> - </tr> - {foreach from=$val item=v key=f} - <tr> - <td {$labelStyle}> - {$f} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/if} - {/foreach} - {/foreach} - {/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_text.tpl deleted file mode 100644 index 62fb64da11..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_offline_receipt_text.tpl +++ /dev/null @@ -1,274 +0,0 @@ -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{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 $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{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} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{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} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} -{if $email} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Registered Email{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$email} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} -{/if} -{/if} ----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{capture assign=ts_participant_total}{if $pricesetFieldsCount }{ts}Total Participants{/ts}{/if}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $pricesetFieldsCount }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"} {$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amount && !$lineItem} -{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $is_pay_later } - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -=========================================================== -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPre item=value key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} -{$customName}: {$value} -{/if} -{/foreach} -{/if} - -{if $customPost} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPost item=value key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} -{$customName}: {$value} -{/if} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile item=value key=customName} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$customName+1}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=val key=field} -{if $field eq 'additionalCustomPre' or $field eq 'additionalCustomPost' } -{if $field eq 'additionalCustomPre' } -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$additionalCustomPre_grouptitle} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{else} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$additionalCustomPost_grouptitle} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{/if} -{foreach from=$val item=v key=f} -{$f}: {$v} -{/foreach} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} - - diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_html.tpl deleted file mode 100644 index 03e938a9df..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_html.tpl +++ /dev/null @@ -1,450 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>Dear {contact.display_name},</p> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - - {else} - <p>Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to <strong>{if $isOnWaitlist}waitlisted{else}registered{/if}</strong> for the following:</p> - - {/if} - - <p> - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {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 $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {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 $is_pay_later && !$isAmountzero} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - - {if $conference_sessions} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Your schedule:{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {assign var='group_by_day' value='NA'} - {foreach from=$conference_sessions item=session} - {if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} - {assign var='group_by_day' value=$session.start_date} - <em>{$group_by_day|date_format:"%m/%d/%Y"}</em><br /> - {/if} - {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br /> - {if $session.location} {$session.location}<br />{/if} - {/foreach} - </td> - </tr> - {/if} - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <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} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </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 title=$event.title pageURL=$eventUrl} - </td> - </tr> - {/if} - {if $payer.name} - <tr> - <th {$headerStyle}> - {ts}You were registered by:{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$payer.name} - </td> - </tr> - {/if} - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney} - </td> - <td> - {$line.line_total|crmMoney} - </td> - {if $pricesetFieldsCount }<td>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amounts && !$lineItem} - {foreach from=$amounts item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - -{if $customPre} -{foreach from=$customPre item=customPr key=i} - <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> - {foreach from=$customPr item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> - {/if} - {/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} - <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> - {foreach from=$customPos item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customProfile} -{foreach from=$customProfile.profile item=eachParticipant key=participantID} - <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr> - {foreach from=$eachParticipant item=eachProfile key=pid} - <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr> - {foreach from=$eachProfile item=val key=field} - <tr>{foreach from=$val item=v key=f} - <td {$labelStyle}>{$field}</td> - <td {$valueStyle}>{$v}</td> - {/foreach} - </tr> - {/foreach} -{/foreach} -{/foreach} -{/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_text.tpl deleted file mode 100644 index 5b24cb2c41..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/event_online_receipt_text.tpl +++ /dev/null @@ -1,277 +0,0 @@ -Dear {contact.display_name}, - -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} - -{else} -Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to {if $participant_status}$participant_status{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if} for the following: - -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{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 $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{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} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later && !$isAmountzero} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} -{if $conference_sessions} - - -{ts}Your schedule:{/ts} -{assign var='group_by_day' value='NA'} -{foreach from=$conference_sessions item=session} -{if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} -{assign var='group_by_day' value=$session.start_date} - -{$group_by_day|date_format:"%m/%d/%Y"} - - -{/if} -{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title} -{if $session.location} {$session.location}{/if} -{/foreach} -{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{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} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} - -{if $payer.name} -You were registered by: {$payer.name} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - -{/if} -{/if} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{if $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"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $pricesetFieldsCount }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {$line.line_total|crmMoney|string_format:"%10s"}{$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amounts && !$lineItem} -{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -{foreach from=$customPre item=customPr key=i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle.$i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPr item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle.$j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPos item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile.profile item=eachParticipant key=participantID} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$participantID+2}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$eachParticipant item=eachProfile key=pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$customProfile.title.$pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$eachProfile item=val key=field} -{foreach from=$val item=v key=f} -{$field}: {$v} -{/foreach} -{/foreach} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_html.tpl deleted file mode 100644 index e50e1f4446..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_html.tpl +++ /dev/null @@ -1,240 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - {if $formValues.receipt_text_signup} - <p>{$formValues.receipt_text_signup|htmlize}</p> - {elseif $formValues.receipt_text_renewal} - <p>{$formValues.receipt_text_renewal|htmlize}</p> - {else} - <p>{ts}Thank you for your support.{/ts}</p> - {/if} - {if ! $cancelled} - <p>{ts}Please print this receipt for your records.{/ts}</p> - {/if} - </td> - </tr> - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - {if !$lineItem} - <tr> - <th {$headerStyle}> - {ts}Membership Information{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Membership Type{/ts} - </td> - <td {$valueStyle}> - {$membership_name} - </td> - </tr> - {/if} - {if ! $cancelled} - {if !$lineItem} - <tr> - <td {$labelStyle}> - {ts}Membership Start Date{/ts} - </td> - <td {$valueStyle}> - {$mem_start_date} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Membership End Date{/ts} - </td> - <td {$valueStyle}> - {$mem_end_date} - </td> - </tr> - {/if} - {if $formValues.total_amount} - <tr> - <th {$headerStyle}> - {ts}Membership Fee{/ts} - </th> - </tr> - {if $formValues.contributionType_name} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$formValues.contributionType_name} - </td> - </tr> - {/if} - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Fee{/ts}</th> - <th>{ts}Membership Start Date{/ts}</th> - <th>{ts}Membership End Date{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.line_total|crmMoney} - </td> - <td> - {$line.start_date} - </td> - <td> - {$line.end_date} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - {/if} - <tr> - <td {$labelStyle}> - {ts}Amount{/ts} - </td> - <td {$valueStyle}> - {$formValues.total_amount|crmMoney} - </td> - </tr> - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Received Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|truncate:10:''|crmDate} - </td> - </tr> - {/if} - {if $formValues.paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$formValues.paidBy} - </td> - </tr> - {if $formValues.check_number} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$formValues.check_number} - </td> - </tr> - {/if} - {/if} - {/if} - {/if} - </table> - </td> - </tr> - - {if $isPrimary} - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later } - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {$billingName}<br /> - {$address} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Expires{/ts} - </td> - <td {$valueStyle}> - {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - </table> - </td> - </tr> - {/if} - - {if $customValues} - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Membership Options{/ts} - </th> - </tr> - {foreach from=$customValues item=value key=customName} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_text.tpl deleted file mode 100644 index 3f5203d7cd..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_offline_receipt_text.tpl +++ /dev/null @@ -1,90 +0,0 @@ -{if $formValues.receipt_text_signup} -{$formValues.receipt_text_signup} -{elseif $formValues.receipt_text_renewal} -{$formValues.receipt_text_renewal} -{else}{ts}Thank you for your support.{/ts}{/if} - -{if ! $cancelled}{ts}Please print this receipt for your records.{/ts} - - -{/if} -{if !$lineItem} -=========================================================== -{ts}Membership Information{/ts} - -=========================================================== -{ts}Membership Type{/ts}: {$membership_name} -{/if} -{if ! $cancelled} -{if !$lineItem} -{ts}Membership Start Date{/ts}: {$mem_start_date} -{ts}Membership End Date{/ts}: {$mem_end_date} -{/if} - -{if $formValues.total_amount} -=========================================================== -{ts}Membership Fee{/ts} - -=========================================================== -{if $formValues.contributionType_name} -{ts}Financial Type{/ts}: {$formValues.contributionType_name} -{/if} -{if $lineItem} -{foreach from=$lineItem item=value key=priceset} -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_total}{ts}Fee{/ts}{/capture} -{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture} -{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"} --------------------------------------------------------------------------------------------------- - -{foreach from=$value item=line} -{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"} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"} -{/foreach} -{/foreach} --------------------------------------------------------------------------------------------------- -{/if} -{ts}Amount{/ts}: {$formValues.total_amount|crmMoney} -{if $receive_date} -{ts}Received Date{/ts}: {$receive_date|truncate:10:''|crmDate} -{/if} -{if $formValues.paidBy} -{ts}Paid By{/ts}: {$formValues.paidBy} -{if $formValues.check_number} -{ts}Check Number{/ts}: {$formValues.check_number} -{/if} -{/if} -{/if} -{/if} - -{if $isPrimary } -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later } - -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later} -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} - -{if $customValues} -=========================================================== -{ts}Membership Options{/ts} - -=========================================================== -{foreach from=$customValues item=value key=customName} - {$customName} : {$value} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_html.tpl deleted file mode 100644 index c56152bbaa..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_html.tpl +++ /dev/null @@ -1,514 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $receipt_text} - <p>{$receipt_text|htmlize}</p> - {/if} - - {if $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - </table> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - - {if $membership_assign && !$useForMember} - <tr> - <th {$headerStyle}> - {ts}Membership Information{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Membership Type{/ts} - </td> - <td {$valueStyle}> - {$membership_name} - </td> - </tr> - {if $mem_start_date} - <tr> - <td {$labelStyle}> - {ts}Membership Start Date{/ts} - </td> - <td {$valueStyle}> - {$mem_start_date|crmDate} - </td> - </tr> - {/if} - {if $mem_end_date} - <tr> - <td {$labelStyle}> - {ts}Membership End Date{/ts} - </td> - <td {$valueStyle}> - {$mem_end_date|crmDate} - </td> - </tr> - {/if} - {/if} - - - {if $amount} - <tr> - <th {$headerStyle}> - {ts}Membership Fee{/ts} - </th> - </tr> - - {if !$useForMember and $membership_amount and $is_quick_config} - - <tr> - <td {$labelStyle}> - {ts 1=$membership_name}%1 Membership{/ts} - </td> - <td {$valueStyle}> - {$membership_amount|crmMoney} - </td> - </tr> - {if $amount} - {if ! $is_separate_payment } - <tr> - <td {$labelStyle}> - {ts}Contribution Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - {else} - <tr> - <td {$labelStyle}> - {ts}Additional Contribution{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - {/if} - {/if} - <tr> - <td {$labelStyle}> - {ts}Total{/ts} - </td> - <td {$valueStyle}> - {$amount+$membership_amount|crmMoney} - </td> - </tr> - - {elseif !$useForMember && $lineItem and $priceSetID and !$is_quick_config} - - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {$line.description|truncate:30:"..."} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney} - </td> - <td> - {$line.line_total|crmMoney} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - - {else} - {if $useForMember && $lineItem and !$is_quick_config} - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Fee{/ts}</th> - <th>{ts}Membership Start Date{/ts}</th> - <th>{ts}Membership End Date{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.line_total|crmMoney} - </td> - <td> - {$line.start_date} - </td> - <td> - {$line.end_date} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - {/if} - <tr> - <td {$labelStyle}> - {ts}Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} {if $amount_level} - {$amount_level}{/if} - </td> - </tr> - - {/if} - - - {elseif $membership_amount} - - - <tr> - <th {$headerStyle}> - {ts}Membership Fee{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts 1=$membership_name}%1 Membership{/ts} - </td> - <td {$valueStyle}> - {$membership_amount|crmMoney} - </td> - </tr> - - - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $is_monetary and $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $membership_trx_id} - <tr> - <td {$labelStyle}> - {ts}Membership Transaction #{/ts} - </td> - <td {$valueStyle}> - {$membership_trx_id} - </td> - </tr> - {/if} - {if $is_recur} - {if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts} - </td> - </tr> - {/if} - {/if} - - {if $honor_block_is_active} - <tr> - <th {$headerStyle}> - {$honor_type} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$honor_prefix} {$honor_first_name} {$honor_last_name} - </td> - </tr> - {if $honor_email} - <tr> - <td {$labelStyle}> - {ts}Honoree Email{/ts} - </td> - <td {$valueStyle}> - {$honor_email} - </td> - </tr> - {/if} - {/if} - - {if $pcpBlock} - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Display In Honor Roll{/ts} - </td> - <td {$valueStyle}> - {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - </td> - </tr> - {if $pcp_roll_nickname} - <tr> - <td {$labelStyle}> - {ts}Nickname{/ts} - </td> - <td {$valueStyle}> - {$pcp_roll_nickname} - </td> - </tr> - {/if} - {if $pcp_personal_note} - <tr> - <td {$labelStyle}> - {ts}Personal Note{/ts} - </td> - <td {$valueStyle}> - {$pcp_personal_note} - </td> - </tr> - {/if} - {/if} - - {if $onBehalfProfile} - <tr> - <th {$headerStyle}> - {$onBehalfProfile_grouptitle} - </th> - </tr> - {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} - <tr> - <td {$labelStyle}> - {$onBehalfName} - </td> - <td {$valueStyle}> - {$onBehalfValue} - </td> - </tr> - {/foreach} - {/if} - - {if ! ($contributeMode eq 'notify' OR $contributeMode eq 'directIPN') and $is_monetary} - {if $is_pay_later} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {elseif $amount GT 0 OR $membership_amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br}<br /> - {$email} - </td> - </tr> - {/if} - {/if} - - {if $contributeMode eq 'direct' AND !$is_pay_later AND ($amount GT 0 OR $membership_amount GT 0)} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br /> - </td> - </tr> - {/if} - - {if $selectPremium} - <tr> - <th {$headerStyle}> - {ts}Premium Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$product_name} - </td> - </tr> - {if $option} - <tr> - <td {$labelStyle}> - {ts}Option{/ts} - </td> - <td {$valueStyle}> - {$option} - </td> - </tr> - {/if} - {if $sku} - <tr> - <td {$labelStyle}> - {ts}SKU{/ts} - </td> - <td {$valueStyle}> - {$sku} - </td> - </tr> - {/if} - {if $start_date} - <tr> - <td {$labelStyle}> - {ts}Start Date{/ts} - </td> - <td {$valueStyle}> - {$start_date|crmDate} - </td> - </tr> - {/if} - {if $end_date} - <tr> - <td {$labelStyle}> - {ts}End Date{/ts} - </td> - <td {$valueStyle}> - {$end_date|crmDate} - </td> - </tr> - {/if} - {if $contact_email OR $contact_phone} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts}For information about this premium, contact:{/ts}</p> - {if $contact_email} - <p>{$contact_email}</p> - {/if} - {if $contact_phone} - <p>{$contact_phone}</p> - {/if} - </td> - </tr> - {/if} - {if $is_deductible AND $price} - <tr> - <td colspan="2" {$valueStyle}> - <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> - </td> - </tr> - {/if} - {/if} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_text.tpl deleted file mode 100644 index 957ac2fe23..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha1.msg_template/message_templates/membership_online_receipt_text.tpl +++ /dev/null @@ -1,221 +0,0 @@ -{if $receipt_text} -{$receipt_text} -{/if} -{if $is_pay_later} - -=========================================================== -{$pay_later_receipt} -=========================================================== -{else} - -{ts}Please print this receipt for your records.{/ts} -{/if} - -{if $membership_assign && !$useForMember} -=========================================================== -{ts}Membership Information{/ts} - -=========================================================== -{ts}Membership Type{/ts}: {$membership_name} -{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate} -{/if} -{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate} -{/if} - -{/if} -{if $amount} -=========================================================== -{ts}Membership Fee{/ts} - -=========================================================== -{if !$useForMember && $membership_amount && $is_quick_config} -{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney} -{if $amount} -{if ! $is_separate_payment } -{ts}Contribution Amount{/ts}: {$amount|crmMoney} -{else} -{ts}Additional Contribution{/ts}: {$amount|crmMoney} -{/if} -{/if} -------------------------------------------- -{ts}Total{/ts}: {$amount+$membership_amount|crmMoney} -{elseif !$useForMember && $lineItem and $priceSetID & !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} ---------------------------------------------------------- -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} ----------------------------------------------------------- -{foreach from=$value item=line} -{$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"} -{/foreach} -{/foreach} - -{ts}Total Amount{/ts}: {$amount|crmMoney} -{else} -{if $useForMember && $lineItem && !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_total}{ts}Fee{/ts}{/capture} -{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture} -{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"} --------------------------------------------------------------------------------------------------- - -{foreach from=$value item=line} -{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"} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"} -{/foreach} -{/foreach} --------------------------------------------------------------------------------------------------- -{/if} -{ts}Amount{/ts}: {$amount|crmMoney} {if $amount_level } - {$amount_level} {/if} -{/if} -{elseif $membership_amount} -=========================================================== -{ts}Membership Fee{/ts} - -=========================================================== -{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney} -{/if} - -{if $receive_date} - -{ts}Date{/ts}: {$receive_date|crmDate} -{/if} -{if $is_monetary and $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} - -{/if} -{if $membership_trx_id} -{ts}Membership Transaction #{/ts}: {$membership_trx_id} - -{/if} -{if $is_recur} -{if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} -{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by visiting this web page: %1.{/ts} - -{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts} -{/if} -{/if} - -{if $honor_block_is_active } -=========================================================== -{$honor_type} -=========================================================== -{$honor_prefix} {$honor_first_name} {$honor_last_name} -{if $honor_email} -{ts}Honoree Email{/ts}: {$honor_email} -{/if} - -{/if} -{if $pcpBlock} -=========================================================== -{ts}Personal Campaign Page{/ts} - -=========================================================== -{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - -{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if} - -{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if} - -{/if} -{if $onBehalfProfile} -=========================================================== -{ts}On Behalf Of{/ts} - -=========================================================== -{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} -{$onBehalfName}: {$onBehalfValue} -{/foreach} -{/if} - -{if !( $contributeMode eq 'notify' OR $contributeMode eq 'directIPN' ) and $is_monetary} -{if $is_pay_later} -=========================================================== -{ts}Registered Email{/ts} - -=========================================================== -{$email} -{elseif $amount GT 0 OR $membership_amount GT 0 } -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} - -{$email} -{/if} {* End ! is_pay_later condition. *} -{/if} -{if $contributeMode eq 'direct' AND !$is_pay_later AND ( $amount GT 0 OR $membership_amount GT 0 ) } - -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} - -{if $selectPremium } -=========================================================== -{ts}Premium Information{/ts} - -=========================================================== -{$product_name} -{if $option} -{ts}Option{/ts}: {$option} -{/if} -{if $sku} -{ts}SKU{/ts}: {$sku} -{/if} -{if $start_date} -{ts}Start Date{/ts}: {$start_date|crmDate} -{/if} -{if $end_date} -{ts}End Date{/ts}: {$end_date|crmDate} -{/if} -{if $contact_email OR $contact_phone} - -{ts}For information about this premium, contact:{/ts} - -{if $contact_email} - {$contact_email} -{/if} -{if $contact_phone} - {$contact_phone} -{/if} -{/if} -{if $is_deductible AND $price} - -{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} -{/if} - -{if $customPre} -=========================================================== -{$customPre_grouptitle} - -=========================================================== -{foreach from=$customPre item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} - - -{if $customPost} -=========================================================== -{$customPost_grouptitle} - -=========================================================== -{foreach from=$customPost item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index 6924e8ba95..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.alpha3.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_html.tpl deleted file mode 100644 index 94d6b43177..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_html.tpl +++ /dev/null @@ -1,449 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>Dear {contact.display_name},</p> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - {else} - <p>Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to <strong>{if $isOnWaitlist}waitlisted{else}registered{/if}</strong> for the following:</p> - - {/if} - - <p> - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {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 $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {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 $is_pay_later && !$isAmountzero} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - - {if $conference_sessions} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Your schedule:{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {assign var='group_by_day' value='NA'} - {foreach from=$conference_sessions item=session} - {if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} - {assign var='group_by_day' value=$session.start_date} - <em>{$group_by_day|date_format:"%m/%d/%Y"}</em><br /> - {/if} - {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br /> - {if $session.location} {$session.location}<br />{/if} - {/foreach} - </td> - </tr> - {/if} - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <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} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </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 title=$event.title pageURL=$eventUrl} - </td> - </tr> - {/if} - {if $payer.name} - <tr> - <th {$headerStyle}> - {ts}You were registered by:{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$payer.name} - </td> - </tr> - {/if} - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - {if $pricesetFieldsCount }<td>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amounts && !$lineItem} - {foreach from=$amounts item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney:$currency} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - -{if $customPre} -{foreach from=$customPre item=customPr key=i} - <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> - {foreach from=$customPr item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> - {/if} - {/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} - <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> - {foreach from=$customPos item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customProfile} -{foreach from=$customProfile.profile item=eachParticipant key=participantID} - <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr> - {foreach from=$eachParticipant item=eachProfile key=pid} - <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr> - {foreach from=$eachProfile item=val key=field} - <tr>{foreach from=$val item=v key=f} - <td {$labelStyle}>{$field}</td> - <td {$valueStyle}>{$v}</td> - {/foreach} - </tr> - {/foreach} -{/foreach} -{/foreach} -{/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_text.tpl deleted file mode 100644 index f7314e7567..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/event_online_receipt_text.tpl +++ /dev/null @@ -1,277 +0,0 @@ -Dear {contact.display_name}, - -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} - -{else} -Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to {if $participant_status}$participant_status{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if} for the following: - -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{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 $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{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} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later && !$isAmountzero} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} -{if $conference_sessions} - - -{ts}Your schedule:{/ts} -{assign var='group_by_day' value='NA'} -{foreach from=$conference_sessions item=session} -{if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} -{assign var='group_by_day' value=$session.start_date} - -{$group_by_day|date_format:"%m/%d/%Y"} - - -{/if} -{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title} -{if $session.location} {$session.location}{/if} -{/foreach} -{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{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} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} - -{if $payer.name} -You were registered by: {$payer.name} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - -{/if} -{/if} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{if $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"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $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"} {$line.line_total|crmMoney:$currency|string_format:"%10s"}{$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amounts && !$lineItem} -{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -{foreach from=$customPre item=customPr key=i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle.$i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPr item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle.$j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPos item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile.profile item=eachParticipant key=participantID} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$participantID+2}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$eachParticipant item=eachProfile key=pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$customProfile.title.$pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$eachProfile item=val key=field} -{foreach from=$val item=v key=f} -{$field}: {$v} -{/foreach} -{/foreach} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/pcp_notify_html.tpl b/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/pcp_notify_html.tpl deleted file mode 100644 index 13a66bc875..0000000000 --- a/civicrm/CRM/Upgrade/4.3.alpha3.msg_template/message_templates/pcp_notify_html.tpl +++ /dev/null @@ -1,96 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} -{capture assign=pcpURL }{crmURL p="civicrm/contribute/pcp/info" q="reset=1&id=`$pcpId`" h=0 a=1}{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page Notification{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Action{/ts}: - </td> - <td {$valueStyle}> - {if $mode EQ 'Update'} - {ts}Updated personal campaign page{/ts} - {else} - {ts}New personal campaign page{/ts} - {/if} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Personal Campaign Page Title{/ts} - </td> - <td {$valueStyle}> - {$pcpTitle} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Current Status{/ts} - </td> - <td {$valueStyle}> - {$pcpStatus} - </td> - </tr> - - <tr> - <td {$labelStyle}> - <a href="{$pcpURL}">{ts}View Page{/ts}</a> - </td> - <td></td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Supporter{/ts} - </td> - <td {$valueStyle}> - <a href="{$supporterUrl}">{$supporterName}</a> - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Linked to Contribution Page{/ts} - </td> - <td {$valueStyle}> - <a href="{$contribPageUrl}">{$contribPageTitle}</a> - </td> - </tr> - <tr> - <td {$labelStyle}> - <a href="{$managePCPUrl}">{ts}Manage Personal Campaign Pages{/ts}</a> - </td> - <td></td> - </tr> - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.beta1.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index bfb4353d18..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.beta1.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_html.tpl deleted file mode 100644 index 464543bcb1..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_html.tpl +++ /dev/null @@ -1,394 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $receipt_text} - <p>{$receipt_text|htmlize}</p> - {/if} - - {if $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - </table> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - - {if $amount} - - - <tr> - <th {$headerStyle}> - {ts}Contribution Information{/ts} - </th> - </tr> - - {if $lineItem and $priceSetID and !$is_quick_config} - - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney:$currency} - </td> - </tr> - - {else} - - <tr> - <td {$labelStyle}> - {ts}Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney:$currency} {if $amount_level} - {$amount_level}{/if} - </td> - </tr> - - {/if} - - {/if} - - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $is_monetary and $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $is_recur} - {if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$cancelSubscriptionUrl}This is a recurring contribution. You can cancel future contributions by <a href="%1">visiting this web page</a>.{/ts} - </td> - <tr> - </tr> - <td colspan="2" {$labelStyle}> - {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href="%1">visiting this web page</a>.{/ts} - </td> - <tr> - </tr> - <td colspan="2" {$labelStyle}> - {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} - </td> - </tr> - {/if} - {/if} - - {if $honor_block_is_active} - <tr> - <th {$headerStyle}> - {$honor_type} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$honor_prefix} {$honor_first_name} {$honor_last_name} - </td> - </tr> - {if $honor_email} - <tr> - <td {$labelStyle}> - {ts}Honoree Email{/ts} - </td> - <td {$valueStyle}> - {$honor_email} - </td> - </tr> - {/if} - {/if} - - {if $pcpBlock} - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Display In Honor Roll{/ts} - </td> - <td {$valueStyle}> - {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - </td> - </tr> - {if $pcp_roll_nickname} - <tr> - <td {$labelStyle}> - {ts}Nickname{/ts} - </td> - <td {$valueStyle}> - {$pcp_roll_nickname} - </td> - </tr> - {/if} - {if $pcp_personal_note} - <tr> - <td {$labelStyle}> - {ts}Personal Note{/ts} - </td> - <td {$valueStyle}> - {$pcp_personal_note} - </td> - </tr> - {/if} - {/if} - - {if $onBehalfProfile} - <tr> - <th {$headerStyle}> - {$onBehalfProfile_grouptitle} - </th> - </tr> - {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} - <tr> - <td {$labelStyle}> - {$onBehalfName} - </td> - <td {$valueStyle}> - {$onBehalfValue} - </td> - </tr> - {/foreach} - {/if} - - {if $isShare} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=contributionUrl}{crmURL p='civicrm/contribute/transact' q="reset=1&id=`$contributionPageId`" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl} - </td> - </tr> - {/if} - - {if ! ($contributeMode eq 'notify' OR $contributeMode eq 'directIPN') and $is_monetary} - {if $is_pay_later} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {elseif $amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br}<br /> - {$email} - </td> - </tr> - {/if} - {/if} - - {if $contributeMode eq 'direct' AND !$is_pay_later AND $amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br /> - </td> - </tr> - {/if} - - {if $selectPremium} - <tr> - <th {$headerStyle}> - {ts}Premium Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$product_name} - </td> - </tr> - {if $option} - <tr> - <td {$labelStyle}> - {ts}Option{/ts} - </td> - <td {$valueStyle}> - {$option} - </td> - </tr> - {/if} - {if $sku} - <tr> - <td {$labelStyle}> - {ts}SKU{/ts} - </td> - <td {$valueStyle}> - {$sku} - </td> - </tr> - {/if} - {if $start_date} - <tr> - <td {$labelStyle}> - {ts}Start Date{/ts} - </td> - <td {$valueStyle}> - {$start_date|crmDate} - </td> - </tr> - {/if} - {if $end_date} - <tr> - <td {$labelStyle}> - {ts}End Date{/ts} - </td> - <td {$valueStyle}> - {$end_date|crmDate} - </td> - </tr> - {/if} - {if $contact_email OR $contact_phone} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts}For information about this premium, contact:{/ts}</p> - {if $contact_email} - <p>{$contact_email}</p> - {/if} - {if $contact_phone} - <p>{$contact_phone}</p> - {/if} - </td> - </tr> - {/if} - {if $is_deductible AND $price} - <tr> - <td colspan="2" {$valueStyle}> - <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> - </td> - </tr> - {/if} - {/if} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_text.tpl deleted file mode 100644 index bcd6e97283..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/contribution_online_receipt_text.tpl +++ /dev/null @@ -1,179 +0,0 @@ -{if $receipt_text} -{$receipt_text} -{/if} -{if $is_pay_later} - -=========================================================== -{$pay_later_receipt} -=========================================================== -{else} - -{ts}Please print this receipt for your records.{/ts} -{/if} - -{if $amount} -=========================================================== -{ts}Contribution Information{/ts} - -=========================================================== -{if $lineItem and $priceSetID and !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} ---------------------------------------------------------- -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} ----------------------------------------------------------- -{foreach from=$value item=line} -{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"} {$line.line_total|crmMoney:$currency|string_format:"%10s"} -{/foreach} -{/foreach} - -{ts}Total Amount{/ts}: {$amount|crmMoney:$currency} -{else} -{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if $amount_level } - {$amount_level} {/if} -{/if} -{/if} -{if $receive_date} - -{ts}Date{/ts}: {$receive_date|crmDate} -{/if} -{if $is_monetary and $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} - -{if $is_recur and ($contributeMode eq 'notify' or $contributeMode eq 'directIPN')} -{ts}This is a recurring contribution. You can cancel future contributions at:{/ts} - -{$cancelSubscriptionUrl} - -{ts}You can update billing details for this recurring contribution at:{/ts} - -{$updateSubscriptionBillingUrl} - -{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts} - -{$updateSubscriptionUrl} - -{/if} - -{if $honor_block_is_active } -=========================================================== -{$honor_type} -=========================================================== -{$honor_prefix} {$honor_first_name} {$honor_last_name} -{if $honor_email} -{ts}Honoree Email{/ts}: {$honor_email} -{/if} - -{/if} -{if $pcpBlock} -=========================================================== -{ts}Personal Campaign Page{/ts} - -=========================================================== -{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - -{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if} - -{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if} - -{/if} -{if $onBehalfProfile} -=========================================================== -{ts}On Behalf Of{/ts} - -=========================================================== -{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} -{$onBehalfName}: {$onBehalfValue} -{/foreach} -{/if} - -{if !( $contributeMode eq 'notify' OR $contributeMode eq 'directIPN' ) and $is_monetary} -{if $is_pay_later} -=========================================================== -{ts}Registered Email{/ts} - -=========================================================== -{$email} -{elseif $amount GT 0} -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} - -{$email} -{/if} {* End ! is_pay_later condition. *} -{/if} -{if $contributeMode eq 'direct' AND !$is_pay_later AND $amount GT 0} - -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} - -{if $selectPremium } -=========================================================== -{ts}Premium Information{/ts} - -=========================================================== -{$product_name} -{if $option} -{ts}Option{/ts}: {$option} -{/if} -{if $sku} -{ts}SKU{/ts}: {$sku} -{/if} -{if $start_date} -{ts}Start Date{/ts}: {$start_date|crmDate} -{/if} -{if $end_date} -{ts}End Date{/ts}: {$end_date|crmDate} -{/if} -{if $contact_email OR $contact_phone} - -{ts}For information about this premium, contact:{/ts} - -{if $contact_email} - {$contact_email} -{/if} -{if $contact_phone} - {$contact_phone} -{/if} -{/if} -{if $is_deductible AND $price} - -{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} -{/if} - -{if $customPre} -=========================================================== -{$customPre_grouptitle} - -=========================================================== -{foreach from=$customPre item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} - - -{if $customPost} -=========================================================== -{$customPost_grouptitle} - -=========================================================== -{foreach from=$customPost item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_html.tpl deleted file mode 100644 index c56152bbaa..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_html.tpl +++ /dev/null @@ -1,514 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $receipt_text} - <p>{$receipt_text|htmlize}</p> - {/if} - - {if $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - </table> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - - {if $membership_assign && !$useForMember} - <tr> - <th {$headerStyle}> - {ts}Membership Information{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Membership Type{/ts} - </td> - <td {$valueStyle}> - {$membership_name} - </td> - </tr> - {if $mem_start_date} - <tr> - <td {$labelStyle}> - {ts}Membership Start Date{/ts} - </td> - <td {$valueStyle}> - {$mem_start_date|crmDate} - </td> - </tr> - {/if} - {if $mem_end_date} - <tr> - <td {$labelStyle}> - {ts}Membership End Date{/ts} - </td> - <td {$valueStyle}> - {$mem_end_date|crmDate} - </td> - </tr> - {/if} - {/if} - - - {if $amount} - <tr> - <th {$headerStyle}> - {ts}Membership Fee{/ts} - </th> - </tr> - - {if !$useForMember and $membership_amount and $is_quick_config} - - <tr> - <td {$labelStyle}> - {ts 1=$membership_name}%1 Membership{/ts} - </td> - <td {$valueStyle}> - {$membership_amount|crmMoney} - </td> - </tr> - {if $amount} - {if ! $is_separate_payment } - <tr> - <td {$labelStyle}> - {ts}Contribution Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - {else} - <tr> - <td {$labelStyle}> - {ts}Additional Contribution{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - {/if} - {/if} - <tr> - <td {$labelStyle}> - {ts}Total{/ts} - </td> - <td {$valueStyle}> - {$amount+$membership_amount|crmMoney} - </td> - </tr> - - {elseif !$useForMember && $lineItem and $priceSetID and !$is_quick_config} - - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {$line.description|truncate:30:"..."} - </td> - <td> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney} - </td> - <td> - {$line.line_total|crmMoney} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} - </td> - </tr> - - {else} - {if $useForMember && $lineItem and !$is_quick_config} - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Fee{/ts}</th> - <th>{ts}Membership Start Date{/ts}</th> - <th>{ts}Membership End Date{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.line_total|crmMoney} - </td> - <td> - {$line.start_date} - </td> - <td> - {$line.end_date} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - {/if} - <tr> - <td {$labelStyle}> - {ts}Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney} {if $amount_level} - {$amount_level}{/if} - </td> - </tr> - - {/if} - - - {elseif $membership_amount} - - - <tr> - <th {$headerStyle}> - {ts}Membership Fee{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts 1=$membership_name}%1 Membership{/ts} - </td> - <td {$valueStyle}> - {$membership_amount|crmMoney} - </td> - </tr> - - - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $is_monetary and $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $membership_trx_id} - <tr> - <td {$labelStyle}> - {ts}Membership Transaction #{/ts} - </td> - <td {$valueStyle}> - {$membership_trx_id} - </td> - </tr> - {/if} - {if $is_recur} - {if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href="%1">visiting this web page</a>.{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts} - </td> - </tr> - {/if} - {/if} - - {if $honor_block_is_active} - <tr> - <th {$headerStyle}> - {$honor_type} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$honor_prefix} {$honor_first_name} {$honor_last_name} - </td> - </tr> - {if $honor_email} - <tr> - <td {$labelStyle}> - {ts}Honoree Email{/ts} - </td> - <td {$valueStyle}> - {$honor_email} - </td> - </tr> - {/if} - {/if} - - {if $pcpBlock} - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Display In Honor Roll{/ts} - </td> - <td {$valueStyle}> - {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - </td> - </tr> - {if $pcp_roll_nickname} - <tr> - <td {$labelStyle}> - {ts}Nickname{/ts} - </td> - <td {$valueStyle}> - {$pcp_roll_nickname} - </td> - </tr> - {/if} - {if $pcp_personal_note} - <tr> - <td {$labelStyle}> - {ts}Personal Note{/ts} - </td> - <td {$valueStyle}> - {$pcp_personal_note} - </td> - </tr> - {/if} - {/if} - - {if $onBehalfProfile} - <tr> - <th {$headerStyle}> - {$onBehalfProfile_grouptitle} - </th> - </tr> - {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} - <tr> - <td {$labelStyle}> - {$onBehalfName} - </td> - <td {$valueStyle}> - {$onBehalfValue} - </td> - </tr> - {/foreach} - {/if} - - {if ! ($contributeMode eq 'notify' OR $contributeMode eq 'directIPN') and $is_monetary} - {if $is_pay_later} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {elseif $amount GT 0 OR $membership_amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br}<br /> - {$email} - </td> - </tr> - {/if} - {/if} - - {if $contributeMode eq 'direct' AND !$is_pay_later AND ($amount GT 0 OR $membership_amount GT 0)} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br /> - </td> - </tr> - {/if} - - {if $selectPremium} - <tr> - <th {$headerStyle}> - {ts}Premium Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$product_name} - </td> - </tr> - {if $option} - <tr> - <td {$labelStyle}> - {ts}Option{/ts} - </td> - <td {$valueStyle}> - {$option} - </td> - </tr> - {/if} - {if $sku} - <tr> - <td {$labelStyle}> - {ts}SKU{/ts} - </td> - <td {$valueStyle}> - {$sku} - </td> - </tr> - {/if} - {if $start_date} - <tr> - <td {$labelStyle}> - {ts}Start Date{/ts} - </td> - <td {$valueStyle}> - {$start_date|crmDate} - </td> - </tr> - {/if} - {if $end_date} - <tr> - <td {$labelStyle}> - {ts}End Date{/ts} - </td> - <td {$valueStyle}> - {$end_date|crmDate} - </td> - </tr> - {/if} - {if $contact_email OR $contact_phone} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts}For information about this premium, contact:{/ts}</p> - {if $contact_email} - <p>{$contact_email}</p> - {/if} - {if $contact_phone} - <p>{$contact_phone}</p> - {/if} - </td> - </tr> - {/if} - {if $is_deductible AND $price} - <tr> - <td colspan="2" {$valueStyle}> - <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> - </td> - </tr> - {/if} - {/if} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_text.tpl deleted file mode 100644 index 957ac2fe23..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta1.msg_template/message_templates/membership_online_receipt_text.tpl +++ /dev/null @@ -1,221 +0,0 @@ -{if $receipt_text} -{$receipt_text} -{/if} -{if $is_pay_later} - -=========================================================== -{$pay_later_receipt} -=========================================================== -{else} - -{ts}Please print this receipt for your records.{/ts} -{/if} - -{if $membership_assign && !$useForMember} -=========================================================== -{ts}Membership Information{/ts} - -=========================================================== -{ts}Membership Type{/ts}: {$membership_name} -{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate} -{/if} -{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate} -{/if} - -{/if} -{if $amount} -=========================================================== -{ts}Membership Fee{/ts} - -=========================================================== -{if !$useForMember && $membership_amount && $is_quick_config} -{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney} -{if $amount} -{if ! $is_separate_payment } -{ts}Contribution Amount{/ts}: {$amount|crmMoney} -{else} -{ts}Additional Contribution{/ts}: {$amount|crmMoney} -{/if} -{/if} -------------------------------------------- -{ts}Total{/ts}: {$amount+$membership_amount|crmMoney} -{elseif !$useForMember && $lineItem and $priceSetID & !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} ---------------------------------------------------------- -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} ----------------------------------------------------------- -{foreach from=$value item=line} -{$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"} -{/foreach} -{/foreach} - -{ts}Total Amount{/ts}: {$amount|crmMoney} -{else} -{if $useForMember && $lineItem && !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_total}{ts}Fee{/ts}{/capture} -{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture} -{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"} --------------------------------------------------------------------------------------------------- - -{foreach from=$value item=line} -{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"} {$line.start_date|string_format:"%20s"} {$line.end_date|string_format:"%20s"} -{/foreach} -{/foreach} --------------------------------------------------------------------------------------------------- -{/if} -{ts}Amount{/ts}: {$amount|crmMoney} {if $amount_level } - {$amount_level} {/if} -{/if} -{elseif $membership_amount} -=========================================================== -{ts}Membership Fee{/ts} - -=========================================================== -{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney} -{/if} - -{if $receive_date} - -{ts}Date{/ts}: {$receive_date|crmDate} -{/if} -{if $is_monetary and $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} - -{/if} -{if $membership_trx_id} -{ts}Membership Transaction #{/ts}: {$membership_trx_id} - -{/if} -{if $is_recur} -{if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} -{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by visiting this web page: %1.{/ts} - -{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href="%1">visiting this web page</a>.{/ts} -{/if} -{/if} - -{if $honor_block_is_active } -=========================================================== -{$honor_type} -=========================================================== -{$honor_prefix} {$honor_first_name} {$honor_last_name} -{if $honor_email} -{ts}Honoree Email{/ts}: {$honor_email} -{/if} - -{/if} -{if $pcpBlock} -=========================================================== -{ts}Personal Campaign Page{/ts} - -=========================================================== -{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - -{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if} - -{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if} - -{/if} -{if $onBehalfProfile} -=========================================================== -{ts}On Behalf Of{/ts} - -=========================================================== -{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} -{$onBehalfName}: {$onBehalfValue} -{/foreach} -{/if} - -{if !( $contributeMode eq 'notify' OR $contributeMode eq 'directIPN' ) and $is_monetary} -{if $is_pay_later} -=========================================================== -{ts}Registered Email{/ts} - -=========================================================== -{$email} -{elseif $amount GT 0 OR $membership_amount GT 0 } -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} - -{$email} -{/if} {* End ! is_pay_later condition. *} -{/if} -{if $contributeMode eq 'direct' AND !$is_pay_later AND ( $amount GT 0 OR $membership_amount GT 0 ) } - -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} - -{if $selectPremium } -=========================================================== -{ts}Premium Information{/ts} - -=========================================================== -{$product_name} -{if $option} -{ts}Option{/ts}: {$option} -{/if} -{if $sku} -{ts}SKU{/ts}: {$sku} -{/if} -{if $start_date} -{ts}Start Date{/ts}: {$start_date|crmDate} -{/if} -{if $end_date} -{ts}End Date{/ts}: {$end_date|crmDate} -{/if} -{if $contact_email OR $contact_phone} - -{ts}For information about this premium, contact:{/ts} - -{if $contact_email} - {$contact_email} -{/if} -{if $contact_phone} - {$contact_phone} -{/if} -{/if} -{if $is_deductible AND $price} - -{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} -{/if} - -{if $customPre} -=========================================================== -{$customPre_grouptitle} - -=========================================================== -{foreach from=$customPre item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} - - -{if $customPost} -=========================================================== -{$customPost_grouptitle} - -=========================================================== -{foreach from=$customPost item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.beta2.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index 581377590c..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.beta2.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_html.tpl b/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_html.tpl deleted file mode 100644 index 6e8e8b230d..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_html.tpl +++ /dev/null @@ -1,96 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} -{capture assign=pcpURL }{crmURL p="civicrm/pcp/info" q="reset=1&id=`$pcpId`" h=0 a=1}{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page Notification{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Action{/ts}: - </td> - <td {$valueStyle}> - {if $mode EQ 'Update'} - {ts}Updated personal campaign page{/ts} - {else} - {ts}New personal campaign page{/ts} - {/if} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Personal Campaign Page Title{/ts} - </td> - <td {$valueStyle}> - {$pcpTitle} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Current Status{/ts} - </td> - <td {$valueStyle}> - {$pcpStatus} - </td> - </tr> - - <tr> - <td {$labelStyle}> - <a href="{$pcpURL}">{ts}View Page{/ts}</a> - </td> - <td></td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Supporter{/ts} - </td> - <td {$valueStyle}> - <a href="{$supporterUrl}">{$supporterName}</a> - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Linked to Contribution Page{/ts} - </td> - <td {$valueStyle}> - <a href="{$contribPageUrl}">{$contribPageTitle}</a> - </td> - </tr> - <tr> - <td {$labelStyle}> - <a href="{$managePCPUrl}">{ts}Manage Personal Campaign Pages{/ts}</a> - </td> - <td></td> - </tr> - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_text.tpl b/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_text.tpl deleted file mode 100644 index 52f9761e58..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta2.msg_template/message_templates/pcp_notify_text.tpl +++ /dev/null @@ -1,20 +0,0 @@ -=========================================================== -{ts}Personal Campaign Page Notification{/ts} - -=========================================================== -{ts}Action{/ts}: {if $mode EQ 'Update'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if} -{ts}Personal Campaign Page Title{/ts}: {$pcpTitle} -{ts}Current Status{/ts}: {$pcpStatus} -{capture assign=pcpURL}{crmURL p="civicrm/pcp/info" q="reset=1&id=`$pcpId`" h=0 a=1}{/capture} -{ts}View Page{/ts}: ->> {$pcpURL} - -{ts}Supporter{/ts}: {$supporterName} ->> {$supporterUrl} - -{ts}Linked to Contribution Page{/ts}: {$contribPageTitle} ->> {$contribPageUrl} - -{ts}Manage Personal Campaign Pages{/ts}: ->> {$managePCPUrl} - diff --git a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.3.beta3.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index f9a58e0ebd..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.3.beta3.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_html.tpl deleted file mode 100644 index 48bde393ba..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_html.tpl +++ /dev/null @@ -1,396 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - - {if $receipt_text} - <p>{$receipt_text|htmlize}</p> - {/if} - - {if $is_pay_later} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - </table> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - - {if $amount} - - - <tr> - <th {$headerStyle}> - {ts}Contribution Information{/ts} - </th> - </tr> - - {if $lineItem and $priceSetID and !$is_quick_config} - - {foreach from=$lineItem item=value key=priceset} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - </tr> - {/foreach} - </table> - </td> - </tr> - {/foreach} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney:$currency} - </td> - </tr> - - {else} - - <tr> - <td {$labelStyle}> - {ts}Amount{/ts} - </td> - <td {$valueStyle}> - {$amount|crmMoney:$currency} {if $amount_level} - {$amount_level}{/if} - </td> - </tr> - - {/if} - - {/if} - - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $is_monetary and $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $is_recur} - {if $contributeMode eq 'notify' or $contributeMode eq 'directIPN'} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$cancelSubscriptionUrl}This is a recurring contribution. You can cancel future contributions by <a href="%1">visiting this web page</a>.{/ts} - </td> - {if $updateSubscriptionBillingUrl} - <tr> - </tr> - <td colspan="2" {$labelStyle}> - {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href="%1">visiting this web page</a>.{/ts} - </td> - {/if} - <tr> - </tr> - <td colspan="2" {$labelStyle}> - {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} - </td> - </tr> - {/if} - {/if} - - {if $honor_block_is_active} - <tr> - <th {$headerStyle}> - {$honor_type} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$honor_prefix} {$honor_first_name} {$honor_last_name} - </td> - </tr> - {if $honor_email} - <tr> - <td {$labelStyle}> - {ts}Honoree Email{/ts} - </td> - <td {$valueStyle}> - {$honor_email} - </td> - </tr> - {/if} - {/if} - - {if $pcpBlock} - <tr> - <th {$headerStyle}> - {ts}Personal Campaign Page{/ts} - </th> - </tr> - <tr> - <td {$labelStyle}> - {ts}Display In Honor Roll{/ts} - </td> - <td {$valueStyle}> - {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - </td> - </tr> - {if $pcp_roll_nickname} - <tr> - <td {$labelStyle}> - {ts}Nickname{/ts} - </td> - <td {$valueStyle}> - {$pcp_roll_nickname} - </td> - </tr> - {/if} - {if $pcp_personal_note} - <tr> - <td {$labelStyle}> - {ts}Personal Note{/ts} - </td> - <td {$valueStyle}> - {$pcp_personal_note} - </td> - </tr> - {/if} - {/if} - - {if $onBehalfProfile} - <tr> - <th {$headerStyle}> - {$onBehalfProfile_grouptitle} - </th> - </tr> - {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} - <tr> - <td {$labelStyle}> - {$onBehalfName} - </td> - <td {$valueStyle}> - {$onBehalfValue} - </td> - </tr> - {/foreach} - {/if} - - {if $isShare} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=contributionUrl}{crmURL p='civicrm/contribute/transact' q="reset=1&id=`$contributionPageId`" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl} - </td> - </tr> - {/if} - - {if ! ($contributeMode eq 'notify' OR $contributeMode eq 'directIPN') and $is_monetary} - {if $is_pay_later} - <tr> - <th {$headerStyle}> - {ts}Registered Email{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$email} - </td> - </tr> - {elseif $amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br}<br /> - {$email} - </td> - </tr> - {/if} - {/if} - - {if $contributeMode eq 'direct' AND !$is_pay_later AND $amount GT 0} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}<br /> - </td> - </tr> - {/if} - - {if $selectPremium} - <tr> - <th {$headerStyle}> - {ts}Premium Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$labelStyle}> - {$product_name} - </td> - </tr> - {if $option} - <tr> - <td {$labelStyle}> - {ts}Option{/ts} - </td> - <td {$valueStyle}> - {$option} - </td> - </tr> - {/if} - {if $sku} - <tr> - <td {$labelStyle}> - {ts}SKU{/ts} - </td> - <td {$valueStyle}> - {$sku} - </td> - </tr> - {/if} - {if $start_date} - <tr> - <td {$labelStyle}> - {ts}Start Date{/ts} - </td> - <td {$valueStyle}> - {$start_date|crmDate} - </td> - </tr> - {/if} - {if $end_date} - <tr> - <td {$labelStyle}> - {ts}End Date{/ts} - </td> - <td {$valueStyle}> - {$end_date|crmDate} - </td> - </tr> - {/if} - {if $contact_email OR $contact_phone} - <tr> - <td colspan="2" {$valueStyle}> - <p>{ts}For information about this premium, contact:{/ts}</p> - {if $contact_email} - <p>{$contact_email}</p> - {/if} - {if $contact_phone} - <p>{$contact_phone}</p> - {/if} - </td> - </tr> - {/if} - {if $is_deductible AND $price} - <tr> - <td colspan="2" {$valueStyle}> - <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> - </td> - </tr> - {/if} - {/if} - - {if $customPre} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $customPost} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=customValue key=customName} - {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$customValue} - </td> - </tr> - {/if} - {/foreach} - {/if} - - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_text.tpl deleted file mode 100644 index ae4f6a5d4c..0000000000 --- a/civicrm/CRM/Upgrade/4.3.beta3.msg_template/message_templates/contribution_online_receipt_text.tpl +++ /dev/null @@ -1,181 +0,0 @@ -{if $receipt_text} -{$receipt_text} -{/if} -{if $is_pay_later} - -=========================================================== -{$pay_later_receipt} -=========================================================== -{else} - -{ts}Please print this receipt for your records.{/ts} -{/if} - -{if $amount} -=========================================================== -{ts}Contribution Information{/ts} - -=========================================================== -{if $lineItem and $priceSetID and !$is_quick_config} -{foreach from=$lineItem item=value key=priceset} ---------------------------------------------------------- -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {$ts_total|string_format:"%10s"} ----------------------------------------------------------- -{foreach from=$value item=line} -{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"} {$line.line_total|crmMoney:$currency|string_format:"%10s"} -{/foreach} -{/foreach} - -{ts}Total Amount{/ts}: {$amount|crmMoney:$currency} -{else} -{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if $amount_level } - {$amount_level} {/if} -{/if} -{/if} -{if $receive_date} - -{ts}Date{/ts}: {$receive_date|crmDate} -{/if} -{if $is_monetary and $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} - -{if $is_recur and ($contributeMode eq 'notify' or $contributeMode eq 'directIPN')} -{ts}This is a recurring contribution. You can cancel future contributions at:{/ts} - -{$cancelSubscriptionUrl} - -{if $updateSubscriptionBillingUrl} -{ts}You can update billing details for this recurring contribution at:{/ts} - -{$updateSubscriptionBillingUrl} - -{/if} -{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts} - -{$updateSubscriptionUrl} - -{/if} - -{if $honor_block_is_active } -=========================================================== -{$honor_type} -=========================================================== -{$honor_prefix} {$honor_first_name} {$honor_last_name} -{if $honor_email} -{ts}Honoree Email{/ts}: {$honor_email} -{/if} - -{/if} -{if $pcpBlock} -=========================================================== -{ts}Personal Campaign Page{/ts} - -=========================================================== -{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if} - -{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if} - -{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if} - -{/if} -{if $onBehalfProfile} -=========================================================== -{ts}On Behalf Of{/ts} - -=========================================================== -{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName} -{$onBehalfName}: {$onBehalfValue} -{/foreach} -{/if} - -{if !( $contributeMode eq 'notify' OR $contributeMode eq 'directIPN' ) and $is_monetary} -{if $is_pay_later} -=========================================================== -{ts}Registered Email{/ts} - -=========================================================== -{$email} -{elseif $amount GT 0} -=========================================================== -{ts}Billing Name and Address{/ts} - -=========================================================== -{$billingName} -{$address} - -{$email} -{/if} {* End ! is_pay_later condition. *} -{/if} -{if $contributeMode eq 'direct' AND !$is_pay_later AND $amount GT 0} - -=========================================================== -{ts}Credit Card Information{/ts} - -=========================================================== -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} - -{if $selectPremium } -=========================================================== -{ts}Premium Information{/ts} - -=========================================================== -{$product_name} -{if $option} -{ts}Option{/ts}: {$option} -{/if} -{if $sku} -{ts}SKU{/ts}: {$sku} -{/if} -{if $start_date} -{ts}Start Date{/ts}: {$start_date|crmDate} -{/if} -{if $end_date} -{ts}End Date{/ts}: {$end_date|crmDate} -{/if} -{if $contact_email OR $contact_phone} - -{ts}For information about this premium, contact:{/ts} - -{if $contact_email} - {$contact_email} -{/if} -{if $contact_phone} - {$contact_phone} -{/if} -{/if} -{if $is_deductible AND $price} - -{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} -{/if} - -{if $customPre} -=========================================================== -{$customPre_grouptitle} - -=========================================================== -{foreach from=$customPre item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} - - -{if $customPost} -=========================================================== -{$customPost_grouptitle} - -=========================================================== -{foreach from=$customPost item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.4.3.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.4.3.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index 521836c98d..0000000000 --- a/civicrm/CRM/Upgrade/4.4.3.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.4.3.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_html.tpl deleted file mode 100644 index ca4c608d8a..0000000000 --- a/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_html.tpl +++ /dev/null @@ -1,450 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>Dear {contact.display_name},</p> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - - {else} - <p>Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to <strong>{if $participant_status}{$participant_status}{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if}</strong>.</p> - - {/if} - - <p> - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {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 $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {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 $is_pay_later && !$isAmountzero && !$isAdditionalParticipant} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - - {if $conference_sessions} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Your schedule:{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {assign var='group_by_day' value='NA'} - {foreach from=$conference_sessions item=session} - {if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} - {assign var='group_by_day' value=$session.start_date} - <em>{$group_by_day|date_format:"%m/%d/%Y"}</em><br /> - {/if} - {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br /> - {if $session.location} {$session.location}<br />{/if} - {/foreach} - </td> - </tr> - {/if} - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <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} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </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 title=$event.title pageURL=$eventUrl} - </td> - </tr> - {/if} - {if $payer.name} - <tr> - <th {$headerStyle}> - {ts}You were registered by:{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$payer.name} - </td> - </tr> - {/if} - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - {if $pricesetFieldsCount }<td>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amounts && !$lineItem} - {foreach from=$amounts item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney:$currency} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - -{if $customPre} -{foreach from=$customPre item=customPr key=i} - <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> - {foreach from=$customPr item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> - {/if} - {/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} - <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> - {foreach from=$customPos item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customProfile} -{foreach from=$customProfile.profile item=eachParticipant key=participantID} - <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr> - {foreach from=$eachParticipant item=eachProfile key=pid} - <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr> - {foreach from=$eachProfile item=val key=field} - <tr>{foreach from=$val item=v key=f} - <td {$labelStyle}>{$field}</td> - <td {$valueStyle}>{$v}</td> - {/foreach} - </tr> - {/foreach} -{/foreach} -{/foreach} -{/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_text.tpl deleted file mode 100644 index ba339e7b85..0000000000 --- a/civicrm/CRM/Upgrade/4.4.3.msg_template/message_templates/event_online_receipt_text.tpl +++ /dev/null @@ -1,277 +0,0 @@ -Dear {contact.display_name}, - -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} - -{else} -Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to {if $participant_status}{$participant_status}{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if}. - -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{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 $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{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} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later && !$isAmountzero && !$isAdditionalParticipant} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} -{if $conference_sessions} - - -{ts}Your schedule:{/ts} -{assign var='group_by_day' value='NA'} -{foreach from=$conference_sessions item=session} -{if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} -{assign var='group_by_day' value=$session.start_date} - -{$group_by_day|date_format:"%m/%d/%Y"} - - -{/if} -{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title} -{if $session.location} {$session.location}{/if} -{/foreach} -{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{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} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} - -{if $payer.name} -You were registered by: {$payer.name} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - -{/if} -{/if} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{if $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"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $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"} {$line.line_total|crmMoney:$currency|string_format:"%10s"}{$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amounts && !$lineItem} -{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -{foreach from=$customPre item=customPr key=i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle.$i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPr item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle.$j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPos item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile.profile item=eachParticipant key=participantID} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$participantID+2}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$eachParticipant item=eachProfile key=pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$customProfile.title.$pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$eachProfile item=val key=field} -{foreach from=$val item=v key=f} -{$field}: {$v} -{/foreach} -{/foreach} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/civicrm_msg_template.tpl b/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/civicrm_msg_template.tpl deleted file mode 100644 index f93d38b7e6..0000000000 --- a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/civicrm_msg_template.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{php} - $dir = SMARTY_DIR . '/../../CRM/Upgrade/4.4.alpha1.msg_template/message_templates'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $parts = explode('_', basename($filename, '.tpl')); - $templates[] = array('type' => array_pop($parts), 'name' => implode('_', $parts), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - -{foreach from=$templates item=tpl} - {fetch assign=content file=$tpl.filename} - SELECT @workflow_id := MAX(id) FROM civicrm_option_value WHERE name = '{$tpl.name}'; - SELECT @content := msg_{$tpl.type} FROM civicrm_msg_template WHERE workflow_id = @workflow_id AND is_reserved = 1 LIMIT 1; - UPDATE civicrm_msg_template SET msg_{$tpl.type} = '{$content|escape:"quotes"}' WHERE workflow_id = @workflow_id AND (is_reserved = 1 OR (is_default = 1 AND msg_{$tpl.type} = @content)); -{/foreach} diff --git a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_html.tpl b/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_html.tpl deleted file mode 100644 index 0f782a9c98..0000000000 --- a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_html.tpl +++ /dev/null @@ -1,86 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="620" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p> - <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p> - </td> - </tr> - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <td {$labelStyle}> - {ts}Organization Name{/ts} - </td> - <td {$valueStyle}> - {$onBehalfName} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Organization Email{/ts} - </td> - <td {$valueStyle}> - {$onBehalfEmail} - </td> - </tr> - <tr> - <td {$labelStyle}> - {ts}Organization Contact ID{/ts} - </td> - <td {$valueStyle}> - {$onBehalfID} - </td> - </tr> - </table> - </td> - </tr> - <tr> - <td> - <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> - </td> - </tr> - {if $receiptMessage} - <tr> - <td> - <table style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;"> - <tr> - <th {$headerStyle}> - {ts}Copy of Contribution Receipt{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {* FIXME: the below is most probably not HTML-ised *} - {$receiptMessage} - </td> - </tr> - </table> - </td> - </tr> - {/if} - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_text.tpl b/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_text.tpl deleted file mode 100644 index 28b2a37f22..0000000000 --- a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/contribution_dupalert_text.tpl +++ /dev/null @@ -1,17 +0,0 @@ -{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts} -{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts} - -{ts}Organization Name{/ts}: {$onBehalfName} -{ts}Organization Email{/ts}: {$onBehalfEmail} -{ts}Organization Contact ID{/ts}: {$onBehalfID} - -{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} - -{if $receiptMessage} -########################################################### -{ts}Copy of Contribution Receipt{/ts} - -########################################################### -{$receiptMessage} - -{/if} diff --git a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_html.tpl b/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_html.tpl deleted file mode 100644 index 2c9da1a36c..0000000000 --- a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_html.tpl +++ /dev/null @@ -1,450 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title></title> -</head> -<body> - -{capture assign=headerStyle}colspan="2" style="text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;"{/capture} -{capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture} -{capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture} - -<center> - <table width="500" border="0" cellpadding="0" cellspacing="0" id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left;"> - - <!-- BEGIN HEADER --> - <!-- You can add table row(s) here with logo or other header elements --> - <!-- END HEADER --> - - <!-- BEGIN CONTENT --> - - <tr> - <td> - <p>Dear {contact.display_name},</p> - - {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} - <p>{$event.confirm_email_text|htmlize}</p> - - {else} - <p>Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to <strong>{if $isOnWaitlist}waitlisted{else}registered{/if}</strong> for the following:</p> - - {/if} - - <p> - {if $isOnWaitlist} - <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {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 $isRequireApproval} - <p>{ts}Your registration has been submitted.{/ts}</p> - {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 $is_pay_later && !$isAmountzero && !$isAdditionalParticipant} - <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *} - {else} - <p>{ts}Please print this confirmation for your records.{/ts}</p> - {/if} - - </td> - </tr> - <tr> - <td> - <table width="500" style="border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;"> - <tr> - <th {$headerStyle}> - {ts}Event Information and Location{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$event.event_title}<br /> - {$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} - </td> - </tr> - - - {if $conference_sessions} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Your schedule:{/ts} - </td> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {assign var='group_by_day' value='NA'} - {foreach from=$conference_sessions item=session} - {if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} - {assign var='group_by_day' value=$session.start_date} - <em>{$group_by_day|date_format:"%m/%d/%Y"}</em><br /> - {/if} - {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br /> - {if $session.location} {$session.location}<br />{/if} - {/foreach} - </td> - </tr> - {/if} - - {if $event.participant_role neq 'Attendee' and $defaultRole} - <tr> - <td {$labelStyle}> - {ts}Participant Role{/ts} - </td> - <td {$valueStyle}> - {$event.participant_role} - </td> - </tr> - {/if} - - {if $isShowLocation} - <tr> - <td colspan="2" {$valueStyle}> - {if $location.address.1.name} - {$location.address.1.name}<br /> - {/if} - {if $location.address.1.street_address} - {$location.address.1.street_address}<br /> - {/if} - {if $location.address.1.supplemental_address_1} - {$location.address.1.supplemental_address_1}<br /> - {/if} - {if $location.address.1.supplemental_address_2} - {$location.address.1.supplemental_address_2}<br /> - {/if} - {if $location.address.1.city} - {$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if}<br /> - {/if} - </td> - </tr> - {/if} - - {if $location.phone.1.phone || $location.email.1.email} - <tr> - <td colspan="2" {$labelStyle}> - {ts}Event Contacts:{/ts} - </td> - </tr> - {foreach from=$location.phone item=phone} - {if $phone.phone} - <tr> - <td {$labelStyle}> - {if $phone.phone_type} - {$phone.phone_type_display} - {else} - {ts}Phone{/ts} - {/if} - </td> - <td {$valueStyle}> - {$phone.phone} - </td> - </tr> - {/if} - {/foreach} - {foreach from=$location.email item=eventEmail} - {if $eventEmail.email} - <tr> - <td {$labelStyle}> - {ts}Email{/ts} - </td> - <td {$valueStyle}> - {$eventEmail.email} - </td> - </tr> - {/if} - {/foreach} - {/if} - <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} - <a href="{$icalFeed}">{ts}Download iCalendar File{/ts}</a> - </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 title=$event.title pageURL=$eventUrl} - </td> - </tr> - {/if} - {if $payer.name} - <tr> - <th {$headerStyle}> - {ts}You were registered by:{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$payer.name} - </td> - </tr> - {/if} - {if $event.is_monetary} - - <tr> - <th {$headerStyle}> - {$event.fee_label} - </th> - </tr> - - {if $lineItem} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if $isPrimary} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *} - <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - <th>{ts}Total{/ts}</th> - {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td> - {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> - {$line.qty} - </td> - <td> - {$line.unit_price|crmMoney:$currency} - </td> - <td> - {$line.line_total|crmMoney:$currency} - </td> - {if $pricesetFieldsCount }<td>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - </table> - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if $amounts && !$lineItem} - {foreach from=$amounts item=amnt key=level} - <tr> - <td colspan="2" {$valueStyle}> - {$amnt.amount|crmMoney:$currency} {$amnt.label} - </td> - </tr> - {/foreach} - {/if} - - {if $isPrimary} - <tr> - <td {$labelStyle}> - {ts}Total Amount{/ts} - </td> - <td {$valueStyle}> - {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - </td> - </tr> - {if $pricesetFieldsCount } - <tr> - <td {$labelStyle}> - {ts}Total Participants{/ts}</td> - <td {$valueStyle}> - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - {$count} - </td> </tr> - {/if} - - {if $register_date} - <tr> - <td {$labelStyle}> - {ts}Registration Date{/ts} - </td> - <td {$valueStyle}> - {$register_date|crmDate} - </td> - </tr> - {/if} - - {if $receive_date} - <tr> - <td {$labelStyle}> - {ts}Transaction Date{/ts} - </td> - <td {$valueStyle}> - {$receive_date|crmDate} - </td> - </tr> - {/if} - - {if $contributionTypeName} - <tr> - <td {$labelStyle}> - {ts}Financial Type{/ts} - </td> - <td {$valueStyle}> - {$contributionTypeName} - </td> - </tr> - {/if} - - {if $trxn_id} - <tr> - <td {$labelStyle}> - {ts}Transaction #{/ts} - </td> - <td {$valueStyle}> - {$trxn_id} - </td> - </tr> - {/if} - - {if $paidBy} - <tr> - <td {$labelStyle}> - {ts}Paid By{/ts} - </td> - <td {$valueStyle}> - {$paidBy} - </td> - </tr> - {/if} - - {if $checkNumber} - <tr> - <td {$labelStyle}> - {ts}Check Number{/ts} - </td> - <td {$valueStyle}> - {$checkNumber} - </td> - </tr> - {/if} - - {if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Billing Name and Address{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$billingName}<br /> - {$address|nl2br} - </td> - </tr> - {/if} - - {if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - <tr> - <th {$headerStyle}> - {ts}Credit Card Information{/ts} - </th> - </tr> - <tr> - <td colspan="2" {$valueStyle}> - {$credit_card_type}<br /> - {$credit_card_number}<br /> - {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} - </td> - </tr> - {/if} - - {/if} - - {/if} {* End of conditional section for Paid events *} - - -{if $customPre} -{foreach from=$customPre item=customPr key=i} - <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> - {foreach from=$customPr item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> - {/if} - {/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} - <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> - {foreach from=$customPos item=customValue key=customName} - {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - <tr> - <td {$labelStyle}>{$customName}</td> - <td {$valueStyle}>{$customValue}</td> - </tr> -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customProfile} -{foreach from=$customProfile.profile item=eachParticipant key=participantID} - <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr> - {foreach from=$eachParticipant item=eachProfile key=pid} - <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr> - {foreach from=$eachProfile item=val key=field} - <tr>{foreach from=$val item=v key=f} - <td {$labelStyle}>{$field}</td> - <td {$valueStyle}>{$v}</td> - {/foreach} - </tr> - {/foreach} -{/foreach} -{/foreach} -{/if} - - {if $customGroup} - {foreach from=$customGroup item=value key=customName} - <tr> - <th {$headerStyle}> - {$customName} - </th> - </tr> - {foreach from=$value item=v key=n} - <tr> - <td {$labelStyle}> - {$n} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/foreach} - {/if} - - </table> - </td> - </tr> - </table> -</center> - -</body> -</html> diff --git a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_text.tpl b/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_text.tpl deleted file mode 100644 index ce7b1714dc..0000000000 --- a/civicrm/CRM/Upgrade/4.4.alpha1.msg_template/message_templates/event_online_receipt_text.tpl +++ /dev/null @@ -1,277 +0,0 @@ -Dear {contact.display_name}, - -{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)} -{$event.confirm_email_text} - -{else} -Thank you for your participation. This letter is a confirmation that your registration has been received and your status has been updated to {if $participant_status}$participant_status{else}{if $isOnWaitlist}waitlisted{else}registered{/if}{/if} for the following: - -{/if} - -{if $isOnWaitlist} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{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 $pricesetFieldsCount }===================={/if} - -{elseif $isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Your registration has been submitted.{/ts} - -{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} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{elseif $is_pay_later && !$isAmountzero && !$isAdditionalParticipant} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$pay_later_receipt} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{else} - -{ts}Please print this confirmation for your records.{/ts} -{/if} - - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Event Information and Location{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.event_title} -{$event.event_start_date|date_format:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:"%Y%m%d" == $event.event_start_date|date_format:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:"%A"} {$event.event_end_date|crmDate}{/if}{/if} -{if $conference_sessions} - - -{ts}Your schedule:{/ts} -{assign var='group_by_day' value='NA'} -{foreach from=$conference_sessions item=session} -{if $session.start_date|date_format:"%Y/%m/%d" != $group_by_day|date_format:"%Y/%m/%d"} -{assign var='group_by_day' value=$session.start_date} - -{$group_by_day|date_format:"%m/%d/%Y"} - - -{/if} -{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title} -{if $session.location} {$session.location}{/if} -{/foreach} -{/if} - -{if $event.participant_role neq 'Attendee' and $defaultRole} -{ts}Participant Role{/ts}: {$event.participant_role} -{/if} - -{if $isShowLocation} -{if $location.address.1.name} - -{$location.address.1.name} -{/if} -{if $location.address.1.street_address}{$location.address.1.street_address} -{/if} -{if $location.address.1.supplemental_address_1}{$location.address.1.supplemental_address_1} -{/if} -{if $location.address.1.supplemental_address_2}{$location.address.1.supplemental_address_2} -{/if} -{if $location.address.1.city}{$location.address.1.city}, {$location.address.1.state_province} {$location.address.1.postal_code}{if $location.address.1.postal_code_suffix} - {$location.address.1.postal_code_suffix}{/if} -{/if} - -{/if}{*End of isShowLocation condition*} - -{if $location.phone.1.phone || $location.email.1.email} - -{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} -{/foreach} -{foreach from=$location.email item=eventEmail} -{if $eventEmail.email} - -{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} -{/if} - -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar File:{/ts} {$icalFeed} - -{if $payer.name} -You were registered by: {$payer.name} -{/if} -{if $event.is_monetary} {* This section for Paid events only.*} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$event.fee_label} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{if $lineItem}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if $isPrimary} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info} - -{/if} -{/if} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{if $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"} {$ts_total|string_format:"%10s"} {$ts_participant_total|string_format:"%10s"} ------------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$value item=line} -{if $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"} {$line.line_total|crmMoney:$currency|string_format:"%10s"}{$ts_participant_count|string_format:"%10s"} -{/foreach} -{/if} -{/foreach} -{/if} -{if $amounts && !$lineItem} -{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label} -{/foreach} -{/if} -{if $isPrimary } - -{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if} - -{if $pricesetFieldsCount } - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1 } - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} -{/if} -{if $receive_date} -{ts}Transaction Date{/ts}: {$receive_date|crmDate} -{/if} -{if $contributionTypeName} -{ts}Financial Type{/ts}: {$contributionTypeName} -{/if} -{if $trxn_id} -{ts}Transaction #{/ts}: {$trxn_id} -{/if} -{if $paidBy} -{ts}Paid By{/ts}: {$paidBy} -{/if} -{if $checkNumber} -{ts}Check Number{/ts}: {$checkNumber} -{/if} -{if $contributeMode ne 'notify' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Billing Name and Address{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$billingName} -{$address} -{/if} - -{if $contributeMode eq 'direct' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts}Credit Card Information{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if $customPre} -{foreach from=$customPre item=customPr key=i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPre_grouptitle.$i} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPr item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} - -{if $customPost} -{foreach from=$customPost item=customPos key=j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{$customPost_grouptitle.$j} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$customPos item=customValue key=customName} -{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields} - {$customName}: {$customValue} -{/if} -{/foreach} -{/foreach} -{/if} -{if $customProfile} - -{foreach from=$customProfile.profile item=eachParticipant key=participantID} -==========================================================={if $pricesetFieldsCount }===================={/if} - -{ts 1=$participantID+2}Participant Information - Participant %1{/ts} - -==========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$eachParticipant item=eachProfile key=pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{$customProfile.title.$pid} -----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if} - -{foreach from=$eachProfile item=val key=field} -{foreach from=$val item=v key=f} -{$field}: {$v} -{/foreach} -{/foreach} -{/foreach} -{/foreach} -{/if} -{if $customGroup} -{foreach from=$customGroup item=value key=customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{$customName} -=========================================================={if $pricesetFieldsCount }===================={/if} - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} diff --git a/civicrm/CRM/Upgrade/Controller.php b/civicrm/CRM/Upgrade/Controller.php index d9267b9f21..d794287955 100644 --- a/civicrm/CRM/Upgrade/Controller.php +++ b/civicrm/CRM/Upgrade/Controller.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Upgrade_Controller extends CRM_Core_Controller { diff --git a/civicrm/CRM/Upgrade/Form.php b/civicrm/CRM/Upgrade/Form.php index bd7c86b686..6eb65bf70d 100644 --- a/civicrm/CRM/Upgrade/Form.php +++ b/civicrm/CRM/Upgrade/Form.php @@ -25,7 +25,7 @@ class CRM_Upgrade_Form extends CRM_Core_Form { /** * Minimum previous CiviCRM version we can directly upgrade from */ - const MINIMUM_UPGRADABLE_VERSION = '4.2.9'; + const MINIMUM_UPGRADABLE_VERSION = '4.4.7'; /** * @var \CRM_Core_Config @@ -68,11 +68,10 @@ class CRM_Upgrade_Form extends CRM_Core_Form { ) { $this->_config = CRM_Core_Config::singleton(); - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); + $locales = CRM_Core_I18n::getMultilingual(); - $this->multilingual = (bool) $domain->locales; - $this->locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $this->multilingual = (bool) $locales; + $this->locales = $locales; $smarty = CRM_Core_Smarty::singleton(); //$smarty->compile_dir = $this->_config->templateCompileDir; diff --git a/civicrm/CRM/Upgrade/Incremental/Base.php b/civicrm/CRM/Upgrade/Incremental/Base.php index 0faa6012e4..3f5393dc0c 100644 --- a/civicrm/CRM/Upgrade/Incremental/Base.php +++ b/civicrm/CRM/Upgrade/Incremental/Base.php @@ -140,13 +140,11 @@ class CRM_Upgrade_Incremental_Base { * @return bool */ public static function addColumn($ctx, $table, $column, $properties, $localizable = FALSE, $version = NULL) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); + $locales = CRM_Core_I18n::getMultilingual(); $queries = []; if (!CRM_Core_BAO_SchemaHandler::checkIfFieldExists($table, $column, FALSE)) { - if ($domain->locales) { + if ($locales) { if ($localizable) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); foreach ($locales as $locale) { if (!CRM_Core_BAO_SchemaHandler::checkIfFieldExists($table, "{$column}_{$locale}", FALSE)) { $queries[] = "ALTER TABLE `$table` ADD COLUMN `{$column}_{$locale}` $properties"; @@ -164,8 +162,7 @@ class CRM_Upgrade_Incremental_Base { CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); } } - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + if ($locales) { CRM_Core_I18n_Schema::rebuildMultilingualSchema($locales, $version, TRUE); } return TRUE; @@ -298,10 +295,8 @@ class CRM_Upgrade_Incremental_Base { * @return bool */ public static function rebuildMultilingalSchema($ctx, $version = NULL) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { CRM_Core_I18n_Schema::rebuildMultilingualSchema($locales, $version); } return TRUE; diff --git a/civicrm/CRM/Upgrade/Incremental/General.php b/civicrm/CRM/Upgrade/Incremental/General.php index 3536831b3b..fb5510d5b5 100644 --- a/civicrm/CRM/Upgrade/Incremental/General.php +++ b/civicrm/CRM/Upgrade/Incremental/General.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Upgrade/Incremental/SmartGroups.php b/civicrm/CRM/Upgrade/Incremental/SmartGroups.php index 70c272511d..862eefe79d 100644 --- a/civicrm/CRM/Upgrade/Incremental/SmartGroups.php +++ b/civicrm/CRM/Upgrade/Incremental/SmartGroups.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * Class to handled upgrading any saved searches with changed patterns. */ class CRM_Upgrade_Incremental_SmartGroups { diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyEight.php b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyEight.php index 01c899a7de..2d10885877 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyEight.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyEight.php @@ -46,37 +46,6 @@ class CRM_Upgrade_Incremental_php_FiveTwentyEight extends CRM_Upgrade_Incrementa } } - /** - * Upgrade function. - * - * @param string $rev - */ - public function upgrade_5_28_1($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); - $this->addTask('Make label field non required on price field value', 'priceFieldValueLabelNonRequired'); - } - - /** - * Make the price field value label column non required - * @return bool - */ - public static function priceFieldValueLabelNonRequired() { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); - foreach ($locales as $locale) { - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_price_field_value CHANGE `label_{$locale}` `label_{$locale}` varchar(255) DEFAULT NULL COMMENT 'Price field option label'", [], TRUE, NULL, FALSE, FALSE); - CRM_Core_DAO::executeQuery("UPDATE civicrm_price_field_value SET label_{$locale} = NULL WHERE label_{$locale} = 'null'", [], TRUE, NULL, FALSE, FALSE); - } - } - else { - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_price_field_value CHANGE `label` `label` varchar(255) DEFAULT NULL COMMENT 'Price field option label'", [], TRUE, NULL, FALSE, FALSE); - CRM_Core_DAO::executeQuery("UPDATE civicrm_price_field_value SET label = NULL WHERE label = 'null'", [], TRUE, NULL, FALSE, FALSE); - } - return TRUE; - } - public static function createWpFilesMessage() { if (!function_exists('civi_wp')) { return ''; @@ -126,8 +95,7 @@ class CRM_Upgrade_Incremental_php_FiveTwentyEight extends CRM_Upgrade_Incrementa } public static function populateMissingContactTypeName() { - $contactTypes = \Civi\Api4\ContactType::get() - ->setCheckPermissions(FALSE) + $contactTypes = \Civi\Api4\ContactType::get(FALSE) ->execute(); foreach ($contactTypes as $contactType) { if (empty($contactType['name'])) { diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php new file mode 100644 index 0000000000..88d392c791 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php @@ -0,0 +1,193 @@ +<?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 FiveTwentyNine */ +class CRM_Upgrade_Incremental_php_FiveTwentyNine extends CRM_Upgrade_Incremental_Base { + + /** + * Compute any messages which should be displayed beforeupgrade. + * + * Note: This function is called iteratively for each upcoming + * revision to the database. + * + * @param string $preUpgradeMessage + * @param string $rev + * a version number, e.g. '4.4.alpha1', '4.4.beta3', '4.4.0'. + * @param null $currentVer + */ + public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { + if ($rev == '5.29.beta1') { + if (CIVICRM_UF === 'Drupal8') { + $preUpgradeMessage .= '<p>' . ts('<em>Pre-announcement for upcoming version 5.30</em>: If your composer configuration or composer.json does not enable patching, you MUST do that BEFORE running composer to update your files to version 5.30. Either by using `composer config \'extra.enable-patching\' true`, or updating the top level composer.json\'s extra section with `"enable-patching": true`. See %1 for details.', [1 => '<a href="' . CRM_Utils_System::docURL2('installation/drupal8', TRUE) . '">Drupal 8 installation guide</a>']) . '</p>'; + } + } + } + + /** + * Compute any messages which should be displayed after upgrade. + * + * @param string $postUpgradeMessage + * alterable. + * @param string $rev + * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. + */ + public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { + // Example: Generate a post-upgrade message. + // if ($rev == '5.12.34') { + // $postUpgradeMessage .= '<br /><br />' . ts("By default, CiviCRM now disables the ability to import directly from SQL. To use this feature, you must explicitly grant permission 'import SQL datasource'."); + // } + } + + /* + * Important! All upgrade functions MUST add a 'runSql' task. + * Uncomment and use the following template for a new upgrade version + * (change the x in the function name): + */ + + /** + * Upgrade function. + * + * @param string $rev + */ + public function upgrade_5_29_alpha1($rev) { + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + $this->addTask('Install eventcart extension', 'installEventCart'); + + list($minId, $maxId) = CRM_Core_DAO::executeQuery("SELECT coalesce(min(id),0), coalesce(max(id),0) + FROM civicrm_relationship ")->getDatabaseResult()->fetchRow(); + for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { + $endId = $startId + self::BATCH_SIZE - 1; + $title = ts("Upgrade DB to %1: Fill civicrm_relationship_cache (%2 => %3)", [ + 1 => $rev, + 2 => $startId, + 3 => $endId, + ]); + $this->addTask($title, 'populateRelationshipCache', $startId, $endId); + } + } + + /** + * Upgrade function. + * + * @param string $rev + */ + public function upgrade_5_29_beta1($rev) { + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + $this->addTask('Make label field non required on price field value', 'priceFieldValueLabelNonRequired'); + } + + /** + * Make the price field value label column non required + * @return bool + */ + public static function priceFieldValueLabelNonRequired() { + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { + foreach ($locales as $locale) { + CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_price_field_value CHANGE `label_{$locale}` `label_{$locale}` varchar(255) DEFAULT NULL COMMENT 'Price field option label'", [], TRUE, NULL, FALSE, FALSE); + CRM_Core_DAO::executeQuery("UPDATE civicrm_price_field_value SET label_{$locale} = NULL WHERE label_{$locale} = 'null'", [], TRUE, NULL, FALSE, FALSE); + } + } + else { + CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_price_field_value CHANGE `label` `label` varchar(255) DEFAULT NULL COMMENT 'Price field option label'", [], TRUE, NULL, FALSE, FALSE); + CRM_Core_DAO::executeQuery("UPDATE civicrm_price_field_value SET label = NULL WHERE label = 'null'", [], TRUE, NULL, FALSE, FALSE); + } + return TRUE; + } + + /** + * Install sequentialCreditNotes extension. + * + * This feature is restructured as a core extension - which is primarily a code cleanup step. + * + * @param \CRM_Queue_TaskContext $ctx + * + * @return bool + * + * @throws \CiviCRM_API3_Exception + * @throws \CRM_Core_Exception + */ + public static function installEventCart(CRM_Queue_TaskContext $ctx) { + // Install via direct SQL manipulation. Note that: + // (1) This extension has no activation logic. + // (2) On new installs, the extension is activated purely via default SQL INSERT. + // (3) Caches are flushed at the end of the upgrade. + // ($) Over long term, upgrade steps are more reliable in SQL. API/BAO sometimes don't work mid-upgrade. + $insert = CRM_Utils_SQL_Insert::into('civicrm_extension')->row([ + 'type' => 'module', + 'full_name' => 'eventcart', + 'name' => 'eventcart', + 'label' => 'Event Cart', + 'file' => 'eventcart', + 'schema_version' => NULL, + 'is_active' => 1, + ]); + CRM_Core_DAO::executeQuery($insert->usingReplace()->toSQL()); + + return TRUE; + } + + /** + * @param \CRM_Queue_TaskContext $ctx + * @param int $startId + * The lowest relationship ID that should be updated. + * @param int $endId + * The highest relationship ID that should be updated. + * @return bool + * TRUE on success + */ + public static function populateRelationshipCache(CRM_Queue_TaskContext $ctx, $startId, $endId) { + // NOTE: We duplicate CRM_Contact_BAO_RelationshipCache::$mappings in case + // the schema evolves over multiple releases. + $mappings = [ + 'a_b' => [ + 'relationship_id' => 'rel.id', + 'relationship_type_id' => 'rel.relationship_type_id', + 'orientation' => '"a_b"', + 'near_contact_id' => 'rel.contact_id_a', + 'near_relation' => 'reltype.name_a_b', + 'far_contact_id' => 'rel.contact_id_b', + 'far_relation' => 'reltype.name_b_a', + 'start_date' => 'rel.start_date', + 'end_date' => 'rel.end_date', + 'is_active' => 'rel.is_active', + ], + 'b_a' => [ + 'relationship_id' => 'rel.id', + 'relationship_type_id' => 'rel.relationship_type_id', + 'orientation' => '"b_a"', + 'near_contact_id' => 'rel.contact_id_b', + 'near_relation' => 'reltype.name_b_a', + 'far_contact_id' => 'rel.contact_id_a', + 'far_relation' => 'reltype.name_a_b', + 'start_date' => 'rel.start_date', + 'end_date' => 'rel.end_date', + 'is_active' => 'rel.is_active', + ], + ]; + $keyFields = ['relationship_id', 'orientation']; + + foreach ($mappings as $mapping) { + $query = CRM_Utils_SQL_Select::from('civicrm_relationship rel') + ->join('reltype', 'INNER JOIN civicrm_relationship_type reltype ON rel.relationship_type_id = reltype.id') + ->syncInto('civicrm_relationship_cache', $keyFields, $mapping) + ->where('rel.id >= #START AND rel.id <= #END', [ + '#START' => $startId, + '#END' => $endId, + ]); + $query->execute(); + } + + return TRUE; + } + +} diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyOne.php b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyOne.php index 499aa9a68f..2319acd0ae 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyOne.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyOne.php @@ -43,7 +43,7 @@ class CRM_Upgrade_Incremental_php_FiveTwentyOne extends CRM_Upgrade_Incremental_ if ($rev == '5.21.alpha1') { // Find any option groups that were not converted during the upgrade. $notConverted = []; - $optionGroups = \Civi\Api4\OptionGroup::get()->setCheckPermissions(FALSE)->execute(); + $optionGroups = \Civi\Api4\OptionGroup::get(FALSE)->execute(); foreach ($optionGroups as $optionGroup) { $trimmedName = trim($optionGroup['name']); if (strpos($trimmedName, ' ') !== FALSE) { @@ -86,8 +86,7 @@ class CRM_Upgrade_Incremental_php_FiveTwentyOne extends CRM_Upgrade_Incremental_ } public static function fixOptionGroupName() { - $optionGroups = \Civi\Api4\OptionGroup::get() - ->setCheckPermissions(FALSE) + $optionGroups = \Civi\Api4\OptionGroup::get(FALSE) ->execute(); foreach ($optionGroups as $optionGroup) { $name = trim($optionGroup['name']); diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentySeven.php b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentySeven.php index b8cb7bffff..60490a0b24 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentySeven.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentySeven.php @@ -75,10 +75,8 @@ class CRM_Upgrade_Incremental_php_FiveTwentySeven extends CRM_Upgrade_Incrementa } public function priceFieldValueLabelRequired($ctx) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { foreach ($locales as $locale) { CRM_Core_DAO::executeQuery("UPDATE civicrm_price_field_value SET label_{$locale} = '' WHERE label_{$locale} IS NULL", [], TRUE, NULL, FALSE, FALSE); CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_price_field_value CHANGE `label_{$locale}` `label_{$locale}` varchar(255) NOT NULL COMMENT 'Price field option label'", [], TRUE, NULL, FALSE, FALSE); @@ -92,10 +90,8 @@ class CRM_Upgrade_Incremental_php_FiveTwentySeven extends CRM_Upgrade_Incrementa } public function nameMembershipTypeRequired($ctx) { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { foreach ($locales as $locale) { CRM_Core_DAO::executeQuery("UPDATE civicrm_membership_type SET name_{$locale} = '' WHERE name_{$locale} IS NULL", [], TRUE, NULL, FALSE, FALSE); CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_membership_type CHANGE `name_{$locale}` `name_{$locale}` varchar(128) NOT NULL COMMENT 'Name of Membership Type'", [], TRUE, NULL, FALSE, FALSE); diff --git a/civicrm/CRM/Upgrade/Incremental/php/FourFour.php b/civicrm/CRM/Upgrade/Incremental/php/FourFour.php deleted file mode 100644 index d4d83ee49d..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/php/FourFour.php +++ /dev/null @@ -1,803 +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 | - +--------------------------------------------------------------------+ - */ - -/** - * Upgrade logic for 4.4 - */ -class CRM_Upgrade_Incremental_php_FourFour extends CRM_Upgrade_Incremental_Base { - const MAX_WORD_REPLACEMENT_SIZE = 255; - - /** - * Compute any messages which should be displayed beforeupgrade. - * - * Note: This function is called iteratively for each upcoming - * revision to the database. - * - * @param $preUpgradeMessage - * @param string $rev - * a version number, e.g. '4.4.alpha1', '4.4.beta3', '4.4.0'. - * @param string $currentVer - */ - public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { - if ($rev == '4.4.beta1') { - $apiCalls = self::getConfigArraysAsAPIParams(FALSE); - $oversizedEntries = 0; - foreach ($apiCalls as $params) { - if (!self::isValidWordReplacement($params)) { - $oversizedEntries++; - } - } - if ($oversizedEntries > 0) { - $preUpgradeMessage .= '<br/>' . ts("WARNING: There are %1 word-replacement entries which will not be valid in v4.4+ (eg with over 255 characters). They will be dropped during upgrade. For details, consult the CiviCRM log.", [ - 1 => $oversizedEntries, - ]); - } - } - } - - /** - * Compute any messages which should be displayed after upgrade. - * - * @param string $postUpgradeMessage - * alterable. - * @param string $rev - * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. - */ - public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { - if ($rev == '4.4.1') { - $config = CRM_Core_Config::singleton(); - if (!empty($config->useIDS)) { - $postUpgradeMessage .= '<br />' . ts("The setting to skip IDS check has been removed. Your site has this configured in civicrm.settings.php but it will no longer work. Instead, use the new permission 'skip IDS check' to bypass the IDS system."); - } - } - if ($rev == '4.4.3') { - $postUpgradeMessage .= '<br /><br />' . ts('Default versions of the following System Workflow Message Templates have been modified to handle new functionality: <ul><li>Events - Registration Confirmation and Receipt (on-line)</li></ul> If you have modified these templates, please review the new default versions and implement updates as needed to your copies (Administer > Communications > Message Templates > System Workflow Messages).'); - } - if ($rev == '4.4.3') { - $query = "SELECT cft.id financial_trxn -FROM civicrm_financial_trxn cft -LEFT JOIN civicrm_entity_financial_trxn ceft ON ceft.financial_trxn_id = cft.id -LEFT JOIN civicrm_contribution cc ON ceft.entity_id = cc.id -WHERE ceft.entity_table = 'civicrm_contribution' AND cft.payment_instrument_id IS NULL;"; - $dao = CRM_Core_DAO::executeQuery($query); - if ($dao->N) { - $postUpgradeMessage .= '<br /><br /><strong>' . ts('Your database contains %1 financial transaction records with no payment instrument (Paid By is empty). If you use the Accounting Batches feature this may result in unbalanced transactions. If you do not use this feature, you can ignore the condition (although you will be required to select a Paid By value for new transactions). <a href="%2" target="_blank">You can review steps to correct transactions with missing payment instruments on the wiki.</a>', [ - 1 => $dao->N, - 2 => 'http://wiki.civicrm.org/confluence/display/CRMDOC/Fixing+Transactions+Missing+a+Payment+Instrument+-+4.4.3+Upgrades', - ]) . '</strong>'; - } - } - if ($rev == '4.4.6') { - $postUpgradeMessage .= '<br /><br /><strong>' . ts('Your contact image urls have been upgraded. If your contact image urls did not follow the standard format for image Urls they have not been upgraded. Please check the log to see image urls that were not upgraded.'); - } - } - - /** - * Upgrade 4.4.alpha1. - * - * @param string $rev - * - * @return bool - */ - public function upgrade_4_4_alpha1($rev) { - // task to process sql - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.4.alpha1']), 'runSql', $rev); - - // Consolidate activity contacts CRM-12274. - $this->addTask('Consolidate activity contacts', 'activityContacts'); - - return TRUE; - } - - /** - * @param $rev - */ - public function upgrade_4_4_beta1($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.4.beta1']), 'runSql', $rev); - - // add new 'data' column in civicrm_batch - $query = 'ALTER TABLE civicrm_batch ADD data LONGTEXT NULL COMMENT "cache entered data"'; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - - // check if batch entry data exists in civicrm_cache table - $query = 'SELECT path, data FROM civicrm_cache WHERE group_name = "batch entry"'; - $dao = CRM_Core_DAO::executeQuery($query); - while ($dao->fetch()) { - // get batch id $batchId[2] - $batchId = explode('-', $dao->path); - $data = unserialize($dao->data); - - // move the data to civicrm_batch table - CRM_Core_DAO::setFieldValue('CRM_Batch_DAO_Batch', $batchId[2], 'data', json_encode(['values' => $data])); - } - - // delete entries from civicrm_cache table - $query = 'DELETE FROM civicrm_cache WHERE group_name = "batch entry"'; - CRM_Core_DAO::executeQuery($query); - - $this->addTask('Migrate custom word-replacements', 'wordReplacements'); - } - - /** - * @param $rev - */ - public function upgrade_4_4_1($rev) { - $config = CRM_Core_Config::singleton(); - // CRM-13327 upgrade handling for the newly added name badges - $ogID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'name_badge', 'id', 'name'); - $nameBadges = array_flip(array_values(CRM_Core_BAO_OptionValue::getOptionValuesAssocArrayFromName('name_badge'))); - unset($nameBadges['Avery 5395']); - if (!empty($nameBadges)) { - $dimension = '{"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}'; - $query = "UPDATE civicrm_option_value - SET value = '{$dimension}' - WHERE option_group_id = %1 AND name = 'Fattorini Name Badge 100x65'"; - - CRM_Core_DAO::executeQuery($query, [1 => [$ogID, 'Integer']]); - } - else { - $dimensions = [ - 1 => '{"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}', - 2 => '{"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}', - 3 => '{"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}', - ]; - $insertStatements = [ - 1 => "($ogID, %1, '{$dimensions[1]}', %1, NULL, 0, NULL, 2, NULL, 0, 0, 1, NULL, NULL)", - 2 => "($ogID, %2, '{$dimensions[2]}', %2, NULL, 0, NULL, 3, NULL, 0, 0, 1, NULL, NULL)", - 3 => "($ogID, %3, '{$dimensions[3]}', %3, NULL, 0, NULL, 4, NULL, 0, 0, 1, NULL, NULL)", - ]; - - $queryParams = [ - 1 => ['A6 Badge Portrait 150x106', 'String'], - 2 => ['Fattorini Name Badge 100x65', 'String'], - 3 => ['Hanging Badge 3-3/4" x 4-3"/4', 'String'], - ]; - - foreach ($insertStatements as $values) { - $query = 'INSERT INTO civicrm_option_value (`option_group_id`, `label`, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `description`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) VALUES' . $values; - CRM_Core_DAO::executeQuery($query, $queryParams); - } - } - - // CRM-12578 - Prior to this version a CSS file under drupal would disable core css - if (!empty($config->customCSSURL) && strpos($config->userFramework, 'Drupal') === 0) { - // The new setting doesn't exist yet - need to create it first - $sql = ' - INSERT INTO civicrm_setting (group_name, name , value , domain_id , is_domain , created_date) - VALUES (%1, %2, %3, %4, %5, now())'; - CRM_Core_DAO::executeQuery($sql, [ - 1 => [CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'String'], - 2 => ['disable_core_css', 'String'], - 3 => [serialize(1), 'String'], - 4 => [CRM_Core_Config::domainID(), 'Positive'], - 5 => [1, 'Int'], - ]); - Civi::service('settings_manager')->flush(); - } - - // CRM-13701 - Fix $config->timeInputFormat - $sql = " - SELECT time_format - FROM civicrm_preferences_date - WHERE time_format IS NOT NULL - AND time_format <> '' - LIMIT 1 - "; - $timeInputFormat = CRM_Core_DAO::singleValueQuery($sql); - if ($timeInputFormat && $timeInputFormat != $config->timeInputFormat) { - $params = ['timeInputFormat' => $timeInputFormat]; - CRM_Core_BAO_ConfigSetting::add($params); - } - - // CRM-13698 - add 'Available' and 'No-show' activity statuses - $insertStatus = []; - $nsinc = $avinc = $inc = 0; - if (!CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'status_id', 'Available')) { - $insertStatus[] = "(%1, 'Available', %2, 'Available', NULL, 0, NULL, %3, 0, 0, 1, NULL, NULL)"; - $avinc = $inc = 1; - } - if (!CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'status_id', 'No_show')) { - $insertStatus[] = "(%1, 'No-show', %4, 'No_show', NULL, 0, NULL, %5, 0, 0, 1, NULL, NULL)"; - $nsinc = $inc + 1; - } - if (!empty($insertStatus)) { - $acOptionGroupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'activity_status', 'id', 'name'); - $maxVal = CRM_Core_DAO::singleValueQuery("SELECT MAX(ROUND(op.value)) FROM civicrm_option_value op WHERE op.option_group_id = $acOptionGroupID"); - $maxWeight = CRM_Core_DAO::singleValueQuery("SELECT MAX(weight) FROM civicrm_option_value WHERE option_group_id = $acOptionGroupID"); - - $p[1] = [$acOptionGroupID, 'Integer']; - if ($avinc) { - $p[2] = [$avinc + $maxVal, 'Integer']; - $p[3] = [$avinc + $maxWeight, 'Integer']; - } - if ($nsinc) { - $p[4] = [$nsinc + $maxVal, 'Integer']; - $p[5] = [$nsinc + $maxWeight, 'Integer']; - } - $insertStatus = implode(',', $insertStatus); - - $sql = " -INSERT INTO - civicrm_option_value (`option_group_id`, label, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) -VALUES {$insertStatus}"; - CRM_Core_DAO::executeQuery($sql, $p); - } - - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.4.1']), 'runSql', $rev); - $this->addTask('Patch word-replacement schema', 'wordReplacements_patch', $rev); - } - - /** - * @param $rev - * - * @return bool - */ - public function upgrade_4_4_4($rev) { - $fkConstraint = []; - if (!CRM_Core_DAO::checkFKConstraintInFormat('civicrm_activity_contact', 'activity_id')) { - $fkConstraint[] = "ADD CONSTRAINT `FK_civicrm_activity_contact_activity_id` FOREIGN KEY (`activity_id`) REFERENCES `civicrm_activity` (`id`) ON DELETE CASCADE"; - } - if (!CRM_Core_DAO::checkFKConstraintInFormat('civicrm_activity_contact', 'contact_id')) { - $fkConstraint[] = "ADD CONSTRAINT `FK_civicrm_activity_contact_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE CASCADE; -"; - } - - if (!empty($fkConstraint)) { - $fkConstraint = implode(',', $fkConstraint); - $sql = "ALTER TABLE `civicrm_activity_contact` -{$fkConstraint} -"; - // CRM-14036 : delete entries of un-mapped contacts - CRM_Core_DAO::executeQuery("DELETE ac FROM civicrm_activity_contact ac -LEFT JOIN civicrm_contact c -ON c.id = ac.contact_id -WHERE c.id IS NULL; -"); - // delete entries of un-mapped activities - CRM_Core_DAO::executeQuery("DELETE ac FROM civicrm_activity_contact ac -LEFT JOIN civicrm_activity a -ON a.id = ac.activity_id -WHERE a.id IS NULL; -"); - - CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS=0;"); - CRM_Core_DAO::executeQuery($sql); - CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS=1;"); - } - - // task to process sql - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.4.4']), 'runSql', $rev); - - // CRM-13892 : add `name` column to dashboard schema - $query = " -ALTER TABLE civicrm_dashboard - ADD name varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Internal name of dashlet.' AFTER domain_id "; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - - $dashboard = new CRM_Core_DAO_Dashboard(); - $dashboard->find(); - while ($dashboard->fetch()) { - $urlElements = explode('/', $dashboard->url); - if ($urlElements[1] == 'dashlet') { - $url = explode('&', $urlElements[2]); - $name = $url[0]; - } - elseif ($urlElements[1] == 'report') { - $url = explode('&', $urlElements[3]); - $name = 'report/' . $url[0]; - } - $values .= " - WHEN {$dashboard->id} THEN '{$name}' - "; - } - - $query = " - UPDATE civicrm_dashboard - SET name = CASE id - {$values} - END; - "; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - - // CRM-13998 : missing alter statements for civicrm_report_instance - $this->addTask(ts('Confirm civicrm_report_instance sql table for upgrades'), 'updateReportInstanceTable'); - - return TRUE; - } - - /** - * @param $rev - */ - public function upgrade_4_4_6($rev) { - $sql = "SELECT count(*) AS count FROM INFORMATION_SCHEMA.STATISTICS where " . - "TABLE_SCHEMA = database() AND INDEX_NAME = 'index_image_url' AND TABLE_NAME = 'civicrm_contact';"; - $dao = CRM_Core_DAO::executeQuery($sql); - $dao->fetch(); - if ($dao->count < 1) { - $sql = "CREATE INDEX index_image_url ON civicrm_contact (image_url);"; - $dao = CRM_Core_DAO::executeQuery($sql); - } - $minId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(min(id),0) FROM civicrm_contact WHERE image_URL IS NOT NULL'); - $maxId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(max(id),0) FROM civicrm_contact WHERE image_URL IS NOT NULL'); - for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { - $endId = $startId + self::BATCH_SIZE - 1; - $title = "Upgrade image_urls ($startId => $endId)"; - $this->addTask($title, 'upgradeImageUrls', $startId, $endId); - } - } - - /** - * Upgrade script for 4.4.7. - * - * @param string $rev - * @param string $originalVer - * @param string $latestVer - */ - public function upgrade_4_4_7($rev, $originalVer, $latestVer) { - // For WordPress/Joomla(?), cleanup broken image_URL from 4.4.6 upgrades - https://issues.civicrm.org/jira/browse/CRM-14971 - // URL formula from 4.4.6 upgrade - $exBackendUrl = CRM_Utils_System::url('civicrm/contact/imagefile', 'photo=XXX', TRUE); - $exFrontendUrl = CRM_Utils_System::url('civicrm/contact/imagefile', 'photo=XXX', TRUE, NULL, TRUE, TRUE); - if ($originalVer == '4.4.6' && $exBackendUrl != $exFrontendUrl) { - $minId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(min(id),0) FROM civicrm_contact WHERE image_URL IS NOT NULL'); - $maxId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(max(id),0) FROM civicrm_contact WHERE image_URL IS NOT NULL'); - for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { - $endId = $startId + self::BATCH_SIZE - 1; - $title = "Upgrade image_urls ($startId => $endId)"; - $this->addTask($title, 'cleanupBackendImageUrls', $startId, $endId); - } - } - $this->addTask(ts('Update saved search information'), 'changeSavedSearch'); - } - - /** - * Upgrade image URLs. - * - * @param \CRM_Queue_TaskContext $ctx - * @param $startId - * @param $endId - * - * @return bool - */ - public static function upgradeImageUrls(CRM_Queue_TaskContext $ctx, $startId, $endId) { - $dao = self::findContactImageUrls($startId, $endId); - $failures = []; - $config = CRM_Core_Config::singleton(); - while ($dao->fetch()) { - $imageURL = $dao->image_url; - $baseurl = CIVICRM_UF_BASEURL; - //CRM-15897 - gross hack for joomla to remove the administrator/ - if ($config->userFramework == 'Joomla') { - $baseurl = str_replace("/administrator/", "/", $baseurl); - } - $baselen = strlen($baseurl); - if (substr($imageURL, 0, $baselen) == $baseurl) { - $photo = basename($dao->image_url); - $fullpath = $config->customFileUploadDir . $photo; - if (file_exists($fullpath)) { - // For anyone who upgraded 4.4.6 release (eg 4.4.0=>4.4.6), the $newImageUrl incorrectly used backend URLs. - // For anyone who skipped 4.4.6 (eg 4.4.0=>4.4.7), the $newImageUrl correctly uses frontend URLs - self::setContactImageUrl($dao->id, - CRM_Utils_System::url('civicrm/contact/imagefile', 'photo=' . $photo, TRUE, NULL, TRUE, TRUE)); - } - else { - $failures[$dao->id] = $dao->image_url; - } - } - else { - $failures[$dao->id] = $dao->image_url; - } - } - CRM_Core_Error::debug_var('imageUrlsNotUpgraded', $failures); - return TRUE; - } - - /** - * Change saved search. - * - * @param \CRM_Queue_TaskContext $ctx - * - * @return bool - */ - public static function changeSavedSearch(CRM_Queue_TaskContext $ctx) { - $membershipStatuses = array_flip(CRM_Member_PseudoConstant::membershipStatus()); - - $dao = new CRM_Contact_DAO_SavedSearch(); - $dao->find(); - while ($dao->fetch()) { - $formValues = NULL; - if (!empty($dao->form_values)) { - $formValues = unserialize($dao->form_values); - } - if (!empty($formValues['mapper'])) { - foreach ($formValues['mapper'] as $key => $value) { - foreach ($value as $k => $v) { - if ($v[0] == 'Membership' && in_array($v[1], ['membership_status', 'membership_status_id'])) { - $value = $formValues['value'][$key][$k]; - $op = $formValues['operator'][$key][$k]; - if ($op == 'IN') { - $value = trim($value); - $value = str_replace('(', '', $value); - $value = str_replace(')', '', $value); - - $v = explode(',', $value); - $value = []; - foreach ($v as $k1 => $v2) { - if (is_numeric($v2)) { - break 2; - } - $value[$k1] = $membershipStatuses[$v2]; - } - $formValues['value'][$key][$k] = "(" . implode(',', $value) . ")"; - } - elseif (in_array($op, ['=', '!='])) { - if (is_numeric($value)) { - break; - } - $formValues['value'][$key][$k] = $membershipStatuses[$value]; - } - } - } - } - $dao->form_values = serialize($formValues); - $dao->save(); - } - } - - return TRUE; - } - - /** - * For WordPress/Joomla(?) sites which upgraded to 4.4.6, find back-end image_URLs - * (e.g. "http://example.com/wp-admin/admin.php?page=CiviCRM&q=civicrm/contact/imagefile&photo=123.jpg") - * and convert them to front-end URLs - * (e.g. "http://example.com/?page=CiviCRM&q=civicrm/contact/imagefile&photo=123.jpg"). - * - * @param CRM_Queue_TaskContext $ctx - * @param int $startId - * @param int $endId - * @return bool - */ - public static function cleanupBackendImageUrls(CRM_Queue_TaskContext $ctx, $startId, $endId) { - $dao = self::findContactImageUrls($startId, $endId); - while ($dao->fetch()) { - $imageUrl = str_replace('&', '&', $dao->image_url); - if (preg_match(":civicrm/contact/imagefile.*photo=:", $imageUrl)) { - // looks like one of ours - $imageUrlParts = parse_url($imageUrl); - parse_str($imageUrlParts['query'], $imageUrlQuery); - self::setContactImageUrl($dao->id, - CRM_Utils_System::url('civicrm/contact/imagefile', 'photo=' . $imageUrlQuery['photo'], TRUE, NULL, TRUE, TRUE)); - } - } - return TRUE; - } - - /** - * @param int $startId - * @param int $endId - * @return CRM_Core_DAO - * columns include "id" and "image_URL" - */ - public static function findContactImageUrls($startId, $endId) { - $sql = " -SELECT id, image_url -FROM civicrm_contact -WHERE 1 -AND id BETWEEN %1 AND %2 -AND image_URL IS NOT NULL -"; - - $params = [ - 1 => [$startId, 'Integer'], - 2 => [$endId, 'Integer'], - ]; - $dao = CRM_Core_DAO::executeQuery($sql, $params, TRUE, NULL, FALSE, FALSE); - return $dao; - } - - /** - * @param int $cid - * @param string $newImageUrl - */ - public static function setContactImageUrl($cid, $newImageUrl) { - $sql = 'UPDATE civicrm_contact SET image_url=%1 WHERE id=%2'; - $params = [ - 1 => [$newImageUrl, 'String'], - 2 => [$cid, 'Integer'], - ]; - $updatedao = CRM_Core_DAO::executeQuery($sql, $params); - } - - /** - * Update activity contacts CRM-12274 - * - * @param CRM_Queue_TaskContext $ctx - * - * @return bool - * TRUE for success - */ - public static function activityContacts(CRM_Queue_TaskContext $ctx) { - $upgrade = new CRM_Upgrade_Form(); - - $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); - $ovValue[] = $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); - $ovValue[] = $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); - $ovValue[] = $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); - - $optionGroupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'activity_contacts', 'id', 'name'); - if (!empty($ovValue)) { - $ovValues = implode(', ', $ovValue); - $query = " -UPDATE civicrm_option_value -SET is_reserved = 1 -WHERE option_group_id = {$optionGroupID} AND value IN ($ovValues)"; - - $dao = CRM_Core_DAO::executeQuery($query); - } - - if (!$assigneeID) { - $assigneeID = 1; - $value[] = "({$optionGroupID}, 'Activity Assignees', 1, 'Activity Assignees', 1, 1, 1)"; - } - if (!$sourceID) { - $sourceID = 2; - $value[] = "({$optionGroupID}, 'Activity Source', 2, 'Activity Source', 2, 1, 1)"; - } - if (!$targetID) { - $targetID = 3; - $value[] = "({$optionGroupID}, 'Activity Targets', 3, 'Activity Targets', 3, 1, 1)"; - } - - if (!$assigneeID || !$sourceID || !$targetID) { - $insert = " -INSERT INTO civicrm_option_value -(option_group_id, label, value, name, weight, is_reserved, is_active) -VALUES - -"; - $values = implode(', ', $value); - $query = $insert . $values; - $dao = CRM_Core_DAO::executeQuery($query); - } - - // sometimes an user does not make a clean backup and the above table - // already exists, so lets delete this table - CRM-13665 - $query = "DROP TABLE IF EXISTS civicrm_activity_contact"; - $dao = CRM_Core_DAO::executeQuery($query); - - $query = " -CREATE TABLE IF NOT EXISTS civicrm_activity_contact ( - id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Activity contact id', - activity_id int(10) unsigned NOT NULL COMMENT 'Foreign key to the activity for this record.', - contact_id int(10) unsigned NOT NULL COMMENT 'Foreign key to the contact for this record.', - record_type_id int(10) unsigned DEFAULT NULL COMMENT 'The record type id for this row', - PRIMARY KEY (id), - UNIQUE KEY UI_activity_contact (contact_id,activity_id,record_type_id), - KEY FK_civicrm_activity_contact_activity_id (activity_id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -"; - - $dao = CRM_Core_DAO::executeQuery($query); - - $query = " -INSERT INTO civicrm_activity_contact (activity_id, contact_id, record_type_id) -SELECT activity_id, target_contact_id, {$targetID} as record_type_id -FROM civicrm_activity_target"; - - $dao = CRM_Core_DAO::executeQuery($query); - - $query = " -INSERT INTO civicrm_activity_contact (activity_id, contact_id, record_type_id) -SELECT activity_id, assignee_contact_id, {$assigneeID} as record_type_id -FROM civicrm_activity_assignment"; - $dao = CRM_Core_DAO::executeQuery($query); - - $query = " - INSERT INTO civicrm_activity_contact (activity_id, contact_id, record_type_id) -SELECT id, source_contact_id, {$sourceID} as record_type_id -FROM civicrm_activity -WHERE source_contact_id IS NOT NULL"; - - $dao = CRM_Core_DAO::executeQuery($query); - - $query = "DROP TABLE civicrm_activity_target"; - $dao = CRM_Core_DAO::executeQuery($query); - - $query = "DROP TABLE civicrm_activity_assignment"; - $dao = CRM_Core_DAO::executeQuery($query); - - $query = "ALTER TABLE civicrm_activity - DROP FOREIGN KEY FK_civicrm_activity_source_contact_id"; - - $dao = CRM_Core_DAO::executeQuery($query); - - $query = "ALTER TABLE civicrm_activity DROP COLUMN source_contact_id"; - $dao = CRM_Core_DAO::executeQuery($query); - - return TRUE; - } - - /** - * Migrate word-replacements from $config to civicrm_word_replacement - * - * @param CRM_Queue_TaskContext $ctx - * - * @return bool - * TRUE for success - * @see http://issues.civicrm.org/jira/browse/CRM-13187 - */ - public static function wordReplacements(CRM_Queue_TaskContext $ctx) { - $query = " -CREATE TABLE IF NOT EXISTS `civicrm_word_replacement` ( - `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Word replacement ID', - `find_word` varchar(255) COLLATE utf8_bin COMMENT 'Word which need to be replaced', - `replace_word` varchar(255) COLLATE utf8_bin COMMENT 'Word which will replace the word in find', - `is_active` tinyint COMMENT 'Is this entry active?', - `match_type` enum('wildcardMatch', 'exactMatch') DEFAULT 'wildcardMatch', - `domain_id` int unsigned COMMENT 'FK to Domain ID. This is for Domain specific word replacement', - PRIMARY KEY ( `id` ), - UNIQUE INDEX `UI_domain_find` (domain_id, find_word), - CONSTRAINT FK_civicrm_word_replacement_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) -) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ; - "; - $dao = CRM_Core_DAO::executeQuery($query); - - self::rebuildWordReplacementTable(); - return TRUE; - } - - /** - * Fix misconfigured constraints created in 4.4.0. To distinguish the good - * and bad configurations, we change the constraint name from "UI_find" - * (the original name in 4.4.0) to "UI_domain_find" (the new name in - * 4.4.1). - * - * @param CRM_Queue_TaskContext $ctx - * @param $rev - * - * @return bool - * TRUE for success - * @see http://issues.civicrm.org/jira/browse/CRM-13655 - */ - public static function wordReplacements_patch(CRM_Queue_TaskContext $ctx, $rev) { - if (CRM_Core_DAO::checkConstraintExists('civicrm_word_replacement', 'UI_find')) { - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement DROP FOREIGN KEY FK_civicrm_word_replacement_domain_id;"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement DROP KEY FK_civicrm_word_replacement_domain_id;"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement DROP KEY UI_find;"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement MODIFY COLUMN `find_word` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'Word which need to be replaced';"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement MODIFY COLUMN `replace_word` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'Word which will replace the word in find';"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement ADD CONSTRAINT UI_domain_find UNIQUE KEY `UI_domain_find` (`domain_id`,`find_word`);"); - CRM_Core_DAO::executeQuery("ALTER TABLE civicrm_word_replacement ADD CONSTRAINT FK_civicrm_word_replacement_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain` (`id`);"); - } - return TRUE; - } - - /** - * Get all the word-replacements stored in config-arrays - * and convert them to params for the WordReplacement.create API. - * - * Note: This function is duplicated in CRM_Core_BAO_WordReplacement and - * CRM_Upgrade_Incremental_php_FourFour to ensure that the incremental upgrade - * step behaves consistently even as the BAO evolves in future versions. - * However, if there's a bug in here prior to 4.4.0, we should apply the - * bugfix in both places. - * - * @param bool $rebuildEach - * Whether to perform rebuild after each individual API call. - * @return array - * Each item is $params for WordReplacement.create - * @see CRM_Core_BAO_WordReplacement::convertConfigArraysToAPIParams - */ - public static function getConfigArraysAsAPIParams($rebuildEach) { - $wordReplacementCreateParams = []; - // get all domains - $result = civicrm_api3('domain', 'get', [ - 'return' => ['locale_custom_strings'], - ]); - if (!empty($result["values"])) { - foreach ($result["values"] as $value) { - $params = []; - $params["domain_id"] = $value["id"]; - $params["options"] = ['wp-rebuild' => $rebuildEach]; - // unserialize word match string - $localeCustomArray = []; - if (!empty($value["locale_custom_strings"])) { - $localeCustomArray = unserialize($value["locale_custom_strings"]); - } - if (!empty($localeCustomArray)) { - $wordMatchArray = []; - // Traverse Language array - foreach ($localeCustomArray as $localCustomData) { - // Traverse status array "enabled" "disabled" - foreach ($localCustomData as $status => $matchTypes) { - $params["is_active"] = $status == "enabled"; - // Traverse Match Type array "wildcardMatch" "exactMatch" - foreach ($matchTypes as $matchType => $words) { - $params["match_type"] = $matchType; - foreach ($words as $word => $replace) { - $params["find_word"] = $word; - $params["replace_word"] = $replace; - $wordReplacementCreateParams[] = $params; - } - } - } - } - } - } - } - return $wordReplacementCreateParams; - } - - /** - * Get all the word-replacements stored in config-arrays - * and write them out as records in civicrm_word_replacement. - * - * Note: This function is duplicated in CRM_Core_BAO_WordReplacement and - * CRM_Upgrade_Incremental_php_FourFour to ensure that the incremental upgrade - * step behaves consistently even as the BAO evolves in future versions. - * However, if there's a bug in here prior to 4.4.0, we should apply the - * bugfix in both places. - */ - public static function rebuildWordReplacementTable() { - civicrm_api3('word_replacement', 'replace', [ - 'options' => ['match' => ['domain_id', 'find_word']], - 'values' => array_filter(self::getConfigArraysAsAPIParams(FALSE), [__CLASS__, 'isValidWordReplacement']), - ]); - CRM_Core_BAO_WordReplacement::rebuild(); - } - - /** - * CRM-13998 missing alter statements for civicrm_report_instance - */ - public function updateReportInstanceTable() { - - // add civicrm_report_instance.name - - $sql = "SELECT count(*) FROM information_schema.columns " - . "WHERE table_schema = database() AND table_name = 'civicrm_report_instance' AND COLUMN_NAME = 'name' "; - - $res = CRM_Core_DAO::singleValueQuery($sql); - - if ($res <= 0) { - $sql = "ALTER TABLE civicrm_report_instance ADD `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'when combined with report_id/template uniquely identifies the instance'"; - $res = CRM_Core_DAO::executeQuery($sql); - } - - // add civicrm_report_instance args - - $sql = "SELECT count(*) FROM information_schema.columns WHERE table_schema = database() AND table_name = 'civicrm_report_instance' AND COLUMN_NAME = 'args' "; - - $res = CRM_Core_DAO::singleValueQuery($sql); - - if ($res <= 0) { - $sql = "ALTER TABLE civicrm_report_instance ADD `args` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'arguments that are passed in the url when invoking the instance'"; - - $res = CRM_Core_DAO::executeQuery($sql); - } - - return TRUE; - } - - /** - * @param array $params - * @return bool - * TRUE if $params is valid - */ - public static function isValidWordReplacement($params) { - $result = strlen($params['find_word']) <= self::MAX_WORD_REPLACEMENT_SIZE && strlen($params['replace_word']) <= self::MAX_WORD_REPLACEMENT_SIZE; - if (!$result) { - CRM_Core_Error::debug_var('invalidWordReplacement', $params); - } - return $result; - } - -} diff --git a/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php b/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php index 28267eebac..74f190a0f2 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php @@ -515,7 +515,7 @@ class CRM_Upgrade_Incremental_php_FourSeven extends CRM_Upgrade_Incremental_Base // } /** - * CRM-16354 + * @see https://issues.civicrm.org/jira/browse/CRM-16354 * * @return int */ @@ -1249,7 +1249,7 @@ FROM `civicrm_dashboard_contact` JOIN `civicrm_contact` WHERE civicrm_dashboard_ } /** - * CRM-19961 + * @see https://issues.civicrm.org/jira/browse/CRM-19961 * Poputate newly added domain id column and add foriegn key onto table. */ public static function populateSMSProviderDomainId() { diff --git a/civicrm/CRM/Upgrade/Incremental/php/FourThree.php b/civicrm/CRM/Upgrade/Incremental/php/FourThree.php deleted file mode 100644 index 4d603e8297..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/php/FourThree.php +++ /dev/null @@ -1,1302 +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 | - +--------------------------------------------------------------------+ - */ - -/** - * Upgrade logic for 4.3 - */ -class CRM_Upgrade_Incremental_php_FourThree extends CRM_Upgrade_Incremental_Base { - - /** - * Compute any messages which should be displayed beforeupgrade. - * - * Note: This function is called iteratively for each upcoming - * revision to the database. - * - * @param string $preUpgradeMessage - * @param string $rev - * a version number, e.g. '4.3.alpha1', '4.3.beta3', '4.3.0'. - * @param null $currentVer - * - * @return bool - */ - public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { - if ($rev == '4.3.beta3') { - //CRM-12084 - //sql for checking orphaned contribution records - $sql = "SELECT COUNT(ct.id) FROM civicrm_contribution ct LEFT JOIN civicrm_contact c ON ct.contact_id = c.id WHERE c.id IS NULL"; - $count = CRM_Core_DAO::singleValueQuery($sql, [], TRUE, FALSE); - - if ($count > 0) { - $error = ts("There is a data integrity issue with this CiviCRM database. It contains %1 contribution records which are linked to contact records that have been deleted. You will need to correct this manually before you can run the upgrade. Use the following MySQL query to identify the problem records: %2 These records will need to be deleted or linked to an existing contact record.", [ - 1 => $count, - 2 => '<em>SELECT ct.* FROM civicrm_contribution ct LEFT JOIN civicrm_contact c ON ct.contact_id = c.id WHERE c.id IS NULL;</em>', - ]); - throw new CRM_Core_Exception($error); - return FALSE; - } - } - if ($rev == '4.3.beta4' && CRM_Utils_Constant::value('CIVICRM_UF', FALSE) == 'Drupal6') { - // CRM-11823 - Make sure the D6 HTML HEAD technique will work on - // upgrade pages ... except when we're in Drush. - if (!function_exists('drush_main')) { - // force-load theme registry - theme('item_list', []); - $theme_registry = theme_get_registry(); - if (!isset($theme_registry['page']['preprocess functions']) || FALSE === array_search('civicrm_preprocess_page_inject', $theme_registry['page']['preprocess functions'])) { - throw new CRM_Core_Exception('Please reset the Drupal cache (Administer => Site Configuration => Performance => Clear cached data))'); - } - } - } - - if ($rev == '4.3.6') { - $constraintArray = [ - 'civicrm_contact' => 'contact_id', - 'civicrm_payment_processor' => 'payment_processor_id', - ]; - - if (version_compare('4.1alpha1', $currentVer) <= 0) { - $constraintArray['civicrm_campaign'] = 'campaign_id'; - } - - if (version_compare('4.3alpha1', $currentVer) <= 0) { - $constraintArray['civicrm_financial_type'] = 'financial_type_id'; - } - - foreach ($constraintArray as $key => $value) { - $query = "SELECT contri_recur.id FROM civicrm_contribution_recur contri_recur LEFT JOIN {$key} ON contri_recur.{$value} = {$key}.id -WHERE {$key}.id IS NULL"; - if ($value != 'contact_id') { - $query .= " AND contri_recur.{$value} IS NOT NULL "; - } - $dao = CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - if ($dao->N) { - $invalidDataMessage = '<strong>Oops, it looks like you have orphaned recurring contribution records in your database. Before this upgrade can complete they will need to be fixed or deleted. <a href="http://wiki.civicrm.org/confluence/display/CRMDOC/Fixing+Orphaned+Contribution+Recur+Records" target="_blank">You can review steps to correct this situation on the documentation wiki.</a></strong>'; - throw new CRM_Core_Exception($invalidDataMessage); - return FALSE; - } - } - } - } - - /** - * Compute any messages which should be displayed after upgrade. - * - * @param string $postUpgradeMessage - * alterable. - * @param string $rev - * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. - * @return void - */ - public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { - if ($rev == '4.3.alpha1') { - // check if CiviMember component is enabled - $config = CRM_Core_Config::singleton(); - if (in_array('CiviMember', $config->enableComponents)) { - $postUpgradeMessage .= '<br />' . ts('Membership renewal reminders must now be configured using the Schedule Reminders feature, which supports multiple renewal reminders (Administer > Communications > Schedule Reminders). The Update Membership Statuses scheduled job will no longer send membershp renewal reminders. You can use your existing renewal reminder message template(s) with the Schedule Reminders feature.'); - $postUpgradeMessage .= '<br />' . ts('The Set Membership Reminder Dates scheduled job has been deleted since membership reminder dates stored in the membership table are no longer in use.'); - } - - //CRM-11636 - //here we do the financial type check and migration - $isDefaultsModified = self::_checkAndMigrateDefaultFinancialTypes(); - if ($isDefaultsModified) { - $postUpgradeMessage .= '<br />' . ts('Please review all price set financial type assignments.'); - } - list($context, $orgName) = self::createDomainContacts(); - if ($context == 'added') { - $postUpgradeMessage .= '<br />' . ts("A new organization contact has been added as the default domain contact using the information from your Organization Address and Contact Info settings: '%1'.", [1 => $orgName]); - } - elseif ($context == 'merged') { - $postUpgradeMessage .= '<br />' . ts("The existing organization contact record for '%1' has been marked as the default domain contact, and has been updated with information from your Organization Address and Contact Info settings.", [1 => $orgName]); - } - - $providerExists = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_sms_provider LIMIT 1"); - if ($providerExists) { - $postUpgradeMessage .= '<br />' . ts('SMS providers were found to setup. Please note Clickatell / Twilio are now shipped as extensions and will require installing them to continue working. Extension could be downloaded and installed from <a href="%1">github</a>.', [1 => 'https://github.com/civicrm/civicrm-core/tree/master/tools/extensions']); - } - } - - if ($rev == '4.3.alpha2') { - $sql = " -SELECT title, id -FROM civicrm_action_schedule -WHERE entity_value = '' OR entity_value IS NULL -"; - - $dao = CRM_Core_DAO::executeQuery($sql); - $reminder = []; - $list = ''; - while ($dao->fetch()) { - $reminder[$dao->id] = $dao->title; - $list .= "<li>{$dao->title}</li>"; - } - if (!empty($reminder)) { - $list = "<br /><ul>" . $list . "</ul>"; - $postUpgradeMessage .= '<br />' . ts("Scheduled Reminders must be linked to one or more 'entities' (Events, Event Templates, Activity Types, Membership Types). The following reminders are not configured properly and will not be run. Please review them and update or delete them: %1", [1 => $list]); - } - } - if ($rev == '4.3.beta2') { - $postUpgradeMessage .= '<br />' . ts('Default versions of the following System Workflow Message Templates have been modified to handle new functionality: <ul><li>Events - Registration Confirmation and Receipt (on-line)</li><li>Events - Registration Confirmation and Receipt (off-line)</li><li>Pledges - Acknowledgement</li><li>Pledges - Payment Reminder</li><li>Contributions - Receipt (off-line)</li><li>Contributions - Receipt (on-line)</li><li>Memberships - Signup and Renewal Receipts (off-line)</li><li>Memberships - Receipt (on-line)</li><li>Personal Campaign Pages - Admin Notification</li></ul> If you have modified these templates, please review the new default versions and implement updates as needed to your copies (Administer > Communications > Message Templates > System Workflow Messages).'); - } - - if ($rev == '4.3.beta5') { - $postUpgradeMessage .= '<br />' . ts("If you are interested in trying out the new Accounting Integration features, please review user permissions and assign the new 'manual batch' permissions as appropriate."); - - // CRM-12155 - $query = " -SELECT ceft.id FROM `civicrm_financial_trxn` cft -LEFT JOIN civicrm_entity_financial_trxn ceft - ON ceft.financial_trxn_id = cft.id AND ceft.entity_table = 'civicrm_contribution' -LEFT JOIN civicrm_contribution cc - ON cc.id = ceft.entity_id AND ceft.entity_table = 'civicrm_contribution' -WHERE cc.id IS NULL -"; - - $dao = CRM_Core_DAO::executeQuery($query); - $isOrphanData = TRUE; - if (!$dao->N) { - $query = " -SELECT cli.id FROM civicrm_line_item cli -LEFT JOIN civicrm_contribution cc ON cli.entity_id = cc.id AND cli.entity_table = 'civicrm_contribution' -LEFT JOIN civicrm_participant cp ON cli.entity_id = cp.id AND cli.entity_table = 'civicrm_participant' -WHERE CASE WHEN cli.entity_table = 'civicrm_contribution' - THEN cc.id IS NULL - ELSE cp.id IS NULL -END -"; - $dao = CRM_Core_DAO::executeQuery($query); - if (!$dao->N) { - $revPattern = '/^((\d{1,2})\.\d{1,2})\.(\d{1,2}|\w{4,7})?$/i'; - preg_match($revPattern, $currentVer, $version); - if ($version[1] >= 4.3) { - $query = " -SELECT cfi.id -FROM civicrm_financial_item cfi -LEFT JOIN civicrm_entity_financial_trxn ceft ON ceft.entity_table = 'civicrm_financial_item' and cfi.id = ceft.entity_id -WHERE ceft.entity_id IS NULL; -"; - $dao = CRM_Core_DAO::executeQuery($query); - if (!$dao->N) { - $isOrphanData = FALSE; - } - } - else { - $isOrphanData = FALSE; - } - } - } - - if ($isOrphanData) { - $postUpgradeMessage .= "</br> <strong>" . ts('Your database contains extraneous financial records related to deleted contacts and contributions. These records should not affect the site and will not appear in reports, search results or exports. However you may wish to clean them up. Refer to <a href="%1" target="_blank">this wiki page for details</a>. - ', [1 => 'http://wiki.civicrm.org/confluence/display/CRMDOC/Clean+up+extraneous+financial+data+-+4.3+upgrades']) . "</strong>"; - } - } - if ($rev == '4.3.4') { - $postUpgradeMessage .= '<br />' . ts('System Administrator Alert: If you are running scheduled jobs using CLI.php, you will need to reconfigure cron tasks to include a password. Scheduled jobs will no longer run if the password is not provided (<a href="%1" target="_blank">learn more</a>).', - [1 => 'http://wiki.civicrm.org/confluence/display/CRMDOC/Managing+Scheduled+Jobs']); - } - if ($rev == '4.3.5') { - $postUpgradeMessage .= '<br />' . ts('Default versions of the following System Workflow Message Templates have been modified to handle new functionality: <ul><li>Events - Registration Confirmation and Receipt (on-line)</li><li>Events - Registration Confirmation and Receipt (off-line)</li></ul> If you have modified these templates, please review the new default versions and implement updates as needed to your copies (Administer > Communications > Message Templates > System Workflow Messages).'); - } - if ($rev == '4.3.6') { - $flag = CRM_Core_DAO::singleValueQuery('SELECT count(ccp.id) FROM civicrm_contribution_product ccp -INNER JOIN civicrm_product cp ON ccp.product_id = cp.id -WHERE ccp.financial_type_id IS NULL and cp.cost > 0'); - if ($flag) { - $postUpgradeMessage .= '<br />' . ts('Your database contains one or more premiums which have a cost but are not linked to a financial type. If you are exporting transations to an accounting package, this will result in unbalanced transactions. <a href="%1" target="_blank">You can review steps to correct this situation on the wiki.</a>', - [1 => 'http://wiki.civicrm.org/confluence/display/CRMDOC/Fixing+Issues+Caused+by+Missing+Cost+of+Goods+Account+-+4.3+Upgrades']); - } - } - } - - /** - * @param $rev - * - * @return bool - */ - public function upgrade_4_3_alpha1($rev) { - self::task_4_3_alpha1_checkDBConstraints(); - - // add indexes for civicrm_entity_financial_trxn - // CRM-12141 - $this->addTask('Check/Add indexes for civicrm_entity_financial_trxn', 'task_4_3_x_checkIndexes', $rev); - // task to process sql - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.alpha1']), 'runSql', $rev); - - //CRM-11636 - $this->addTask('Populate financial type values for price records', 'assignFinancialTypeToPriceRecords'); - //CRM-11514 create financial records for contributions - $this->addTask('Create financial records for contributions', 'createFinancialRecords'); - - $minId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(min(id),0) FROM civicrm_contact'); - $maxId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(max(id),0) FROM civicrm_contact'); - for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { - $endId = $startId + self::BATCH_SIZE - 1; - $title = "Upgrade timestamps ($startId => $endId)"; - $this->addTask($title, 'convertTimestamps', $startId, $endId); - } - - // CRM-10893 - // fix WP access control - $config = CRM_Core_Config::singleton(); - if ($config->userFramework == 'WordPress') { - civicrm_wp_set_capabilities(); - } - - // Update phones CRM-11292. - $this->addTask('Upgrade Phone Numbers', 'phoneNumeric'); - - return TRUE; - } - - /** - * @param $rev - */ - public function upgrade_4_3_alpha2($rev) { - //CRM-11847 - $isColumnPresent = CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_dedupe_rule_group', 'is_default'); - if ($isColumnPresent) { - CRM_Core_DAO::executeQuery('ALTER TABLE civicrm_dedupe_rule_group DROP COLUMN is_default'); - } - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.alpha2']), 'runSql', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_alpha3($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.alpha3']), 'runSql', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_beta2($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.beta2']), 'runSql', $rev); - - // CRM-12002 - if ( - CRM_Core_DAO::checkTableExists('log_civicrm_line_item') && - CRM_Core_BAO_SchemaHandler::checkIfFieldExists('log_civicrm_line_item', 'label') - ) { - CRM_Core_DAO::executeQuery('ALTER TABLE `log_civicrm_line_item` CHANGE `label` `label` VARCHAR(255) NULL DEFAULT NULL'); - } - } - - /** - * @param $rev - */ - public function upgrade_4_3_beta3($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.beta3']), 'runSql', $rev); - // CRM-12065 - $query = "SELECT id, form_values FROM civicrm_report_instance WHERE form_values LIKE '%contribution_type%'"; - $this->addTask('Replace contribution_type to financial_type in table civicrm_report_instance', 'replaceContributionTypeId', $query, 'reportInstance'); - $query = "SELECT * FROM civicrm_saved_search WHERE form_values LIKE '%contribution_type%'"; - $this->addTask('Replace contribution_type to financial_type in table civicrm_saved_search', 'replaceContributionTypeId', $query, 'savedSearch'); - } - - /** - * @param $rev - */ - public function upgrade_4_3_beta4($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.beta4']), 'runSql', $rev); - // add indexes for civicrm_entity_financial_trxn - // CRM-12141 - $this->addTask('Check/Add indexes for civicrm_entity_financial_trxn', 'task_4_3_x_checkIndexes', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_beta5($rev) { - // CRM-12205 - if ( - CRM_Core_DAO::checkTableExists('log_civicrm_financial_trxn') && - CRM_Core_BAO_SchemaHandler::checkIfFieldExists('log_civicrm_financial_trxn', 'trxn_id') - ) { - CRM_Core_DAO::executeQuery('ALTER TABLE `log_civicrm_financial_trxn` CHANGE `trxn_id` `trxn_id` VARCHAR(255) NULL DEFAULT NULL'); - } - // CRM-12142 - some sites didn't get this column added yet, and sites which installed 4.3 from scratch will already have it - // CRM-12367 - add this column to single lingual sites only - $upgrade = new CRM_Upgrade_Form(); - if (!$upgrade->multilingual && - !CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_premiums', 'premiums_nothankyou_label') - ) { - $query = " -ALTER TABLE civicrm_premiums -ADD COLUMN premiums_nothankyou_label varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL - COMMENT 'Label displayed for No Thank-you option in premiums block (e.g. No thank you)' -"; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - } - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.beta5']), 'runSql', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_4($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.4']), 'runSql', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_5($rev) { - // CRM-12156 - $config = CRM_Core_Config::singleton(); - $dbname = DB::parseDSN($config->dsn); - $sql = "SELECT DELETE_RULE -FROM information_schema.REFERENTIAL_CONSTRAINTS -WHERE CONSTRAINT_NAME = 'FK_civicrm_financial_item_contact_id' -AND CONSTRAINT_SCHEMA = %1"; - $params = [1 => [$dbname['database'], 'String']]; - $onDelete = CRM_Core_DAO::singleValueQuery($sql, $params, TRUE, FALSE); - - if ($onDelete != 'CASCADE') { - $query = "ALTER TABLE `civicrm_financial_item` -DROP FOREIGN KEY FK_civicrm_financial_item_contact_id, -DROP INDEX FK_civicrm_financial_item_contact_id;"; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - $query = " -ALTER TABLE `civicrm_financial_item` -ADD CONSTRAINT `FK_civicrm_financial_item_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE CASCADE; -"; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - } - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.5']), 'runSql', $rev); - } - - /** - * @param $rev - */ - public function upgrade_4_3_6($rev) { - //CRM-13094 - $this->addTask(ts('Add missing constraints'), 'addMissingConstraints', $rev); - //CRM-13088 - $this->addTask('Add ON DELETE Options for constraints', 'task_4_3_x_checkConstraints', $rev); - $this->addTask(ts('Upgrade DB to %1: SQL', [1 => '4.3.6']), 'runSql', $rev); - // CRM-12844 - // update line_item, financial_trxn and financial_item table for recurring contributions - $this->addTask('Update financial_account_id in financial_trxn table', 'updateFinancialTrxnData', $rev); - $this->addTask('Update Line Item Data', 'updateLineItemData', $rev); - } - - /** - * CRM-11636 - * @return bool - */ - public function assignFinancialTypeToPriceRecords() { - $upgrade = new CRM_Upgrade_Form(); - //here we update price set entries - $sqlFinancialIds = " -SELECT id, LCASE(name) name -FROM civicrm_financial_type -WHERE name IN ('Donation', 'Event Fee', 'Member Dues'); -"; - $daoFinancialIds = CRM_Core_DAO::executeQuery($sqlFinancialIds); - while ($daoFinancialIds->fetch()) { - $financialIds[$daoFinancialIds->name] = $daoFinancialIds->id; - } - $sqlPriceSetUpdate = " -UPDATE civicrm_price_set ps -SET ps.financial_type_id = - CASE - WHEN ps.extends LIKE '%1%' THEN {$financialIds['event fee']} - WHEN ps.extends LIKE '2' THEN {$financialIds['donation']} - WHEN ps.extends LIKE '3' THEN {$financialIds['member dues']} - END -WHERE financial_type_id IS NULL -"; - CRM_Core_DAO::executeQuery($sqlPriceSetUpdate); - - //here we update price field value rows - $sqlPriceFieldValueUpdate = " -UPDATE civicrm_price_field_value pfv -LEFT JOIN civicrm_membership_type mt ON (pfv.membership_type_id = mt.id) -INNER JOIN civicrm_price_field pf ON (pfv.price_field_id = pf.id) -INNER JOIN civicrm_price_set ps ON (pf.price_set_id = ps.id) - SET pfv.financial_type_id = - CASE - WHEN pfv.membership_type_id IS NOT NULL THEN mt.financial_type_id - WHEN pfv.membership_type_id IS NULL THEN ps.financial_type_id - END -"; - CRM_Core_DAO::executeQuery($sqlPriceFieldValueUpdate); - - return TRUE; - } - - /** - * @return bool - */ - public static function _checkAndMigrateDefaultFinancialTypes() { - $modifiedDefaults = FALSE; - //insert types if not exists - $sqlFetchTypes = " -SELECT id, name -FROM civicrm_contribution_type -WHERE name IN ('Donation', 'Event Fee', 'Member Dues') AND is_active =1 -"; - $daoFetchTypes = CRM_Core_DAO::executeQuery($sqlFetchTypes); - - if ($daoFetchTypes->N < 3) { - $modifiedDefaults = TRUE; - $insertStatments = [ - 'Donation' => "('Donation', 0, 1, 1)", - 'Member' => "('Member Dues', 0, 1, 1)", - 'Event Fee' => "('Event Fee', 0, 1, 0)", - ]; - foreach ($insertStatments as $values) { - $query = " -INSERT INTO civicrm_contribution_type (name, is_reserved, is_active, is_deductible) -VALUES $values -ON DUPLICATE KEY UPDATE is_active = 1 -"; - CRM_Core_DAO::executeQuery($query); - } - } - return $modifiedDefaults; - } - - /** - * @return bool - */ - public function createFinancialRecords() { - $upgrade = new CRM_Upgrade_Form(); - - // update civicrm_entity_financial_trxn.amount = civicrm_financial_trxn.total_amount - $query = " -UPDATE civicrm_entity_financial_trxn ceft -LEFT JOIN civicrm_financial_trxn cft ON cft.id = ceft.financial_trxn_id -SET ceft.amount = total_amount -WHERE cft.net_amount IS NOT NULL -AND ceft.entity_table = 'civicrm_contribution' -"; - CRM_Core_DAO::executeQuery($query); - - $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - $completedStatus = array_search('Completed', $contributionStatus); - $pendingStatus = array_search('Pending', $contributionStatus); - $cancelledStatus = array_search('Cancelled', $contributionStatus); - $queryParams = [ - 1 => [$completedStatus, 'Integer'], - 2 => [$pendingStatus, 'Integer'], - 3 => [$cancelledStatus, 'Integer'], - ]; - - $accountType = key(CRM_Core_PseudoConstant::accountOptionValues('financial_account_type', NULL, " AND v.name = 'Asset' ")); - $query = " -SELECT id -FROM civicrm_financial_account -WHERE is_default = 1 -AND financial_account_type_id = {$accountType} -"; - $financialAccountId = CRM_Core_DAO::singleValueQuery($query); - - $accountRelationsips = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', - 'account_relationship', CRM_Core_DAO::$_nullArray, 'validate'); - - $accountsReceivableAccount = array_search('Accounts Receivable Account is', $accountRelationsips); - $incomeAccountIs = array_search('Income Account is', $accountRelationsips); - $assetAccountIs = array_search('Asset Account is', $accountRelationsips); - $expenseAccountIs = array_search('Expense Account is', $accountRelationsips); - - $financialItemStatus = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_FinancialItem', 'status_id', - CRM_Core_DAO::$_nullArray, 'validate'); - $unpaidStatus = array_search('Unpaid', $financialItemStatus); - $paidStatus = array_search('Paid', $financialItemStatus); - - $validCurrencyCodes = CRM_Core_PseudoConstant::currencyCode(); - $validCurrencyCodes = implode("','", $validCurrencyCodes); - $config = CRM_Core_Config::singleton(); - $defaultCurrency = $config->defaultCurrency; - $now = date('YmdHis'); - - //adding financial_trxn records and entity_financial_trxn records related to contribution - //Add temp column for easy entry in entity_financial_trxn - $sql = "ALTER TABLE civicrm_financial_trxn ADD COLUMN contribution_id INT DEFAULT NULL"; - CRM_Core_DAO::executeQuery($sql); - - //pending pay later status handling - $sql = " -INSERT INTO civicrm_financial_trxn - (contribution_id, payment_instrument_id, currency, total_amount, net_amount, fee_amount, trxn_id, status_id, - check_number, to_financial_account_id, from_financial_account_id, trxn_date) -SELECT con.id as contribution_id, con.payment_instrument_id, - IF(con.currency IN ('{$validCurrencyCodes}'), con.currency, '{$defaultCurrency}') as currency, - con.total_amount, con.net_amount, con.fee_amount, con.trxn_id, con.contribution_status_id, - con.check_number, efa.financial_account_id as to_financial_account_id, NULL as from_financial_account_id, - REPLACE(REPLACE(REPLACE( - CASE - WHEN con.receive_date IS NOT NULL THEN - con.receive_date - WHEN con.receipt_date IS NOT NULL THEN - con.receipt_date - ELSE - {$now} - END - , '-', ''), ':', ''), ' ', '') as trxn_date -FROM civicrm_contribution con - LEFT JOIN civicrm_entity_financial_account efa - ON (con.financial_type_id = efa.entity_id AND efa.entity_table = 'civicrm_financial_type' - AND efa.account_relationship = {$accountsReceivableAccount}) -WHERE con.is_pay_later = 1 -AND con.contribution_status_id = {$pendingStatus} -"; - CRM_Core_DAO::executeQuery($sql); - - //create a temp table to hold financial account id related to payment instruments - $tempTable1 = CRM_Utils_SQL_TempTable::build()->setCategory('upgrade43')->setDurable(); - - $sql = " -SELECT ceft.financial_account_id financial_account_id, cov.value as instrument_id -FROM civicrm_entity_financial_account ceft -INNER JOIN civicrm_option_value cov ON cov.id = ceft.entity_id AND ceft.entity_table = 'civicrm_option_value' -INNER JOIN civicrm_option_group cog ON cog.id = cov.option_group_id -WHERE cog.name = 'payment_instrument' -"; - $tempTable1->createWithQuery($sql); - $tempTableName1 = $tempTable1->getName(); - - //CRM-12141 - $sql = "ALTER TABLE {$tempTableName1} ADD INDEX index_instrument_id (instrument_id(200));"; - CRM_Core_DAO::executeQuery($sql); - - //create temp table to process completed / cancelled contribution - $tempTable2 = CRM_Utils_SQL_TempTable::build()->setCategory('upgrade43')->setDurable(); - $tempTableName2 = $tempTable2->getName(); - $sql = " -SELECT con.id as contribution_id, con.payment_instrument_id, - IF(con.currency IN ('{$validCurrencyCodes}'), con.currency, '{$defaultCurrency}') as currency, - con.total_amount, con.net_amount, con.fee_amount, con.trxn_id, con.contribution_status_id, - con.check_number, NULL as from_financial_account_id, - REPLACE(REPLACE(REPLACE( - CASE - WHEN con.receive_date IS NOT NULL THEN - con.receive_date - WHEN con.receipt_date IS NOT NULL THEN - con.receipt_date - ELSE - {$now} - END - , '-', ''), ':', ''), ' ', '') as trxn_date, - CASE - WHEN con.payment_instrument_id IS NULL THEN - {$financialAccountId} - WHEN con.payment_instrument_id IS NOT NULL THEN - tpi.financial_account_id - END as to_financial_account_id, - IF(eft.financial_trxn_id IS NULL, 'insert', eft.financial_trxn_id) as action -FROM civicrm_contribution con -LEFT JOIN civicrm_entity_financial_trxn eft - ON (eft.entity_table = 'civicrm_contribution' AND eft.entity_id = con.id) -LEFT JOIN {$tempTableName1} tpi - ON con.payment_instrument_id = tpi.instrument_id -WHERE con.contribution_status_id IN ({$completedStatus}, {$cancelledStatus}) -"; - $tempTable2->createWithQuery($sql); - - // CRM-12141 - $sql = "ALTER TABLE {$tempTableName2} ADD INDEX index_action (action);"; - CRM_Core_DAO::executeQuery($sql); - - //handling for completed contribution and cancelled contribution - //insertion of new records - $sql = " -INSERT INTO civicrm_financial_trxn - (contribution_id, payment_instrument_id, currency, total_amount, net_amount, fee_amount, trxn_id, status_id, check_number, - to_financial_account_id, from_financial_account_id, trxn_date) -SELECT tempI.contribution_id, tempI.payment_instrument_id, tempI.currency, tempI.total_amount, tempI.net_amount, - tempI.fee_amount, tempI.trxn_id, tempI.contribution_status_id, tempI.check_number, - tempI.to_financial_account_id, tempI.from_financial_account_id, tempI.trxn_date -FROM {$tempTableName2} tempI -WHERE tempI.action = 'insert' -"; - CRM_Core_DAO::executeQuery($sql); - - //update of existing records - $sql = " -UPDATE civicrm_financial_trxn ft - INNER JOIN {$tempTableName2} tempU - ON (tempU.action != 'insert' AND ft.id = tempU.action) -SET ft.from_financial_account_id = NULL, - ft.to_financial_account_id = tempU.to_financial_account_id, - ft.status_id = tempU.contribution_status_id, - ft.payment_instrument_id = tempU.payment_instrument_id, - ft.check_number = tempU.check_number, - ft.contribution_id = tempU.contribution_id;"; - CRM_Core_DAO::executeQuery($sql); - - //insert the -ve transaction rows for cancelled contributions - $sql = " -INSERT INTO civicrm_financial_trxn - (contribution_id, payment_instrument_id, currency, total_amount, net_amount, fee_amount, trxn_id, status_id, - check_number, to_financial_account_id, from_financial_account_id, trxn_date) -SELECT ft.contribution_id, ft.payment_instrument_id, ft.currency, -ft.total_amount, ft.net_amount, ft.fee_amount, ft.trxn_id, - ft.status_id, ft.check_number, ft.to_financial_account_id, ft.from_financial_account_id, ft.trxn_date -FROM civicrm_financial_trxn ft -WHERE ft.status_id = {$cancelledStatus};"; - CRM_Core_DAO::executeQuery($sql); - - //inserting entity financial trxn entries if its not present in entity_financial_trxn for completed and pending contribution statuses - //this also handles +ve and -ve both transaction entries for a cancelled contribution - $sql = " -INSERT INTO civicrm_entity_financial_trxn (entity_table, entity_id, financial_trxn_id, amount) -SELECT 'civicrm_contribution', ft.contribution_id, ft.id, ft.total_amount as amount -FROM civicrm_financial_trxn ft -WHERE contribution_id IS NOT NULL AND - ft.id NOT IN (SELECT financial_trxn_id - FROM civicrm_entity_financial_trxn - WHERE entity_table = 'civicrm_contribution' - AND entity_id = ft.contribution_id)"; - CRM_Core_DAO::executeQuery($sql); - //end of adding financial_trxn records and entity_financial_trxn records related to contribution - - //update all linked line_item rows - // set line_item.financial_type_id = contribution.financial_type_id if contribution page id is null and not participant line item - // set line_item.financial_type_id = price_field_value.financial_type_id if contribution page id is set and not participant line item - // set line_item.financial_type_id = event.financial_type_id if its participant line item and line_item.price_field_value_id is null - // set line_item.financial_type_id = price_field_value.financial_type_id if its participant line item and line_item.price_field_value_id is set - $updateLineItemSql = " -UPDATE civicrm_line_item li - LEFT JOIN civicrm_contribution con - ON (li.entity_id = con.id AND li.entity_table = 'civicrm_contribution') - LEFT JOIN civicrm_price_field_value cpfv - ON li.price_field_value_id = cpfv.id - LEFT JOIN civicrm_participant cp - ON (li.entity_id = cp.id AND li.entity_table = 'civicrm_participant') - LEFT JOIN civicrm_event ce - ON ce.id = cp.event_id -SET li.financial_type_id = CASE - WHEN (con.contribution_page_id IS NULL || li.price_field_value_id IS NULL) AND cp.id IS NULL THEN - con.financial_type_id - WHEN (con.contribution_page_id IS NOT NULL AND cp.id IS NULL) || (cp.id IS NOT NULL AND li.price_field_value_id IS NOT NULL) THEN - cpfv.financial_type_id - WHEN cp.id IS NOT NULL AND li.price_field_value_id IS NULL THEN - ce.financial_type_id - END"; - CRM_Core_DAO::executeQuery($updateLineItemSql, $queryParams); - - //add the financial_item entries - //add a temp column so that inserting entity_financial_trxn entries gets easy - $sql = "ALTER TABLE civicrm_financial_item ADD COLUMN f_trxn_id INT DEFAULT NULL"; - CRM_Core_DAO::executeQuery($sql); - - //add financial_item entries for contribution completed / pending pay later / cancelled - $contributionlineItemSql = " -INSERT INTO civicrm_financial_item - (transaction_date, contact_id, amount, currency, entity_table, entity_id, description, status_id, financial_account_id, f_trxn_id) - -SELECT REPLACE(REPLACE(REPLACE(ft.trxn_date, '-', ''), ':', ''), ' ', ''), con.contact_id, - IF(ft.total_amount < 0 AND con.contribution_status_id = %3, -li.line_total, li.line_total) as line_total, con.currency, 'civicrm_line_item', - li.id as line_item_id, li.label as line_item_label, - IF(con.contribution_status_id = {$pendingStatus}, {$unpaidStatus}, {$paidStatus}) as status_id, efa.financial_account_id as financial_account_id, - ft.id as f_trxn_id -FROM civicrm_line_item li - INNER JOIN civicrm_contribution con - ON (li.entity_id = con.id AND li.entity_table = 'civicrm_contribution') - INNER JOIN civicrm_financial_trxn ft - ON (con.id = ft.contribution_id) - LEFT JOIN civicrm_entity_financial_account efa - ON (li.financial_type_id = efa.entity_id AND efa.entity_table = 'civicrm_financial_type' - AND efa.account_relationship = {$incomeAccountIs}) -WHERE con.contribution_status_id IN (%1, %3) OR (con.is_pay_later = 1 AND con.contribution_status_id = %2)"; - CRM_Core_DAO::executeQuery($contributionlineItemSql, $queryParams); - - //add financial_item entries for event - $participantLineItemSql = " -INSERT INTO civicrm_financial_item - (transaction_date, contact_id, amount, currency, entity_table, entity_id, description, status_id, financial_account_id, f_trxn_id) - -SELECT REPLACE(REPLACE(REPLACE(ft.trxn_date, '-', ''), ':', ''), ' ', ''), con.contact_id, - IF(ft.total_amount < 0 AND con.contribution_status_id = %3, -li.line_total, li.line_total) as line_total, - con.currency, 'civicrm_line_item', li.id as line_item_id, li.label as line_item_label, - IF(con.contribution_status_id = {$pendingStatus}, {$unpaidStatus}, {$paidStatus}) as status_id, - efa.financial_account_id as financial_account_id, ft.id as f_trxn_id -FROM civicrm_line_item li - INNER JOIN civicrm_participant par - ON (li.entity_id = par.id AND li.entity_table = 'civicrm_participant') - INNER JOIN civicrm_participant_payment pp - ON (pp.participant_id = par.id) - INNER JOIN civicrm_contribution con - ON (pp.contribution_id = con.id) - INNER JOIN civicrm_financial_trxn ft - ON (con.id = ft.contribution_id) - LEFT JOIN civicrm_entity_financial_account efa - ON (li.financial_type_id = efa.entity_id AND - efa.entity_table = 'civicrm_financial_type' AND efa.account_relationship = {$incomeAccountIs}) -WHERE con.contribution_status_id IN (%1, %3) OR (con.is_pay_later = 1 AND con.contribution_status_id = %2)"; - CRM_Core_DAO::executeQuery($participantLineItemSql, $queryParams); - - //fee handling for contributions - //insert fee entries in financial_trxn for contributions - $sql = "ALTER TABLE civicrm_financial_trxn ADD COLUMN is_fee TINYINT DEFAULT NULL"; - CRM_Core_DAO::executeQuery($sql); - - $sql = " -INSERT INTO civicrm_financial_trxn - (contribution_id, payment_instrument_id, currency, total_amount, net_amount, fee_amount, trxn_id, status_id, check_number, - to_financial_account_id, from_financial_account_id, trxn_date, payment_processor_id, is_fee) - -SELECT DISTINCT con.id, ft.payment_instrument_id, ft.currency, ft.fee_amount, NULL, NULL, ft.trxn_id, %1 as status_id, - ft.check_number, efaFT.financial_account_id as to_financial_account_id, CASE - WHEN efaPP.financial_account_id IS NOT NULL THEN - efaPP.financial_account_id - WHEN tpi.financial_account_id IS NOT NULL THEN - tpi.financial_account_id - ELSE - {$financialAccountId} - END as from_financial_account_id, ft.trxn_date, ft.payment_processor_id, 1 as is_fee -FROM civicrm_contribution con - INNER JOIN civicrm_financial_trxn ft - ON (ft.contribution_id = con.id) - LEFT JOIN civicrm_entity_financial_account efaFT - ON (con.financial_type_id = efaFT.entity_id AND efaFT.entity_table = 'civicrm_financial_type' - AND efaFT.account_relationship = {$expenseAccountIs}) - LEFT JOIN civicrm_entity_financial_account efaPP - ON (ft.payment_processor_id = efaPP.entity_id AND efaPP.entity_table = 'civicrm_payment_processor' - AND efaPP.account_relationship = {$assetAccountIs}) - LEFT JOIN {$tempTableName1} tpi - ON ft.payment_instrument_id = tpi.instrument_id -WHERE ft.fee_amount IS NOT NULL AND ft.fee_amount != 0 AND (con.contribution_status_id IN (%1, %3) OR (con.contribution_status_id =%2 AND con.is_pay_later = 1))"; - CRM_Core_DAO::executeQuery($sql, $queryParams); - - //link financial_trxn to contribution - $sql = " -INSERT INTO civicrm_entity_financial_trxn - (entity_table, entity_id, financial_trxn_id, amount) -SELECT 'civicrm_contribution', ft.contribution_id, ft.id, ft.total_amount -FROM civicrm_financial_trxn ft -WHERE ft.is_fee = 1"; - CRM_Core_DAO::executeQuery($sql); - - //add fee related entries to financial item table - $domainId = CRM_Core_Config::domainID(); - $domainContactId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', $domainId, 'contact_id'); - $sql = " -INSERT INTO civicrm_financial_item - (transaction_date, contact_id, amount, currency, entity_table, entity_id, description, status_id, financial_account_id, f_trxn_id) -SELECT ft.trxn_date, {$domainContactId} as contact_id, ft.total_amount, ft.currency, 'civicrm_financial_trxn', ft.id, - 'Fee', {$paidStatus} as status_id, ft.to_financial_account_id as financial_account_id, ft.id as f_trxn_id -FROM civicrm_financial_trxn ft -WHERE ft.is_fee = 1;"; - CRM_Core_DAO::executeQuery($sql); - - //add entries to entity_financial_trxn table - $sql = " -INSERT INTO civicrm_entity_financial_trxn (entity_table, entity_id, financial_trxn_id, amount) -SELECT 'civicrm_financial_item' as entity_table, fi.id as entity_id, fi.f_trxn_id as financial_trxn_id, fi.amount -FROM civicrm_financial_item fi"; - CRM_Core_DAO::executeQuery($sql); - - //drop the temparory columns - $sql = "ALTER TABLE civicrm_financial_trxn - DROP COLUMN contribution_id, - DROP COLUMN is_fee;"; - CRM_Core_DAO::executeQuery($sql); - - $sql = "ALTER TABLE civicrm_financial_item DROP f_trxn_id"; - CRM_Core_DAO::executeQuery($sql); - - return TRUE; - } - - /** - * @return array - */ - public function createDomainContacts() { - $domainParams = $context = []; - $query = " -ALTER TABLE civicrm_domain ADD contact_id INT( 10 ) UNSIGNED NULL DEFAULT NULL COMMENT 'FK to Contact ID. This is specifically not an FK to avoid circular constraints', - ADD CONSTRAINT FK_civicrm_domain_contact_id FOREIGN KEY (contact_id) REFERENCES civicrm_contact(id);"; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - - $query = ' -SELECT cd.id, cd.name, ce.email FROM civicrm_domain cd -LEFT JOIN civicrm_loc_block clb ON clb.id = cd. loc_block_id -LEFT JOIN civicrm_email ce ON ce.id = clb.email_id ; -'; - $dao = CRM_Core_DAO::executeQuery($query); - while ($dao->fetch()) { - $query = " -SELECT cc.id FROM civicrm_contact cc -LEFT JOIN civicrm_email ce ON ce.contact_id = cc.id -WHERE cc.contact_type = 'Organization' AND cc.organization_name = %1 -"; - $params = [1 => [$dao->name, 'String']]; - if ($dao->email) { - $query .= " AND ce.email = %2 "; - $params[2] = [$dao->email, 'String']; - } - $contactID = CRM_Core_DAO::singleValueQuery($query, $params); - $context[1] = $dao->name; - if (empty($contactID)) { - $params = [ - 'sort_name' => $dao->name, - 'display_name' => $dao->name, - 'legal_name' => $dao->name, - 'organization_name' => $dao->name, - 'contact_type' => 'Organization', - ]; - $contact = CRM_Contact_BAO_Contact::add($params); - $contactID = $contact->id; - $context[0] = 'added'; - } - else { - $context[0] = 'merged'; - } - $domainParams['contact_id'] = $contactID; - CRM_Core_BAO_Domain::edit($domainParams, $dao->id); - } - return $context; - } - - public function task_4_3_alpha1_checkDBConstraints() { - //checking whether the foreign key exists before dropping it CRM-11260 - $config = CRM_Core_Config::singleton(); - $dbUf = DB::parseDSN($config->dsn); - $tables = [ - 'autorenewal_msg_id' => [ - 'tableName' => 'civicrm_membership_type', - 'fkey' => 'FK_civicrm_membership_autorenewal_msg_id', - ], - 'to_account_id' => [ - 'tableName' => 'civicrm_financial_trxn', - 'constraintName' => 'civicrm_financial_trxn_ibfk_2', - ], - 'from_account_id' => [ - 'tableName' => 'civicrm_financial_trxn', - 'constraintName' => 'civicrm_financial_trxn_ibfk_1', - ], - 'contribution_type_id' => [ - 'tableName' => 'civicrm_contribution_recur', - 'fkey' => 'FK_civicrm_contribution_recur_contribution_type_id', - ], - ]; - $query = " -SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS -WHERE table_name = 'civicrm_contribution_recur' -AND constraint_name = 'FK_civicrm_contribution_recur_contribution_type_id' -AND TABLE_SCHEMA = %1 -"; - $params = [1 => [$dbUf['database'], 'String']]; - $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, FALSE); - foreach ($tables as $columnName => $value) { - if ($value['tableName'] == 'civicrm_membership_type' || $value['tableName'] == 'civicrm_contribution_recur') { - $foreignKeyExists = CRM_Core_DAO::checkConstraintExists($value['tableName'], $value['fkey']); - $fKey = $value['fkey']; - } - else { - $foreignKeyExists = CRM_Core_DAO::checkFKConstraintInFormat($value['tableName'], $columnName); - $fKey = "`FK_{$value['tableName']}_{$columnName}`"; - } - if ($foreignKeyExists || $value['tableName'] == 'civicrm_financial_trxn') { - if ($value['tableName'] != 'civicrm_contribution_recur' || ($value['tableName'] == 'civicrm_contribution_recur' && $dao->N)) { - $constraintName = $foreignKeyExists ? $fKey : $value['constraintName']; - $query = "ALTER TABLE {$value['tableName']} DROP FOREIGN KEY {$constraintName}"; - CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, FALSE); - } - $query = "ALTER TABLE {$value['tableName']} DROP INDEX {$fKey}"; - CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, FALSE); - } - } - // check if column contact_id is present or not in civicrm_financial_account - $fieldExists = CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_financial_account', 'contact_id', FALSE); - if (!$fieldExists) { - $query = " -ALTER TABLE civicrm_financial_account - ADD contact_id int(10) unsigned DEFAULT NULL COMMENT 'Version identifier of financial_type' AFTER name, - ADD CONSTRAINT FK_civicrm_financial_account_contact_id FOREIGN KEY (contact_id) REFERENCES civicrm_contact(id); -"; - CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, FALSE); - } - } - - /** - * Read creation and modification times from civicrm_log; add them to civicrm_contact. - * - * @param \CRM_Queue_TaskContext $ctx - * @param int $startId - * @param int $endId - * - * @return bool - */ - public function convertTimestamps(CRM_Queue_TaskContext $ctx, $startId, $endId) { - $sql = " - SELECT entity_id, min(modified_date) AS created, max(modified_date) AS modified - FROM civicrm_log - WHERE entity_table = 'civicrm_contact' - AND entity_id BETWEEN %1 AND %2 - GROUP BY entity_id - "; - $params = [ - 1 => [$startId, 'Integer'], - 2 => [$endId, 'Integer'], - ]; - $dao = CRM_Core_DAO::executeQuery($sql, $params); - while ($dao->fetch()) { - // FIXME civicrm_log.modified_date is DATETIME; civicrm_contact.modified_date is TIMESTAMP - CRM_Core_DAO::executeQuery( - 'UPDATE civicrm_contact SET created_date = FROM_UNIXTIME(UNIX_TIMESTAMP(%1)), modified_date = FROM_UNIXTIME(UNIX_TIMESTAMP(%2)) WHERE id = %3', - [ - 1 => [$dao->created, 'String'], - 2 => [$dao->modified, 'String'], - 3 => [$dao->entity_id, 'Integer'], - ] - ); - } - - return TRUE; - } - - /** - * Change index and add missing constraints for civicrm_contribution_recur. - * - * @param \CRM_Queue_TaskContext $ctx - * - * @return bool - */ - public function addMissingConstraints(CRM_Queue_TaskContext $ctx) { - $query = "SHOW KEYS FROM `civicrm_contribution_recur` WHERE key_name = 'UI_contrib_payment_instrument_id'"; - $dao = CRM_Core_DAO::executeQuery($query); - if ($dao->N) { - CRM_Core_DAO::executeQuery('ALTER TABLE civicrm_contribution_recur DROP INDEX UI_contrib_payment_instrument_id'); - CRM_Core_DAO::executeQuery('ALTER TABLE civicrm_contribution_recur ADD INDEX UI_contribution_recur_payment_instrument_id (payment_instrument_id)'); - } - $constraintArray = [ - 'contact_id' => " ADD CONSTRAINT `FK_civicrm_contribution_recur_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE CASCADE ", - 'payment_processor_id' => " ADD CONSTRAINT `FK_civicrm_contribution_recur_payment_processor_id` FOREIGN KEY (`payment_processor_id`) REFERENCES `civicrm_payment_processor` (`id`) ON DELETE SET NULL ", - 'financial_type_id' => " ADD CONSTRAINT `FK_civicrm_contribution_recur_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`) ON DELETE SET NULL ", - 'campaign_id' => " ADD CONSTRAINT `FK_civicrm_contribution_recur_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign` (`id`) ON DELETE SET NULL ", - ]; - $constraint = []; - foreach ($constraintArray as $constraintKey => $value) { - $foreignKeyExists = CRM_Core_DAO::checkFKConstraintInFormat('civicrm_contribution_recur', $constraintKey); - if (!$foreignKeyExists) { - $constraint[] = $value; - } - } - if (!empty($constraint)) { - $query = "ALTER TABLE civicrm_contribution_recur " . implode(' , ', $constraint); - CRM_Core_DAO::executeQuery($query); - } - return TRUE; - } - - /** - * Update financial_account_id for bad data in financial_trxn table. - * CRM-12844 - * - * @param \CRM_Queue_TaskContext $ctx - * - * @return bool - */ - public function updateFinancialTrxnData(CRM_Queue_TaskContext $ctx) { - $upgrade = new CRM_Upgrade_Form(); - $sql = "SELECT cc.id contribution_id, cc.contribution_recur_id, cft.payment_processor_id, -cft.id financial_trxn_id, cfi.entity_table, cft.from_financial_account_id, cft.to_financial_account_id - -FROM `civicrm_contribution` cc -LEFT JOIN civicrm_entity_financial_trxn ceft ON ceft.entity_id = cc.id -LEFT JOIN civicrm_financial_trxn cft ON cft.id = ceft.financial_trxn_id -LEFT JOIN civicrm_entity_financial_trxn ceft1 ON ceft1.financial_trxn_id = ceft.financial_trxn_id -LEFT JOIN civicrm_financial_item cfi ON cfi.id = ceft1.entity_id -WHERE ceft.entity_table = 'civicrm_contribution' AND cc.contribution_recur_id IS NOT NULL -AND ceft1.entity_table = 'civicrm_financial_item' AND cft.id IS NOT NULL AND cft.payment_instrument_id = %1 - -ORDER BY cft.id "; - $paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument('name'); - $param = [1 => [array_search('Credit Card', $paymentInstrument), 'Integer']]; - $dao = CRM_Core_DAO::executeQuery($sql, $param); - $financialTrxn = []; - $subsequentPayments = []; - while ($dao->fetch()) { - if (!array_key_exists($dao->contribution_recur_id, $financialTrxn)) { - $financialTrxn[$dao->contribution_recur_id] = [ - 'from_financial_account_id' => $dao->to_financial_account_id, - 'payment_processor_id' => $dao->payment_processor_id, - $dao->contribution_id => 1, - ]; - if (!is_null($dao->from_financial_account_id)) { - $sql = 'UPDATE civicrm_financial_trxn SET from_financial_account_id = NULL WHERE id = %1'; - $params = [1 => [$dao->financial_trxn_id, 'Integer']]; - CRM_Core_DAO::executeQuery($sql, $params); - } - } - elseif (!array_key_exists($dao->contribution_id, $financialTrxn[$dao->contribution_recur_id])) { - if (($dao->entity_table == 'civicrm_line_item' && $dao->to_financial_account_id == $financialTrxn[$dao->contribution_recur_id]['from_financial_account_id']) - || ($dao->entity_table == 'civicrm_financial_trxn' && $dao->from_financial_account_id == $financialTrxn[$dao->contribution_recur_id]['from_financial_account_id']) - ) { - continue; - } - $subsequentPayments[$dao->contribution_recur_id][$dao->entity_table][] = $dao->financial_trxn_id; - } - } - foreach ($subsequentPayments as $key => $value) { - foreach ($value as $table => $val) { - if ($table == 'civicrm_financial_trxn') { - $field = 'from_financial_account_id'; - } - else { - $field = 'to_financial_account_id'; - } - $sql = "UPDATE civicrm_financial_trxn SET $field = " . $financialTrxn[$dao->contribution_recur_id]['from_financial_account_id'] . ', -payment_processor_id = ' . $financialTrxn[$dao->contribution_recur_id]['payment_processor_id'] . ' WHERE -id IN (' . implode(',', $val) . ')'; - CRM_Core_DAO::executeQuery($sql); - } - } - return TRUE; - } - - /** - * Update financial_account_id for bad data in financial_trxn table. - * CRM-12844 - * - * @param \CRM_Queue_TaskContext $ctx - * - * @return bool - */ - public function updateLineItemData(CRM_Queue_TaskContext $ctx) { - $sql = "SELECT cc.id contribution_id, cc.contribution_recur_id, -cc.financial_type_id contribution_financial_type, -cli.financial_type_id line_financial_type_id, -cli.price_field_id, cli.price_field_value_id, cli.label, cli.id line_item_id, -cfi.financial_account_id -FROM `civicrm_line_item` cli -LEFT JOIN civicrm_contribution cc ON cc.id = cli.entity_id -LEFT JOIN civicrm_financial_item cfi ON cfi.entity_id = cli.id -LEFT JOIN civicrm_price_field cpf ON cpf.id = cli.price_field_id -LEFT JOIN civicrm_price_set cps ON cps.id = cpf.price_set_id -LEFT JOIN civicrm_price_field_value cpfv ON cpfv.id = cli.price_field_value_id -WHERE cfi.entity_table = 'civicrm_line_item' -AND cli.entity_table = 'civicrm_contribution' -AND cps.is_quick_config = 1 AND cc.contribution_recur_id IS NOT NULL -ORDER BY cli.id"; - $dao = CRM_Core_DAO::executeQuery($sql); - $financialTrxn = $subsequentPayments = []; - while ($dao->fetch()) { - if (!array_key_exists($dao->contribution_recur_id, $financialTrxn)) { - $financialTrxn[$dao->contribution_recur_id] = [ - 'price_field_id' => $dao->price_field_id, - 'price_field_value_id' => $dao->price_field_value_id, - 'label' => strval($dao->label), - 'financial_account_id' => $dao->financial_account_id, - $dao->contribution_id => 1, - ]; - } - else { - if ($dao->price_field_value_id == $financialTrxn[$dao->contribution_recur_id]['price_field_value_id']) { - continue; - } - $subsequentPayments[$dao->contribution_recur_id][] = $dao->line_item_id; - } - } - foreach ($subsequentPayments as $key => $value) { - $sql = "UPDATE civicrm_line_item cli -LEFT JOIN civicrm_financial_item cfi ON cli.id = cfi.entity_id -SET -cli.label = %1, -cli.price_field_id = %2, -cli.price_field_value_id = %3, -cfi.financial_account_id = %4, -cfi.description = %5, -cli.financial_type_id = %6 -WHERE cfi.entity_table = 'civicrm_line_item' -AND cli.entity_table = 'civicrm_contribution' AND cli.id IN (" . implode(',', $value) . ');'; - $params = [ - 1 => [$financialTrxn[$key]['label'], 'String'], - 2 => [$financialTrxn[$key]['price_field_id'], 'Integer'], - 3 => [$financialTrxn[$key]['price_field_value_id'], 'Integer'], - 4 => [$financialTrxn[$key]['financial_account_id'], 'Integer'], - 5 => [$financialTrxn[$key]['label'], 'String'], - 6 => [$dao->contribution_financial_type, 'Integer'], - ]; - CRM_Core_DAO::executeQuery($sql, $params); - } - return TRUE; - } - - /** - * Replace contribution_type to financial_type in table. - * - * Civicrm_saved_search and Structure civicrm_report_instance - * - * @param \CRM_Queue_TaskContext $ctx - * @param string $query - * @param string $table - * - * @return bool - */ - public function replaceContributionTypeId(CRM_Queue_TaskContext $ctx, $query, $table) { - $dao = CRM_Core_DAO::executeQuery($query); - while ($dao->fetch()) { - $formValues = unserialize($dao->form_values); - foreach (['contribution_type_id_op', 'contribution_type_id_value', 'contribution_type_id'] as $value) { - if (array_key_exists($value, $formValues)) { - $key = preg_replace('/contribution/', 'financial', $value); - $formValues[$key] = $formValues[$value]; - unset($formValues[$value]); - } - } - if ($table != 'savedSearch') { - foreach (['fields', 'group_bys'] as $value) { - if (array_key_exists($value, $formValues)) { - if (array_key_exists('contribution_type_id', $formValues[$value])) { - $formValues[$value]['financial_type_id'] = $formValues[$value]['contribution_type_id']; - unset($formValues[$value]['contribution_type_id']); - } - elseif (array_key_exists('contribution_type', $formValues[$value])) { - $formValues[$value]['financial_type'] = $formValues[$value]['contribution_type']; - unset($formValues[$value]['contribution_type']); - } - } - } - if (array_key_exists('order_bys', $formValues)) { - foreach ($formValues['order_bys'] as $key => $values) { - if (preg_grep('/contribution_type/', $values)) { - $formValues['order_bys'][$key]['column'] = preg_replace('/contribution_type/', 'financial_type', $values['column']); - } - } - } - } - - if ($table == 'savedSearch') { - $saveDao = new CRM_Contact_DAO_SavedSearch(); - } - else { - $saveDao = new CRM_Report_DAO_ReportInstance(); - } - $saveDao->id = $dao->id; - - if ($table == 'savedSearch') { - if (array_key_exists('mapper', $formValues)) { - foreach ($formValues['mapper'] as $key => $values) { - foreach ($values as $k => $v) { - if (preg_grep('/contribution_/', $v)) { - $formValues['mapper'][$key][$k] = preg_replace('/contribution_type/', 'financial_type', $v); - } - } - } - } - } - $saveDao->form_values = serialize($formValues); - - $saveDao->save(); - } - return TRUE; - } - - /** - * Add ON DELETE options for constraint if not present. - * CRM-13088 && CRM-12156 - * - * @param CRM_Queue_TaskContext $ctx - * - * @return bool - * TRUE for success - */ - public function task_4_3_x_checkConstraints(CRM_Queue_TaskContext $ctx) { - CRM_Core_DAO::executeQuery('ALTER TABLE `civicrm_financial_account` CHANGE `contact_id` `contact_id` INT( 10 ) UNSIGNED NULL DEFAULT NULL'); - $config = CRM_Core_Config::singleton(); - $dbname = DB::parseDSN($config->dsn); - $constraintArray = [ - "'FK_civicrm_financial_account_contact_id'", - "'FK_civicrm_financial_item_contact_id'", - "'FK_civicrm_contribution_recur_financial_type_id'", - "'FK_civicrm_line_item_financial_type_id'", - "'FK_civicrm_product_financial_type_id'", - "'FK_civicrm_premiums_product_financial_type_id'", - "'FK_civicrm_price_field_value_financial_type_id'", - "'FK_civicrm_contribution_product_financial_type_id'", - "'FK_civicrm_price_set_financial_type_id'", - "'FK_civicrm_grant_financial_type_id'", - ]; - - $sql = "SELECT DELETE_RULE, TABLE_NAME, CONSTRAINT_NAME -FROM information_schema.REFERENTIAL_CONSTRAINTS -WHERE CONSTRAINT_NAME IN (" . implode(',', $constraintArray) . ") -AND CONSTRAINT_SCHEMA = %1"; - $params = [1 => [$dbname['database'], 'String']]; - $onDelete = CRM_Core_DAO::executeQuery($sql, $params, TRUE, FALSE); - while ($onDelete->fetch()) { - if (($onDelete->TABLE_NAME != 'civicrm_financial_item' && $onDelete->DELETE_RULE != 'SET NULL') || - ($onDelete->TABLE_NAME == 'civicrm_financial_item' && $onDelete->DELETE_RULE != 'CASCADE') - ) { - $tableName = 'civicrm_financial_type'; - $onDeleteOption = ' SET NULL '; - $columnName = 'financial_type_id'; - if (preg_match('/contact_id/', $onDelete->CONSTRAINT_NAME)) { - $tableName = 'civicrm_contact'; - $columnName = 'contact_id'; - if ($onDelete->TABLE_NAME == 'civicrm_financial_item') { - $onDeleteOption = 'CASCADE'; - } - } - } - else { - continue; - } - $query = "ALTER TABLE {$onDelete->TABLE_NAME} - DROP FOREIGN KEY {$onDelete->CONSTRAINT_NAME}, - DROP INDEX {$onDelete->CONSTRAINT_NAME};"; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - $query = " ALTER TABLE {$onDelete->TABLE_NAME} - ADD CONSTRAINT {$onDelete->CONSTRAINT_NAME} FOREIGN KEY (`" . $columnName . "`) REFERENCES {$tableName} (`id`) ON DELETE {$onDeleteOption}; - "; - CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE); - } - return TRUE; - } - - /** - * Check/Add INDEX CRM-12141 - * - * @param CRM_Queue_TaskContext $ctx - * - * @return bool - * TRUE for success - */ - public function task_4_3_x_checkIndexes(CRM_Queue_TaskContext $ctx) { - $query = " -SHOW KEYS -FROM civicrm_entity_financial_trxn -WHERE key_name IN ('UI_entity_financial_trxn_entity_table', 'UI_entity_financial_trxn_entity_id') -"; - $dao = CRM_Core_DAO::executeQuery($query); - if (!$dao->N) { - $query = " -ALTER TABLE civicrm_entity_financial_trxn -ADD INDEX UI_entity_financial_trxn_entity_table (entity_table), -ADD INDEX UI_entity_financial_trxn_entity_id (entity_id); -"; - CRM_Core_DAO::executeQuery($query); - } - return TRUE; - } - - /** - * Update phones CRM-11292 - * - * @param CRM_Queue_TaskContext $ctx - * - * @return bool - * TRUE for success - */ - public static function phoneNumeric(CRM_Queue_TaskContext $ctx) { - CRM_Core_DAO::executeQuery(CRM_Contact_BAO_Contact::DROP_STRIP_FUNCTION_43); - CRM_Core_DAO::executeQuery(CRM_Contact_BAO_Contact::CREATE_STRIP_FUNCTION_43); - CRM_Core_DAO::executeQuery("UPDATE civicrm_phone SET phone_numeric = civicrm_strip_non_numeric(phone)"); - return TRUE; - } - -} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.0.mysql.tpl deleted file mode 100644 index 5283039600..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.0.mysql.tpl +++ /dev/null @@ -1,2 +0,0 @@ --- CRM-12290 -UPDATE civicrm_currency SET symbol = 'N$' WHERE name = 'NAD'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.1.mysql.tpl deleted file mode 100644 index b8bbcad971..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.1.mysql.tpl +++ /dev/null @@ -1,21 +0,0 @@ --- CRM-12351 -UPDATE civicrm_dedupe_rule_group SET title = name WHERE title IS NULL; - --- CRM-12373 - -SELECT @bounceTypeID := max(id) FROM civicrm_mailing_bounce_type WHERE name = 'Dns'; -INSERT INTO civicrm_mailing_bounce_pattern (bounce_type_id, pattern) - VALUES - (@bounceTypeID, 'Host or domain name not found'); - -SELECT @bounceTypeID := max(id) FROM civicrm_mailing_bounce_type WHERE name = 'Host'; -INSERT INTO civicrm_mailing_bounce_pattern (bounce_type_id, pattern) - VALUES - (@bounceTypeID, 'lost connection'), - (@bounceTypeID, 'conversation with [^ ]* timed out while'); - -SELECT @bounceTypeID := max(id) FROM civicrm_mailing_bounce_type WHERE name = 'Relay'; -INSERT INTO civicrm_mailing_bounce_pattern (bounce_type_id, pattern) - VALUES - (@bounceTypeID, 'No route to host'), - (@bounceTypeID, 'Network is unreachable'); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.2.mysql.tpl deleted file mode 100644 index ea0b70fa50..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.2.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* placeholder file for upgrade*} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.3.mysql.tpl deleted file mode 100644 index 4753fab7f1..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.3.mysql.tpl +++ /dev/null @@ -1,2 +0,0 @@ --- CRM-12501 -ALTER TABLE civicrm_financial_account CHANGE `tax_rate` `tax_rate` DECIMAL( 10, 8 ) NULL DEFAULT NULL COMMENT 'The percentage of the total_amount that is due for this tax.'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.4.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.4.mysql.tpl deleted file mode 100644 index 4da5c51ee8..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.4.mysql.tpl +++ /dev/null @@ -1,109 +0,0 @@ -{* file to handle db changes in 4.3.4 during upgrade*} - --- CRM-12466 -INSERT INTO -civicrm_option_group (name, {localize field='title'}title{/localize}, is_reserved, is_active) -VALUES -('contact_smart_group_display', {localize}'{ts escape="sql"}Contact Smart Group View Options{/ts}'{/localize}, 1, 1); - -SELECT @option_group_id_csgOpt := max(id) FROM civicrm_option_group WHERE name = 'contact_smart_group_display'; - -INSERT INTO -civicrm_option_value (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, -`is_default`, `weight`) -VALUES -(@option_group_id_csgOpt, {localize}'Show Smart Groups on Demand'{/localize}, 1, 'showondemand', NULL, 0, 0, 1), -(@option_group_id_csgOpt, {localize}'Always Show Smart Groups'{/localize}, 2, 'alwaysshow', NULL, 0, 0, 2), -(@option_group_id_csgOpt, {localize}'Hide Smart Groups'{/localize}, 3, 'hide' , NULL, 0, 0, 3); - - -INSERT INTO civicrm_setting -(domain_id, contact_id, is_domain, group_name, name, value) -VALUES -({$domainID}, NULL, 1, 'CiviCRM Preferences', 'contact_smart_group_display', '{serialize}1{/serialize}'); - --- CRM-12665 remove options groups -DELETE cov, cog FROM civicrm_option_group cog -INNER JOIN civicrm_option_value cov ON cov.option_group_id = cog.id -WHERE cog.name IN ('grant_program_status', 'allocation_algorithm'); - --- CRM-12470 -UPDATE civicrm_financial_account -SET is_default = 1 -WHERE name IN ('Premiums', 'Banking Fees', 'Accounts Payable', 'Donation'); - -SELECT @option_group_id_arel := max(id) from civicrm_option_group where name = 'account_relationship'; -SELECT @option_group_id_fat := max(id) from civicrm_option_group where name = 'financial_account_type'; -SELECT @domainContactId := contact_id from civicrm_domain where id = {$domainID}; - --- for Accounts Receivable Account is -SELECT @option_value_rel_id_ar := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Accounts Receivable Account is'; -SELECT @arAccount := id FROM civicrm_financial_account WHERE name = 'accounts receivable'; -SELECT @arAccountEntity := financial_account_id FROM civicrm_entity_financial_account - WHERE account_relationship = @option_value_rel_id_ar AND entity_table = 'civicrm_financial_type' LIMIT 1; - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id_ar, IFNULL(@arAccount, @arAccountEntity) -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id_ar AND ceft.entity_table = 'civicrm_financial_type' -WHERE ceft.entity_id IS NULL; - --- for income account is -SELECT @option_value_rel_id := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Income Account is'; -SELECT @opval := value FROM civicrm_option_value WHERE name = 'Revenue' and option_group_id = @option_group_id_fat; - --- create FA if not exists with same name as financial type -INSERT INTO civicrm_financial_account (name, contact_id, financial_account_type_id, description, account_type_code, is_active) -SELECT cft.name, @domainContactId, @opval, cft.name as description, 'INC', 1 -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id AND ceft.entity_table = 'civicrm_financial_type' -LEFT JOIN civicrm_financial_account ca ON ca.name = cft.name -WHERE ceft.entity_id IS NULL AND ca.id IS NULL; - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id, ca.id -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id AND ceft.entity_table = 'civicrm_financial_type' -LEFT JOIN civicrm_financial_account ca ON ca.name = cft.name -WHERE ceft.entity_id IS NULL; - --- for cost of sales -SELECT @option_value_rel_id_cg := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Cost of Sales Account is'; -SELECT @opCost := value FROM civicrm_option_value WHERE name = 'Cost of Sales' and option_group_id = @option_group_id_fat; -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opCost; - --- CRM-13231 -INSERT IGNORE INTO civicrm_financial_account (id, name, contact_id, financial_account_type_id, description, account_type_code, accounting_code, is_active, is_default) -VALUES (@financialAccountId, 'Premiums', @domainContactId, @opCost, 'Account to record cost of premiums provided to payors', 'COGS', '5100', 1, 1); - -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opCost; - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id_cg, @financialAccountId -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id_cg AND ceft.entity_table = 'civicrm_financial_type' -WHERE ceft.entity_id IS NULL; - --- for Expense Account is -SELECT @option_value_rel_id_exp := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Expense Account is'; -SELECT @opexp := value FROM civicrm_option_value WHERE name = 'Expenses' and option_group_id = @option_group_id_fat; -SET @financialAccountId := ''; -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opexp; - --- CRM-13231 -INSERT IGNORE INTO civicrm_financial_account (id, name, contact_id, financial_account_type_id, description, account_type_code, accounting_code, is_active, is_default) -VALUES (@financialAccountId, 'Banking Fees', @domainContactId, @opexp, 'Payment processor fees and manually recorded banking fees', 'EXP', '5200', 1, 1); - -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opexp; - - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id_exp, @financialAccountId -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id_exp AND ceft.entity_table = 'civicrm_financial_type' -WHERE ceft.entity_id IS NULL; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.5.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.5.mysql.tpl deleted file mode 100644 index bac8a19058..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.5.mysql.tpl +++ /dev/null @@ -1,11 +0,0 @@ -{* file to handle db changes in 4.3.5 during upgrade*} -{include file='../CRM/Upgrade/4.3.5.msg_template/civicrm_msg_template.tpl'} --- CRM-12799 -DROP TABLE IF EXISTS civicrm_payment; - --- CRM-12929 - -INSERT INTO civicrm_setting -(domain_id, contact_id, is_domain, group_name, name, value) -VALUES -({$domainID}, NULL, 1, 'CiviCRM Preferences', 'allowPermDeleteFinancial', '{serialize}0{/serialize}'); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.6.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.6.mysql.tpl deleted file mode 100644 index e693e84752..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.6.mysql.tpl +++ /dev/null @@ -1,96 +0,0 @@ -{* file to handle db changes in 4.3.6 during upgrade *} --- CRM-13060 -UPDATE civicrm_price_set_entity cpse -LEFT JOIN civicrm_price_set cps ON cps.id = cpse.price_set_id -LEFT JOIN civicrm_price_field cpf ON cps.id = cpf.price_set_id -LEFT JOIN civicrm_price_field_value cpfv ON cpf.id = cpfv.price_field_id -LEFT JOIN civicrm_event ce ON cpse.entity_id = ce.id AND cpse.entity_table = 'civicrm_event' -LEFT JOIN civicrm_contribution_page ccg ON cpse.entity_id = ccg.id AND cpse.entity_table = 'civicrm_contribution_page' -SET cpfv.financial_type_id = CASE - WHEN ce.id IS NOT NULL - THEN ce.financial_type_id - WHEN ccg.id IS NOT NULL - THEN ccg.financial_type_id -END, -cps.financial_type_id = CASE - WHEN ce.id IS NOT NULL - THEN ce.financial_type_id - WHEN ccg.id IS NOT NULL - THEN ccg.financial_type_id -END -WHERE cps.is_quick_config = 1; - --- CRM-12844 --- DELETE bad data -DELETE cli FROM `civicrm_contribution` cc -LEFT JOIN civicrm_line_item cli ON cli.entity_id = cc.id -LEFT JOIN civicrm_financial_item cfi ON cfi.entity_id = cli.id AND cfi.entity_table = 'civicrm_line_item' -LEFT JOIN civicrm_price_field cpf ON cpf.id = cli.price_field_id -LEFT JOIN civicrm_price_set cps ON cps.id = cpf.price_set_id -WHERE cc.contribution_recur_id IS NOT NULL -AND cli.entity_table = 'civicrm_contribution' AND cfi.id IS NULL -AND cps.is_quick_config = 1; - --- Set from_financial_account_id to null -UPDATE `civicrm_contribution` cc -LEFT JOIN civicrm_entity_financial_trxn ceft ON ceft.entity_id = cc.id -LEFT JOIN civicrm_financial_trxn cft ON cft.id = ceft.financial_trxn_id -LEFT JOIN civicrm_entity_financial_trxn ceft1 ON ceft1.financial_trxn_id = ceft.financial_trxn_id -LEFT JOIN civicrm_financial_item cfi ON cfi.id = ceft1.entity_id -LEFT JOIN civicrm_entity_financial_account cefa ON cefa.entity_id = cft.payment_processor_id -SET cft.from_financial_account_id = NULL -WHERE ceft.entity_table = 'civicrm_contribution' AND cc.contribution_recur_id IS NOT NULL -AND ceft1.entity_table = 'civicrm_financial_item' AND cft.id IS NOT NULL AND cft.payment_instrument_id = 1 AND cfi.entity_table = 'civicrm_line_item' AND cft.from_financial_account_id IS NOT NULL -AND cefa.entity_table = 'civicrm_payment_processor' AND cefa.financial_account_id = cft.to_financial_account_id; - --- CRM-13096 -DROP TABLE IF EXISTS civicrm_official_receipt; - --- CRM-13231 -SELECT @option_group_id_arel := max(id) from civicrm_option_group where name = 'account_relationship'; -SELECT @option_group_id_fat := max(id) from civicrm_option_group where name = 'financial_account_type'; -SELECT @opexp := value FROM civicrm_option_value WHERE name = 'Expenses' and option_group_id = @option_group_id_fat; -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opexp; -SELECT @domainContactId := contact_id from civicrm_domain where id = {$domainID}; - -SELECT @option_value_rel_id_exp := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Expense Account is'; - -INSERT IGNORE INTO civicrm_financial_account (id, name, contact_id, financial_account_type_id, description, account_type_code, accounting_code, is_active, is_default) -VALUES (@financialAccountId, 'Banking Fees', @domainContactId, @opexp, 'Payment processor fees and manually recorded banking fees', 'EXP', '5200', 1, 1); - -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opexp; - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id_exp, @financialAccountId -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id_exp AND ceft.entity_table = 'civicrm_financial_type' -WHERE ceft.entity_id IS NULL; - -UPDATE civicrm_financial_trxn cft -INNER JOIN civicrm_entity_financial_trxn ceft ON ceft.financial_trxn_id = cft .id -INNER JOIN civicrm_entity_financial_trxn ceft1 ON ceft1.financial_trxn_id = cft .id -INNER JOIN civicrm_financial_item cfi ON cfi.id = ceft1.entity_id -INNER JOIN civicrm_contribution cc ON cc.id = ceft.entity_id -INNER JOIN civicrm_entity_financial_account cefa ON cefa.entity_id = cc.financial_type_id -SET cft.to_financial_account_id = cefa.financial_account_id -WHERE ceft.entity_table = 'civicrm_contribution' AND ceft1.entity_table = 'civicrm_financial_item' AND cfi.entity_table = 'civicrm_financial_trxn' AND cft.to_financial_account_id IS NULL AND cefa.entity_table = 'civicrm_financial_type' AND cefa.account_relationship = @option_value_rel_id_exp; - --- Add COGS account relationship -SELECT @option_value_rel_id_cg := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Cost of Sales Account is'; -SELECT @opCost := value FROM civicrm_option_value WHERE name = 'Cost of Sales' and option_group_id = @option_group_id_fat; -SET @financialAccountId := ''; -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opCost; - --- CRM-13231 -INSERT IGNORE INTO civicrm_financial_account (id, name, contact_id, financial_account_type_id, description, account_type_code, accounting_code, is_active, is_default) -VALUES (@financialAccountId, 'Premiums', @domainContactId, @opCost, 'Account to record cost of premiums provided to payors', 'COGS', '5100', 1, 1); - -SELECT @financialAccountId := id FROM civicrm_financial_account WHERE is_default = 1 and financial_account_type_id = @opCost; - -INSERT INTO civicrm_entity_financial_account(entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_financial_type', cft.id, @option_value_rel_id_cg, @financialAccountId -FROM civicrm_financial_type cft -LEFT JOIN civicrm_entity_financial_account ceft -ON ceft.entity_id = cft.id AND ceft.account_relationship = @option_value_rel_id_cg AND ceft.entity_table = 'civicrm_financial_type' -WHERE ceft.entity_id IS NULL; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.7.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.7.mysql.tpl deleted file mode 100644 index 4892128d49..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.7.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 4.3.7 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.8.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.8.mysql.tpl deleted file mode 100644 index c37ba06ff7..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.8.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 4.3.8 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.9.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.9.mysql.tpl deleted file mode 100644 index 39dec10fb2..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.9.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 4.3.9 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha1.mysql.tpl deleted file mode 100644 index 5fe6f42fc2..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha1.mysql.tpl +++ /dev/null @@ -1,876 +0,0 @@ -{include file='../CRM/Upgrade/4.3.alpha1.msg_template/civicrm_msg_template.tpl'} - --- CRM-10999 -ALTER TABLE `civicrm_premiums` -ADD COLUMN `premiums_nothankyou_position` int(10) unsigned DEFAULT '1'; - --- CRM-11514 if contribution type name is null, assign it a name -UPDATE civicrm_contribution_type -SET name = CONCAT('Unknown_', id) -WHERE name IS NULL OR TRIM(name) = ''; - --- CRM-8507 -ALTER TABLE civicrm_custom_field - ADD UNIQUE INDEX `UI_name_custom_group_id` (`name`, `custom_group_id`); - ---CRM-10473 Added Missing Provinces of Ningxia Autonomous Region of China -INSERT INTO `civicrm_state_province`(`country_id`, `abbreviation`, `name`) VALUES -(1045, 'YN', 'Yinchuan'), -(1045, 'SZ', 'Shizuishan'), -(1045, 'WZ', 'Wuzhong'), -(1045, 'GY', 'Guyuan'), -(1045, 'ZW', 'Zhongwei'); - --- CRM-10553 -ALTER TABLE civicrm_contact - ADD COLUMN `created_date` timestamp NULL DEFAULT NULL - COMMENT 'When was the contact was created.'; -ALTER TABLE civicrm_contact - ADD COLUMN `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - COMMENT 'When was the contact (or closely related entity) was created or modified or deleted.'; - --- CRM-10296 -DELETE FROM civicrm_job WHERE `api_action` = 'process_membership_reminder_date'; -ALTER TABLE civicrm_membership DROP COLUMN reminder_date; -ALTER TABLE civicrm_membership_log DROP COLUMN renewal_reminder_date; -ALTER TABLE civicrm_membership_type - DROP COLUMN renewal_reminder_day, - DROP FOREIGN KEY FK_civicrm_membership_type_renewal_msg_id, - DROP INDEX FK_civicrm_membership_type_renewal_msg_id, - DROP COLUMN renewal_msg_id, - DROP COLUMN autorenewal_msg_id; - --- CRM-10738 -ALTER TABLE civicrm_msg_template - CHANGE msg_text msg_text LONGTEXT NULL COMMENT 'Text formatted message', - CHANGE msg_html msg_html LONGTEXT NULL COMMENT 'HTML formatted message'; - --- CRM-10860 -ALTER TABLE civicrm_contribution_page ADD COLUMN is_recur_installments tinyint(4) DEFAULT '0'; -UPDATE civicrm_contribution_page SET is_recur_installments='1'; - --- CRM-10863 -SELECT @country_id := id from civicrm_country where name = 'Luxembourg' AND iso_code = 'LU'; -INSERT IGNORE INTO `civicrm_state_province`(`country_id`, `abbreviation`, `name`) VALUES -(@country_id, 'L', 'Luxembourg'); - --- CRM-10899 and CRM-10999 -{if $multilingual} - {foreach from=$locales item=locale} - UPDATE civicrm_option_group SET title_{$locale} = '{ts escape="sql"}Currencies Enabled{/ts}' WHERE name = "currencies_enabled"; - ALTER TABLE `civicrm_premiums` - ADD COLUMN premiums_nothankyou_label_{$locale} varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Label displayed for No Thank-you option in premiums block (e.g. No thank you)'; - {/foreach} -{else} - UPDATE civicrm_option_group SET title = '{ts escape="sql"}Currencies Enabled{/ts}' WHERE name = "currencies_enabled"; -{/if} - --- CRM-11047 -ALTER TABLE civicrm_job DROP COLUMN api_prefix; - --- CRM-11068, CRM-10678, CRM-11759 -ALTER TABLE civicrm_group - ADD refresh_date datetime default NULL COMMENT 'Date and time when we need to refresh the cache next.' AFTER `cache_date`, - ADD COLUMN `created_id` INT(10) unsigned DEFAULT NULL COMMENT 'FK to contact table, creator of the group.'; - --- CRM-11759 -ALTER TABLE civicrm_group - ADD CONSTRAINT `FK_civicrm_group_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL; - -INSERT INTO `civicrm_job` - ( domain_id, run_frequency, last_run, name, description, api_entity, api_action, parameters, is_active ) -VALUES - ( {$domainID}, 'Always' , NULL, '{ts escape="sql" skip="true"}Rebuild Smart Group Cache{/ts}', '{ts escape="sql" skip="true"}Rebuilds the smart group cache.{/ts}', 'job', 'group_rebuild', '{ts escape="sql" skip="true"}limit=Number optional-Limit the number of smart groups rebuild{/ts}', 0), - ( {$domainID}, 'Daily' , NULL, '{ts escape="sql" skip="true"}Validate Email Address from Mailings.{/ts}', '{ts escape="sql" skip="true"}Updates the reset_date on an email address to indicate that there was a valid delivery to this email address.{/ts}', 'mailing', 'update_email_resetdate', '{ts escape="sql" skip="true"}minDays, maxDays=Consider mailings that have completed between minDays and maxDays{/ts}', 0); - --- CRM-11117 -INSERT IGNORE INTO `civicrm_setting` (`group_name`, `name`, `value`, `domain_id`, `is_domain`) VALUES ('CiviCRM Preferences', 'activity_assignee_notification_ics', 's:1:"0";', {$domainID}, '1'); - --- CRM-10885 -ALTER TABLE civicrm_dedupe_rule_group - ADD used enum('Unsupervised','Supervised','General') COLLATE utf8_unicode_ci NOT NULL COMMENT 'Whether the rule should be used for cases where usage is Unsupervised, Supervised OR General(programatically)' AFTER threshold; - -UPDATE civicrm_dedupe_rule_group - SET used = 'General' WHERE is_default = 0; - -UPDATE civicrm_dedupe_rule_group - SET used = CASE level - WHEN 'Fuzzy' THEN 'Supervised' - WHEN 'Strict' THEN 'Unsupervised' - END -WHERE is_default = 1; - -UPDATE civicrm_dedupe_rule_group - SET name = CONCAT_WS('', `contact_type`, `used`) -WHERE is_default = 1 OR is_reserved = 1; - -UPDATE civicrm_dedupe_rule_group - SET title = 'Name and Email' -WHERE contact_type IN ('Organization', 'Household') AND used IN ('Unsupervised', 'Supervised'); - -UPDATE civicrm_dedupe_rule_group - SET title = CASE used - WHEN 'Supervised' THEN 'Name and Email (reserved)' - WHEN 'Unsupervised' THEN 'Email (reserved)' - WHEN 'General' THEN 'Name and Address (reserved)' - END -WHERE contact_type = 'Individual' AND is_reserved = 1; - -ALTER TABLE civicrm_dedupe_rule_group DROP COLUMN level; - --- CRM-10771 -ALTER TABLE civicrm_uf_field - ADD `is_multi_summary` tinyint(4) DEFAULT '0' COMMENT 'Include in multi-record listing?'; - --- CRM-1115 --- note that country names are not translated in the DB -SELECT @region_id := max(id) from civicrm_worldregion where name = "Europe and Central Asia"; -INSERT IGNORE INTO civicrm_country (name,iso_code,region_id,is_province_abbreviated) VALUES("Kosovo", "XK", @region_id, 0); - -UPDATE civicrm_country SET name = 'Libya' WHERE name LIKE 'Libyan%'; -UPDATE civicrm_country SET name = 'Congo, Republic of the' WHERE name = 'Congo'; - --- CRM-10621 Add component report links to reports menu for upgrade -SELECT @reportlastID := MAX(id) FROM civicrm_navigation where name = 'Reports' AND domain_id = {$domainID}; -SELECT @max_weight := MAX(ROUND(weight)) from civicrm_navigation WHERE parent_id = @reportlastID; - -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=99&reset=1', '{ts escape="sql" skip="true"}Contact Reports{/ts}', 'Contact Reports', 'administer CiviCRM', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1) ); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=2&reset=1', '{ts escape="sql" skip="true"}Contribution Reports{/ts}', 'Contribution Reports', 'access CiviContribute', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1) ); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=6&reset=1', '{ts escape="sql" skip="true"}Pledge Reports{/ts}', 'Pledge Reports', 'access CiviPledge', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1) ); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=1&reset=1', '{ts escape="sql" skip="true"}Event Reports{/ts}', 'Event Reports', 'access CiviEvent', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1)); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=4&reset=1', '{ts escape="sql" skip="true"}Mailing Reports{/ts}', 'Mailing Reports', 'access CiviMail', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1)); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=3&reset=1', '{ts escape="sql" skip="true"}Membership Reports{/ts}', 'Membership Reports', 'access CiviMember', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1)); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=9&reset=1', '{ts escape="sql" skip="true"}Campaign Reports{/ts}', 'Campaign Reports', 'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts', 'OR', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1)); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=7&reset=1', '{ts escape="sql" skip="true"}Case Reports{/ts}', 'Case Reports', 'access my cases and activities,access all cases and activities,administer CiviCase', 'OR', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1) ); -INSERT INTO civicrm_navigation - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/report/list&compid=5&reset=1', '{ts escape="sql" skip="true"}Grant Reports{/ts}', 'Grant Reports', 'access CiviGrant', '', @reportlastID, '1', 0, (SELECT @max_weight := @max_weight+1) ); - --- CRM-11148 Multiple terms membership signup and renewal via price set -ALTER TABLE `civicrm_price_field_value` ADD COLUMN `membership_num_terms` INT(10) NULL DEFAULT NULL COMMENT 'Maximum number of related memberships.' AFTER `membership_type_id`; - --- CRM-11070 -SELECT @option_group_id_tuf := max(id) from civicrm_option_group where name = 'tag_used_for'; -SELECT @weight := MAX(weight) FROM civicrm_option_value WHERE option_group_id = @option_group_id_tuf; - -INSERT INTO -`civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`) -VALUES -(@option_group_id_tuf, {localize}'Attachments'{/localize}, 'civicrm_file', 'Attachments', NULL, 0, 0, @weight = @weight + 1); - -ALTER TABLE civicrm_extension MODIFY COLUMN type ENUM( 'payment', 'search', 'report', 'module','sms') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ; - --- CRM-9914 -SELECT @option_group_id_sms_provider_name := max(id) from civicrm_option_group where name = 'sms_provider_name'; -DELETE FROM civicrm_option_value WHERE option_group_id = @option_group_id_sms_provider_name AND name = 'Clickatell'; - --- CRM-11292 -ALTER TABLE `civicrm_phone` -ADD `phone_numeric` varchar(32) -COMMENT 'Phone number stripped of all whitespace, letters, and punctuation.' -AFTER `phone_ext`, -ADD INDEX phone_numeric_index(`phone_numeric`); - - --- civiaccounts upgrade - --- ADD fields w.r.t 10.6 mwb -ALTER TABLE `civicrm_financial_account` -CHANGE `account_type_id` financial_account_type_id int(10) unsigned NOT NULL DEFAULT '3' COMMENT 'Version identifier of financial_type', -ADD `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Financial Type Description.', -ADD `parent_id` int(10) unsigned DEFAULT NULL COMMENT 'Parent ID in account hierarchy', -ADD `is_header_account` tinyint(4) DEFAULT NULL COMMENT 'Is this a header account which does not allow transactions to be posted against it directly, but only to its sub-accounts?', -ADD `accounting_code` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Optional value for mapping monies owed and received to accounting system codes.', -ADD `account_type_code` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Optional value for mapping account types to accounting system account categories (QuickBooks Account Type Codes for example).', -ADD `is_deductible` tinyint(4) DEFAULT '1' COMMENT 'Is this account tax-deductible?', -ADD `is_tax` tinyint(4) DEFAULT '0' COMMENT 'Is this account for taxes?', -ADD `tax_rate` decimal(9,8) DEFAULT '0.00' COMMENT 'The percentage of the total_amount that is due for this tax.', -ADD `is_reserved` tinyint(4) DEFAULT NULL COMMENT 'Is this a predefined system object?', -ADD `is_active` tinyint(4) DEFAULT NULL COMMENT 'Is this property active?', -ADD `is_default` tinyint(4) DEFAULT NULL COMMENT 'Is this account the default one (or default tax one) for its financial_account_type?', -ADD CONSTRAINT `UI_name` UNIQUE INDEX (`name`), -ADD CONSTRAINT `FK_civicrm_financial_account_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_financial_account`(id); - --- CRM-8425 --- Rename table civicrm_contribution_type to civicrm_financial_type -RENAME TABLE `civicrm_contribution_type` TO `civicrm_financial_type`; - -ALTER TABLE `civicrm_financial_type` -CHANGE `name` `name` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Financial Type Name.', -ADD CONSTRAINT `UI_id` UNIQUE INDEX(id), -DROP INDEX UI_name; - -CREATE TABLE IF NOT EXISTS `civicrm_entity_financial_account` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', - `entity_table` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Links to an entity_table like civicrm_financial_type', - `entity_id` int(10) unsigned NOT NULL COMMENT 'Links to an id in the entity_table, such as vid in civicrm_financial_type', - `account_relationship` int(10) unsigned NOT NULL COMMENT 'FK to a new civicrm_option_value (account_relationship)', - `financial_account_id` int(10) unsigned NOT NULL COMMENT 'FK to the financial_account_id', - PRIMARY KEY (`id`), -KEY `FK_civicrm_entity_financial_account_financial_account_id` (`financial_account_id`) -)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - --- Constraints for table `civicrm_entity_financial_account` - ALTER TABLE `civicrm_entity_financial_account` - ADD CONSTRAINT `FK_civicrm_entity_financial_account_financial_account_id` FOREIGN KEY (`financial_account_id`) REFERENCES `civicrm_financial_account` (`id`); - --- CRM-9730 Table structure for table `civicrm_financial_item` --- - -CREATE TABLE IF NOT EXISTS `civicrm_financial_item` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time the item was created', - `transaction_date` datetime NOT NULL COMMENT 'Date and time of the source transaction', - `contact_id` int(10) unsigned NOT NULL COMMENT 'FK to Contact ID of contact the item is from', - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Human readable description of this item, to ease display without lookup of source item.', - `amount` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT 'Total amount of this item', - `currency` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Currency for the amount', - `financial_account_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to civicrm_financial_account', - `status_id` int(10) unsigned DEFAULT NULL COMMENT 'Payment status: test, paid, part_paid, unpaid (if empty assume unpaid)', - `entity_table` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The table providing the source of this item such as civicrm_line_item', - `entity_id` int(10) unsigned DEFAULT NULL COMMENT 'The specific source item that is responsible for the creation of this financial_item', - PRIMARY KEY (`id`), - UNIQUE KEY `UI_id` (`id`), - KEY `IX_created_date` (`created_date`), - KEY `IX_transaction_date` (`transaction_date`), - KEY `IX_entity` (`entity_table`,`entity_id`), - KEY `FK_civicrm_financial_item_contact_id` (`contact_id`), - KEY `FK_civicrm_financial_item_financial_account_id` (`financial_account_id`) -)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -ALTER TABLE `civicrm_batch` -ADD `payment_instrument_id` int(10) unsigned DEFAULT NULL COMMENT 'fk to Payment Instrument options in civicrm_option_values', -ADD `exported_date` datetime DEFAULT NULL; - -ALTER TABLE `civicrm_financial_item` - ADD CONSTRAINT `FK_civicrm_financial_item_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`), - ADD CONSTRAINT `FK_civicrm_financial_item_financial_account_id` FOREIGN KEY (`financial_account_id`) REFERENCES `civicrm_financial_account` (`id`); - -ALTER TABLE `civicrm_entity_financial_trxn` -DROP currency; - --- CRM-12312 -UPDATE civicrm_event SET contribution_type_id = NULL WHERE contribution_type_id = 0; - --- CRM-9189 and CRM-8425 change fk's to financial_account.id in our branch that will need to be changed to an fk to financial_type.id - -ALTER TABLE `civicrm_pledge` -DROP FOREIGN KEY FK_civicrm_pledge_contribution_type_id, -DROP INDEX FK_civicrm_pledge_contribution_type_id; - -ALTER TABLE `civicrm_pledge` -CHANGE `contribution_type_id` `financial_type_id` int unsigned COMMENT 'FK to Financial Type'; - -ALTER TABLE `civicrm_pledge` -ADD CONSTRAINT FK_civicrm_pledge_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - -ALTER TABLE `civicrm_membership_type` -DROP FOREIGN KEY FK_civicrm_membership_type_contribution_type_id, -DROP INDEX FK_civicrm_membership_type_contribution_type_id; - -ALTER TABLE `civicrm_membership_type` -CHANGE `contribution_type_id` `financial_type_id` int unsigned NOT NULL COMMENT 'If membership is paid by a contribution - what financial type should be used. FK to civicrm_financial_type.id'; - -ALTER TABLE `civicrm_membership_type` -ADD CONSTRAINT FK_civicrm_membership_type_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - -ALTER TABLE `civicrm_price_set` -DROP FOREIGN KEY FK_civicrm_price_set_contribution_type_id, -DROP INDEX FK_civicrm_price_set_contribution_type_id; - -ALTER TABLE `civicrm_price_set` -CHANGE `contribution_type_id` `financial_type_id` int unsigned COMMENT 'If membership is paid by a contribution - what financial type should be used. FK to civicrm_financial_type.id'; - -ALTER TABLE `civicrm_price_set` -ADD CONSTRAINT FK_civicrm_price_set_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - -ALTER TABLE `civicrm_event` -CHANGE `contribution_type_id` `financial_type_id` int unsigned COMMENT 'Financial type assigned to paid event registrations for this event. Required if is_monetary is true.'; - -ALTER TABLE `civicrm_contribution` -DROP FOREIGN KEY FK_civicrm_contribution_contribution_type_id, -DROP INDEX FK_civicrm_contribution_contribution_type_id; - -ALTER TABLE `civicrm_contribution` -CHANGE `contribution_type_id` `financial_type_id` int unsigned COMMENT 'FK to Financial Type for (total_amount - non_deductible_amount).'; - -ALTER TABLE `civicrm_contribution` -ADD CONSTRAINT FK_civicrm_contribution_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - -ALTER TABLE `civicrm_contribution_page` -DROP FOREIGN KEY FK_civicrm_contribution_page_contribution_type_id, -DROP INDEX FK_civicrm_contribution_page_contribution_type_id; - -ALTER TABLE `civicrm_contribution_page` -CHANGE `contribution_type_id` `financial_type_id` int unsigned DEFAULT NULL COMMENT 'default financial type assigned to contributions submitted via this page, e.g. Contribution, Campaign Contribution', -ADD `is_partial_payment` tinyint(4) DEFAULT '0' COMMENT 'is partial payment enabled for this event', -ADD `min_initial_amount` decimal(20,2) DEFAULT NULL COMMENT 'Minimum initial amount for partial payment'; - -{if $multilingual} - {foreach from=$locales item=loc} - ALTER TABLE `civicrm_contribution_page` - ADD `initial_amount_label_{$loc}` varchar(255) COLLATE utf8_unicode_ci COMMENT 'Initial amount label for partial payment', - ADD `initial_amount_help_text_{$loc}` text COLLATE utf8_unicode_ci COMMENT 'Initial amount help text for partial payment'; - {/foreach} -{else} - ALTER TABLE `civicrm_contribution_page` - ADD `initial_amount_label` varchar(255) COLLATE utf8_unicode_ci COMMENT 'Initial amount label for partial payment', - ADD `initial_amount_help_text` text COLLATE utf8_unicode_ci COMMENT 'Initial amount help text for partial payment'; -{/if} - -ALTER TABLE `civicrm_contribution_page` -ADD CONSTRAINT FK_civicrm_contribution_page_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - -ALTER TABLE `civicrm_contribution_recur` -CHANGE `contribution_type_id` `financial_type_id` int unsigned COMMENT 'FK to Financial Type'; - -ALTER TABLE `civicrm_contribution_recur` -ADD CONSTRAINT FK_civicrm_contribution_recur_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES civicrm_financial_type (id); - --- CRM-9083 -ALTER TABLE `civicrm_financial_trxn` CHANGE `to_account_id` `to_financial_account_id` int unsigned COMMENT 'FK to financial_financial_account table.', -CHANGE `from_account_id` `from_financial_account_id` int unsigned COMMENT 'FK to financial_account table.', -ADD `status_id` int(10) unsigned DEFAULT NULL, -CHANGE `trxn_id` trxn_id varchar(255) COMMENT 'unique processor transaction id, bank id + trans id,... depending on payment_method', -CHANGE `trxn_date` trxn_date datetime DEFAULT NULL, -ADD `payment_instrument_id` int unsigned DEFAULT NULL COMMENT 'FK to payment_instrument option group values', -ADD `check_number` VARCHAR( 255 ) NULL DEFAULT NULL, -ADD INDEX `UI_ftrxn_check_number` (`check_number`), -ADD INDEX `UI_ftrxn_payment_instrument_id` (`payment_instrument_id`); - -ALTER TABLE `civicrm_financial_trxn` -ADD CONSTRAINT FK_civicrm_financial_trxn_to_financial_account_id FOREIGN KEY (`to_financial_account_id`) REFERENCES civicrm_financial_account (id), -ADD CONSTRAINT FK_civicrm_financial_trxn_from_financial_account_id FOREIGN KEY (`from_financial_account_id`) REFERENCES civicrm_financial_account (id); - -ALTER TABLE `civicrm_financial_trxn` ADD `payment_processor_id` int unsigned COMMENT 'Payment Processor for this contribution Page'; - --- Fill in the payment_processor_id based on a lookup using the payment_processor field -UPDATE `civicrm_payment_processor` cppt, `civicrm_financial_trxn` cft -SET cft.`payment_processor_id` = cppt.`id` -WHERE cft.`payment_processor` = cppt.`payment_processor_type` and `is_test` = 0; - --- remove payment_processor field -ALTER TABLE `civicrm_financial_trxn` DROP `payment_processor`; - -ALTER TABLE `civicrm_financial_trxn` - ADD CONSTRAINT `FK_civicrm_financial_trxn_payment_processor_id` FOREIGN KEY (`payment_processor_id`) REFERENCES `civicrm_payment_processor` (`id`) ON DELETE SET NULL; - --- Drop index for civicrm_financial_trxn.trxn_id and set default to null -ALTER TABLE `civicrm_financial_trxn` CHANGE `trxn_id` `trxn_id` varchar( 255 ) DEFAULT NULL ; -ALTER TABLE `civicrm_financial_trxn` DROP INDEX UI_ft_trxn_id; - --- remove trxn_type field -ALTER TABLE `civicrm_financial_trxn` DROP `trxn_type`; - --- CRM-9731 - -ALTER TABLE `civicrm_payment_processor` ADD `payment_processor_type_id` int(10) unsigned NULL AFTER `description`, -ADD CONSTRAINT `FK_civicrm_payment_processor_payment_processor_type_id` FOREIGN KEY (`payment_processor_type_id`) REFERENCES `civicrm_payment_processor_type` (`id`); - -UPDATE `civicrm_payment_processor` , `civicrm_payment_processor_type` -SET payment_processor_type_id = `civicrm_payment_processor_type`.id -WHERE payment_processor_type = `civicrm_payment_processor_type`.name; - -ALTER TABLE `civicrm_payment_processor` DROP `payment_processor_type`; - --- CRM-9730 -ALTER TABLE `civicrm_price_field_value` ADD `deductible_amount` DECIMAL( 20, 2 ) NOT NULL DEFAULT '0.00' COMMENT 'Tax-deductible portion of the amount'; - -ALTER TABLE `civicrm_line_item` ADD `deductible_amount` DECIMAL( 20, 2 ) NOT NULL DEFAULT '0.00' COMMENT 'Tax-deductible portion of the amount'; - -ALTER TABLE `civicrm_price_field_value` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', - ADD CONSTRAINT `FK_civicrm_price_field_value_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - -ALTER TABLE `civicrm_line_item` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', - ADD CONSTRAINT `FK_civicrm_line_item_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - -ALTER TABLE `civicrm_grant` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', - ADD CONSTRAINT `FK_civicrm_grant_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - -ALTER TABLE `civicrm_product` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', -ADD CONSTRAINT `FK_civicrm_product_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - -ALTER TABLE `civicrm_premiums_product` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', -ADD CONSTRAINT `FK_civicrm_premiums_product_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - -ALTER TABLE `civicrm_contribution_product` ADD -`financial_type_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', -ADD CONSTRAINT `FK_civicrm_contribution_product_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type` (`id`); - --- CRM-11122 -ALTER TABLE `civicrm_discount` -DROP FOREIGN KEY FK_civicrm_discount_option_group_id, -DROP INDEX FK_civicrm_discount_option_group_id; - -ALTER TABLE `civicrm_discount` CHANGE `option_group_id` `price_set_id` INT( 10 ) UNSIGNED NOT NULL COMMENT 'FK to civicrm_price_set'; - -ALTER TABLE `civicrm_discount` - ADD CONSTRAINT `FK_civicrm_discount_price_set_id` FOREIGN KEY (`price_set_id`) REFERENCES `civicrm_price_set` (`id`) ON DELETE CASCADE; - --- CRM-8425 - -UPDATE civicrm_navigation SET `label` = 'Financial Types', `name` = 'Financial Types', `url` = 'civicrm/admin/financial/financialType?reset=1' WHERE `name` = 'Contribution Types'; - --- CRM-9199 --- Insert menu item at Administer > CiviContribute, below the section break below Premiums (Thank-you Gifts), just below Financial Account. - -SELECT @parent_id := id from `civicrm_navigation` where name = 'CiviContribute' AND domain_id = {$domainID}; -SELECT @add_weight_id := weight from `civicrm_navigation` where `name` = 'Financial Types' and `parent_id` = @parent_id; - -UPDATE `civicrm_navigation` -SET `weight` = `weight`+1 -WHERE `parent_id` = @parent_id -AND `weight` > @add_weight_id; - -INSERT INTO `civicrm_navigation` - ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ( {$domainID}, 'civicrm/admin/financial/financialAccount&reset=1', '{ts escape="sql" skip="true"}Financial Account{/ts}', 'Financial Account', 'access CiviContribute,administer CiviCRM', 'AND', @parent_id, '1', NULL, @add_weight_id + 1 ); - --- CRM-10944 -SELECT @contributionlastID := max(id) from civicrm_navigation where name = 'Contributions' AND domain_id = {$domainID}; - -SELECT @pledgeWeight := weight from civicrm_navigation where name = 'Pledges' and parent_id = @contributionlastID; - -UPDATE `civicrm_navigation` -SET `weight` = `weight`+1 -WHERE `parent_id` = @contributionlastID -AND `weight` > @pledgeWeight; - -INSERT INTO civicrm_navigation - (domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight) -VALUES - ({$domainID}, NULL, '{ts escape="sql" skip="true"}Accounting Batches{/ts}', 'Accounting Batches', 'access CiviContribute', '', @contributionlastID, '1', 1, @pledgeWeight+1); -SET @financialTransactionID:=LAST_INSERT_ID(); - -INSERT INTO civicrm_navigation - (domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) -VALUES - ({$domainID}, 'civicrm/financial/batch&reset=1&action=add', '{ts escape="sql" skip="true"}New Batch{/ts}', 'New Batch', 'access CiviContribute', 'AND', @financialTransactionID, '1', NULL, 1), - ({$domainID}, 'civicrm/financial/financialbatches?reset=1&batchStatus=1', '{ts escape="sql" skip="true"}Open Batches{/ts}', 'Open Batches', 'access CiviContribute', 'AND', @financialTransactionID, '1', NULL, 2), - ({$domainID}, 'civicrm/financial/financialbatches?reset=1&batchStatus=2', '{ts escape="sql" skip="true"}Closed Batches{/ts}', 'Closed Batches', 'access CiviContribute', 'AND', @financialTransactionID, '1', NULL, 3), - ({$domainID}, 'civicrm/financial/financialbatches?reset=1&batchStatus=5', '{ts escape="sql" skip="true"}Exported Batches{/ts}', 'Exported Batches', 'access CiviContribute', 'AND', @financialTransactionID, '1', NULL, 4); - --- Insert an entry for financial_account_type in civicrm_option_group and for the the following financial account types in civicrm_option_value as per CRM-8425 -INSERT INTO - `civicrm_option_group` (`name`, {localize field='title'}title{/localize}, `is_reserved`, `is_active`) -VALUES - ('financial_account_type', {localize}'{ts escape="sql"}Financial Account Type{/ts}'{/localize}, 1, 1), - ('account_relationship', {localize}'{ts escape="sql"}Account Relationship{/ts}'{/localize}, 1, 1), - ('financial_item_status', {localize}'{ts escape="sql"}Financial Item Status{/ts}'{/localize}, 1, 1), - ('batch_mode', {localize}'{ts escape="sql"}Batch Mode{/ts}'{/localize}, 1, 1); - -SELECT @option_group_id_fat := max(id) from civicrm_option_group where name = 'financial_account_type'; -SELECT @option_group_id_arel := max(id) from civicrm_option_group where name = 'account_relationship'; -SELECT @option_group_id_financial_item_status := max(id) from civicrm_option_group where name = 'financial_item_status'; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, {localize field='description'}`description`{/localize}, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) -VALUES - (@option_group_id_fat, {localize}'{ts escape="sql"}Asset{/ts}'{/localize}, 1, 'Asset', NULL, 0, 0, 1, {localize}'Things you own'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_fat, {localize}'{ts escape="sql"}Liability{/ts}'{/localize}, 2, 'Liability', NULL, 0, 0, 2, {localize}'Things you own, like a grant still to be disbursed'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_fat, {localize}'{ts escape="sql"}Revenue{/ts}'{/localize}, 3, 'Revenue', NULL, 0, 1, 3, {localize}'Income from contributions and sales of tickets and memberships'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_fat, {localize}'{ts escape="sql"}Cost of Sales{/ts}'{/localize}, 4, 'Cost of Sales', NULL, 0, 0, 4, {localize}'Costs incurred to get revenue, e.g. premiums for donations, dinner for a fundraising dinner ticket'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_fat, {localize}'{ts escape="sql"}Expenses{/ts}'{/localize}, 5, 'Expenses', NULL, 0, 0, 5, {localize}'Things that are paid for that are consumable, e.g. grants disbursed'{/localize}, 0, 1, 1, 2, NULL), - --- Financial account relationship - (@option_group_id_arel, {localize}'{ts escape="sql"}Income Account is{/ts}'{/localize}, 1, 'Income Account is', NULL, 0, 1, 1, {localize}'Income Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Credit/Contra Account is{/ts}'{/localize}, 2, 'Credit/Contra Account is', NULL, 0, 0, 2, {localize}'Credit/Contra Account is'{/localize}, 0, 1, 0, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Accounts Receivable Account is{/ts}'{/localize}, 3, 'Accounts Receivable Account is', NULL, 0, 0, 3, {localize}'Accounts Receivable Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Credit Liability Account is{/ts}'{/localize}, 4, 'Credit Liability Account is', NULL, 0, 0, 4, {localize}'Credit Liability Account is'{/localize}, 0, 1, 0, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Expense Account is{/ts}'{/localize}, 5, 'Expense Account is', NULL, 0, 0, 5, {localize}'Expense Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Asset Account is{/ts}'{/localize}, 6, 'Asset Account is', NULL, 0, 0, 6, {localize}'Asset Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Cost of Sales Account is{/ts}'{/localize}, 7, 'Cost of Sales Account is', NULL, 0, 0, 7, {localize}'Cost of Sales Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Premiums Inventory Account is{/ts}'{/localize}, 8, 'Premiums Inventory Account is', NULL, 0, 0, 8, {localize}'Premiums Inventory Account is'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_arel, {localize}'{ts escape="sql"}Discounts Account is{/ts}'{/localize}, 9, 'Discounts Account is', NULL, 0, 0, 9, {localize}'Discounts Account is'{/localize}, 0, 1, 1, 2, NULL), - --- Financial Item Status - (@option_group_id_financial_item_status, {localize}'{ts escape="sql"}Paid{/ts}'{/localize}, 1, 'Paid', NULL, 0, 0, 1, {localize}'Paid'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_financial_item_status, {localize}'{ts escape="sql"}Partially paid{/ts}'{/localize}, 2, 'Partially paid', NULL, 0, 0, 2, {localize}'Partially paid'{/localize}, 0, 1, 1, 2, NULL), - (@option_group_id_financial_item_status, {localize}'{ts escape="sql"}Unpaid{/ts}'{/localize}, 3, 'Unpaid', NULL, 0, 0, 1, {localize}'Unpaid'{/localize}, 0, 1, 1, 2, NULL); - --- Data migration from civicrm_contibution_type to civicrm_financial_account, civicrm_financial_type, civicrm_entity_financial_account -SELECT @opval := value FROM civicrm_option_value WHERE name = 'Revenue' and option_group_id = @option_group_id_fat; -SELECT @domainContactId := contact_id from civicrm_domain where id = {$domainID}; - -INSERT INTO `civicrm_financial_account` - (`id`, `name`, `description`, `is_deductible`, `is_reserved`, `is_active`, `financial_account_type_id`, `contact_id`, accounting_code) - SELECT id, name, CONCAT('Default account for ', name), is_deductible, is_reserved, is_active, @opval, @domainContactId, accounting_code - FROM `civicrm_financial_type`; - --- CRM-9306 and CRM-11657 -UPDATE `civicrm_financial_account` SET `is_default` = 0, `account_type_code` = 'INC'; - -SELECT @option_value_rel_id := value FROM `civicrm_option_value` WHERE `option_group_id` = @option_group_id_arel AND `name` = 'Income Account is'; -SELECT @opexp := value FROM civicrm_option_value WHERE name = 'Expenses' and option_group_id = @option_group_id_fat; -SELECT @opAsset := value FROM civicrm_option_value WHERE name = 'Asset' and option_group_id = @option_group_id_fat; -SELECT @opLiability := value FROM civicrm_option_value WHERE name = 'Liability' and option_group_id = @option_group_id_fat; -SELECT @opCost := value FROM civicrm_option_value WHERE name = 'Cost of Sales' and option_group_id = @option_group_id_fat; - --- CRM-11522 drop accounting_code after coping its values into financial_account -ALTER TABLE civicrm_financial_type DROP accounting_code; - -INSERT INTO - `civicrm_financial_account` (`name`, `contact_id`, `financial_account_type_id`, `description`, `accounting_code`, `account_type_code`, `is_reserved`, `is_active`, `is_deductible`, `is_default`) -VALUES - ('Banking Fees' , @domainContactId, @opexp, 'Payment processor fees and manually recorded banking fees', '5200', 'EXP', 0, 1, 0, 0), - ('Deposit Bank Account' , @domainContactId, @opAsset, 'All manually recorded cash and cheques go to this account', '1100', 'BANK', 0, 1, 0, 1), - ('Accounts Receivable' , @domainContactId, @opAsset, 'Amounts to be received later (eg pay later event revenues)', '1200', 'AR', 0, 1, 0, 0), - ('Accounts Payable' , @domainContactId, @opLiability, 'Amounts to be paid out such as grants and refunds', '2200', 'AP', 0, 1, 0, 0), - ('Premiums' , @domainContactId, @opCost, 'Account to record cost of premiums provided to payors', '5100', 'COGS', 0, 1, 0, 0), - ('Premiums Inventory' , @domainContactId, @opAsset, 'Account representing value of premiums inventory', '1375', 'OCASSET', 0, 1, 0, 0), - ('Discounts' , @domainContactId, @opval, 'Contra-revenue account for amounts discounted from sales', '4900', 'INC', 0, 1, 0, 0), - ('Payment Processor Account', @domainContactId, @opAsset, 'Account to record payments into a payment processor merchant account', '1150', 'BANK', 0, 1, 0, 0); - --- CRM-10926 -SELECT @option_value_rel_id_exp := value FROM `civicrm_option_value` WHERE `option_group_id` = @option_group_id_arel AND `name` = 'Expense Account is'; -SELECT @option_value_rel_id_ar := value FROM `civicrm_option_value` WHERE `option_group_id` = @option_group_id_arel AND `name` = 'Accounts Receivable Account is'; -SELECT @option_value_rel_id_as := value FROM `civicrm_option_value` WHERE `option_group_id` = @option_group_id_arel AND `name` = 'Asset Account is'; - -SELECT @financial_account_id_bf := max(id) FROM `civicrm_financial_account` WHERE `name` = 'Banking Fees'; -SELECT @financial_account_id_ap := max(id) FROM `civicrm_financial_account` WHERE `name` = 'Accounts Receivable'; - -INSERT INTO `civicrm_entity_financial_account` - ( entity_table, entity_id, account_relationship, financial_account_id ) -SELECT 'civicrm_financial_type', ft.id, @option_value_rel_id, fa.id -FROM `civicrm_financial_type` as ft LEFT JOIN `civicrm_financial_account` as fa ON ft.id = fa.id; - --- Banking Fees -INSERT INTO `civicrm_entity_financial_account` - ( entity_table, entity_id, account_relationship, financial_account_id ) -SELECT 'civicrm_financial_type', ft.id, @option_value_rel_id_exp, @financial_account_id_bf -FROM `civicrm_financial_type` as ft; - --- Accounts Receivable -INSERT INTO `civicrm_entity_financial_account` - ( entity_table, entity_id, account_relationship, financial_account_id ) -SELECT 'civicrm_financial_type', ft.id, @option_value_rel_id_ar, @financial_account_id_ap -FROM `civicrm_financial_type` as ft; - --- CRM-11516 -SELECT @financial_account_id_ar := max(id) FROM `civicrm_financial_account` WHERE `name` = 'Deposit Bank Account'; -SELECT @financial_account_id_pp := max(id) FROM `civicrm_financial_account` WHERE `name` = 'Payment Processor Account'; - -INSERT INTO civicrm_entity_financial_account (entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_option_value', cov.id, @option_value_rel_id_as, @financial_account_id_ar FROM `civicrm_option_group` cog -LEFT JOIN civicrm_option_value cov ON cog.id = cov.option_group_id -WHERE cog.name = 'payment_instrument' AND cov.name NOT IN ('Credit Card', 'Debit Card'); - -INSERT INTO civicrm_entity_financial_account (entity_table, entity_id, account_relationship, financial_account_id) -SELECT 'civicrm_option_value', cov.id, @option_value_rel_id_as, @financial_account_id_pp FROM `civicrm_option_group` cog -LEFT JOIN civicrm_option_value cov ON cog.id = cov.option_group_id -WHERE cog.name = 'payment_instrument' AND cov.name IN ('Credit Card', 'Debit Card'); - - --- CRM-11515 -SELECT @financial_account_id_ppa := max(id) FROM `civicrm_financial_account` WHERE `name` = 'Payment Processor Account'; - -INSERT INTO civicrm_entity_financial_account (`entity_table`, `entity_id`, `account_relationship`, `financial_account_id`) -SELECT 'civicrm_payment_processor', id, @option_value_rel_id_as, @financial_account_id_ppa FROM `civicrm_payment_processor`; - --- CRM-9923 and CRM-11037 -SELECT @option_group_id_batch_status := max(id) from civicrm_option_group where name = 'batch_status'; - -SELECT @weight := MAX(ROUND(value)) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_status; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`) -VALUES - (@option_group_id_batch_status, {localize}'Data Entry'{/localize}, @weight + 1, 'Data Entry', NULL, 0, 0, @weight + 1), - (@option_group_id_batch_status, {localize}'Reopened'{/localize}, @weight + 2, 'Reopened', NULL, 0, 0, @weight + 2), - (@option_group_id_batch_status, {localize}'Exported'{/localize}, @weight + 3, 'Exported' , NULL, 0, 0, @weight + 3); - --- Insert Batch Modes. -SELECT @option_group_id_batch_modes := max(id) from civicrm_option_group where name = 'batch_mode'; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`) -VALUES - (@option_group_id_batch_modes, {localize}'Manual Batch'{/localize}, 1, 'Manual Batch', NULL, 0, 0, 1), - (@option_group_id_batch_modes, {localize}'Automatic Batch'{/localize}, 2, 'Automatic Batch' , NULL, 0, 0, 2); - --- End of civiaccounts upgrade - --- CRM-10933 -ALTER TABLE `civicrm_report_instance` -ADD COLUMN `drilldown_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to instance ID drilldown to', -ADD CONSTRAINT `FK_civicrm_report_instance_drilldown_id` FOREIGN KEY (`drilldown_id`) REFERENCES `civicrm_report_instance` (`id`) ON DELETE SET NULL; - --- CRM-10012 -ALTER TABLE `civicrm_membership_type` -ADD COLUMN `max_related` INT(10) unsigned DEFAULT NULL COMMENT 'Maximum number of related memberships.' AFTER `relationship_direction`; -ALTER TABLE `civicrm_membership` -ADD COLUMN `max_related` INT(10) unsigned DEFAULT NULL COMMENT 'Maximum number of related memberships (membership_type override).' AFTER `owner_membership_id`; -ALTER TABLE `civicrm_membership_log` -ADD COLUMN `max_related` INT(10) unsigned DEFAULT NULL COMMENT 'Maximum number of related memberships.' AFTER `membership_type_id`; - --- CRM-11358 -DELETE FROM civicrm_dashboard_contact WHERE contact_id NOT IN (SELECT id FROM civicrm_contact); -INSERT INTO `civicrm_dashboard` -(`domain_id`, {localize field='label'}`label`{/localize}, `url`, `permission`, `permission_operator`, `column_no`, `is_minimized`, `is_active`, `weight`, `fullscreen_url`, `is_fullscreen`, `is_reserved`) -SELECT id, {localize}'{ts escape="sql"}CiviCRM News{/ts}'{/localize}, 'civicrm/dashlet/blog&reset=1&snippet=5', 'access CiviCRM', NULL, 0, 0, 1, 0, 'civicrm/dashlet/blog&reset=1&snippet=5&context=dashletFullscreen', 1, 1 -FROM `civicrm_domain`; - -INSERT INTO `civicrm_dashboard_contact` (dashboard_id, contact_id, column_no, is_active) -SELECT (SELECT MAX(id) FROM `civicrm_dashboard`), contact_id, 1, IF (SUM(is_active) > 0, 0, 1) -FROM `civicrm_dashboard_contact` WHERE 1 GROUP BY contact_id; - --- CRM-11387 -ALTER TABLE `civicrm_event` - ADD `is_partial_payment` tinyint(4) DEFAULT '0' COMMENT 'is partial payment enabled for this event', - ADD `min_initial_amount` decimal(20,2) DEFAULT NULL COMMENT 'Minimum initial amount for partial payment'; - -{if $multilingual} - {foreach from=$locales item=loc} - ALTER TABLE `civicrm_event` - ADD `initial_amount_label_{$loc}` varchar(255) COLLATE utf8_unicode_ci COMMENT 'Initial amount label for partial payment', - ADD `initial_amount_help_text_{$loc}` text COLLATE utf8_unicode_ci COMMENT 'Initial amount help text for partial payment'; - {/foreach} -{else} - ALTER TABLE `civicrm_event` - ADD `initial_amount_label` varchar(255) COLLATE utf8_unicode_ci COMMENT 'Initial amount label for partial payment', - ADD `initial_amount_help_text` text COLLATE utf8_unicode_ci COMMENT 'Initial amount help text for partial payment'; -{/if} - --- CRM-11347 -UPDATE `civicrm_option_value` SET is_reserved = 0 -WHERE name = 'Urgent' AND option_group_id = (SELECT id FROM `civicrm_option_group` WHERE name = 'case_status'); - --- CRM-11400 -UPDATE `civicrm_state_province` SET name = 'Distrito Federal' WHERE name = 'Diatrito Federal'; - --- CRM-9379 and CRM-11539 -SELECT @option_group_id_act := MAX(id) FROM civicrm_option_group WHERE name = 'activity_type'; -SELECT @max_val := MAX(ROUND(op.value)) FROM civicrm_option_value op WHERE op.option_group_id = @option_group_id_act; -SELECT @max_wt := MAX(weight) FROM civicrm_option_value WHERE option_group_id = @option_group_id_act; -SELECT @CompId := MAX(id) FROM civicrm_component where name = 'CiviContribute'; - -INSERT INTO civicrm_option_value - (option_group_id, {localize field='label'}label{/localize}, value, name, weight, {localize field='description'}description{/localize}, is_active, is_reserved, component_id, filter) -VALUES - (@option_group_id_act, {localize field='label'}'Export Accounting Batch'{/localize}, @max_val+1, 'Export Accounting Batch', @max_wt+1, {localize field='description'}'Export Accounting Batch'{/localize}, 1, 1, @CompId, 1), - (@option_group_id_act, {localize field='label'}'Create Batch'{/localize}, @max_val+2, 'Create Batch', @max_wt+2, {localize field='description'}'Create Batch'{/localize}, 1, 1, @CompId, 1), - (@option_group_id_act, {localize field='label'}'Edit Batch'{/localize}, @max_val+3, 'Edit Batch', @max_wt+3, {localize field='description'}'Edit Batch'{/localize}, 1, 1, @CompId, 1); - --- CRM-11341 -INSERT INTO - `civicrm_job` (domain_id, run_frequency, last_run, name, description, api_entity, api_action, parameters, is_active) -SELECT - id, 'Daily' , NULL, '{ts escape="sql" skip="true"}Disable expired relationships{/ts}', '{ts escape="sql" skip="true"}Disables relationships that have expired (ie. those relationships whose end date is in the past).{/ts}', 'job', 'disable_expired_relationships', NULL, 0 -FROM `civicrm_domain`; - --- CRM-11367 -SELECT @country_id := max(id) from civicrm_country where name = 'Latvia'; - -DELETE FROM civicrm_state_province WHERE name IN ('Ventspils Apripkis', 'Aizkraukles Apripkis', 'Alkanes Apripkis', 'Balvu Apripkis', 'Bauskas Apripkis', 'Cesu Aprikis', 'Daugavpile Apripkis', 'Dobeles Apripkis', 'Gulbenes Aprlpkis', 'Jelgavas Apripkis', 'Jekabpils Apripkis', 'Kraslavas Apripkis', 'Kuldlgas Apripkis', 'Limbazu Apripkis', 'Liepajas Apripkis', 'Ludzas Apripkis', 'Madonas Apripkis', 'Ogres Apripkis', 'Preilu Apripkis', 'Rezaknes Apripkis', 'Rigas Apripkis', 'Saldus Apripkis', 'Talsu Apripkis', 'Tukuma Apriplcis', 'Valkas Apripkis', 'Valmieras Apripkis'); - -INSERT IGNORE INTO civicrm_state_province (country_id, abbreviation, name) VALUES -(@country_id, '002', 'Aizkraukles novads'), -(@country_id, '038', 'Jaunjelgavas novads'), -(@country_id, '072', 'Pļaviņu novads'), -(@country_id, '046', 'Kokneses novads'), -(@country_id, '065', 'Neretas novads'), -(@country_id, '092', 'SkrÄ«veru novads'), -(@country_id, '007', 'AlÅ«ksnes novads'), -(@country_id, '009', 'Apes novads'), -(@country_id, '015', 'Balvu novads'), -(@country_id, '108', 'Viļakas novads'), -(@country_id, '014', 'Baltinavas novads'), -(@country_id, '082', 'Rug�ju novads'), -(@country_id, '016', 'Bauskas novads'), -(@country_id, '034', 'Iecavas novads'), -(@country_id, '083', 'Rund�les novads'), -(@country_id, '105', 'Vecumnieku novads'), -(@country_id, '022', 'CÄ“su novads'), -(@country_id, '055', 'LÄ«gatnes novads'), -(@country_id, '008', 'Amatas novads'), -(@country_id, '039', 'Jaunpiebalgas novads'), -(@country_id, '075', 'Priekuļu novads'), -(@country_id, '070', 'P�rgaujas novads'), -(@country_id, '076', 'Raunas novads'), -(@country_id, '104', 'Vecpiebalgas novads'), -(@country_id, '025', 'Daugavpils novads'), -(@country_id, '036', 'IlÅ«kstes novads'), -(@country_id, '026', 'Dobeles novads'), -(@country_id, '010', 'Auces novads'), -(@country_id, '098', 'TÄ“rvetes novads'), -(@country_id, '033', 'Gulbenes novads'), -(@country_id, '041', 'Jelgavas novads'), -(@country_id, '069', 'Ozolnieku novads'), -(@country_id, '042', 'JÄ“kabpils novads'), -(@country_id, '004', 'AknÄ«stes novads'), -(@country_id, '107', 'ViesÄ«tes novads'), -(@country_id, '049', 'Krustpils novads'), -(@country_id, '085', 'Salas novads'), -(@country_id, '047', 'Kr�slavas novads'), -(@country_id, '024', 'Dagdas novads'), -(@country_id, '001', 'Aglonas novads'), -(@country_id, '050', 'KuldÄ«gas novads'), -(@country_id, '093', 'Skrundas novads'), -(@country_id, '006', 'Alsungas novads'), -(@country_id, '003', 'Aizputes novads'), -(@country_id, '028', 'Durbes novads'), -(@country_id, '032', 'Grobiņas novads'), -(@country_id, '071', 'P�vilostas novads'), -(@country_id, '074', 'Priekules novads'), -(@country_id, '066', 'NÄ«cas novads'), -(@country_id, '081', 'Rucavas novads'), -(@country_id, '100', 'Vaiņodes novads'), -(@country_id, '054', 'Limbažu novads'), -(@country_id, '005', 'Alojas novads'), -(@country_id, '086', 'SalacgrÄ«vas novads'), -(@country_id, '058', 'Ludzas novads'), -(@country_id, '044', 'K�rsavas novads'), -(@country_id, '110', 'Zilupes novads'), -(@country_id, '023', 'Ciblas novads'), -(@country_id, '059', 'Madonas novads'), -(@country_id, '021', 'Cesvaines novads'), -(@country_id, '057', 'Lub�nas novads'), -(@country_id, '102', 'Varakļ�nu novads'), -(@country_id, '030', 'Ä’rgļu novads'), -(@country_id, '067', 'Ogres novads'), -(@country_id, '035', 'IkÅ¡Ä·iles novads'), -(@country_id, '051', 'Ķeguma novads'), -(@country_id, '053', 'Lielv�rdes novads'), -(@country_id, '073', 'Preiļu novads'), -(@country_id, '056', 'LÄ«v�nu novads'), -(@country_id, '078', 'Riebiņu novads'), -(@country_id, '103', 'V�rkavas novads'), -(@country_id, '077', 'RÄ“zeknes novads'), -(@country_id, '109', 'Viļ�nu novads'), -(@country_id, '013', 'Baldones novads'), -(@country_id, '052', 'Ķekavas novads'), -(@country_id, '068', 'Olaines novads'), -(@country_id, '087', 'Salaspils novads'), -(@country_id, '089', 'Saulkrastu novads'), -(@country_id, '091', 'Siguldas novads'), -(@country_id, '037', 'In�ukalna novads'), -(@country_id, '011', 'Ä€dažu novads'), -(@country_id, '012', 'BabÄ«tes novads'), -(@country_id, '020', 'Carnikavas novads'), -(@country_id, '031', 'Garkalnes novads'), -(@country_id, '048', 'Krimuldas novads'), -(@country_id, '061', 'M�lpils novads'), -(@country_id, '062', 'M�rupes novads'), -(@country_id, '080', 'Ropažu novads'), -(@country_id, '090', 'SÄ“jas novads'), -(@country_id, '095', 'Stopiņu novads'), -(@country_id, '088', 'Saldus novads'), -(@country_id, '018', 'BrocÄ“nu novads'), -(@country_id, '097', 'Talsu novads'), -(@country_id, '027', 'Dundagas novads'), -(@country_id, '063', 'MÄ“rsraga novads'), -(@country_id, '079', 'Rojas novads'), -(@country_id, '099', 'Tukuma novads'), -(@country_id, '043', 'Kandavas novads'), -(@country_id, '029', 'Engures novads'), -(@country_id, '040', 'Jaunpils novads'), -(@country_id, '101', 'Valkas novads'), -(@country_id, '094', 'Smiltenes novads'), -(@country_id, '096', 'Stren�u novads'), -(@country_id, '045', 'KocÄ“nu novads'), -(@country_id, '060', 'Mazsalacas novads'), -(@country_id, '084', 'RÅ«jienas novads'), -(@country_id, '017', 'BeverÄ«nas novads'), -(@country_id, '019', 'Burtnieku novads'), -(@country_id, '064', 'NaukÅ¡Ä“nu novads'), -(@country_id, '106', 'Ventspils novads'), -(@country_id, 'JKB', 'JÄ“kabpils'), -(@country_id, 'VMR', 'Valmiera'); - --- CRM-11507 -ALTER TABLE `civicrm_batch` CHANGE `type_id` `type_id` INT( 10 ) UNSIGNED NULL COMMENT 'fk to Batch Type options in civicrm_option_values'; -UPDATE `civicrm_batch` SET `mode_id` = '1'; - --- add Refunded in contribution status -SELECT @option_group_id_cs := MAX(id) FROM civicrm_option_group WHERE name = 'contribution_status'; - -SELECT @max_weight := MAX(weight) FROM civicrm_option_value WHERE option_group_id = @option_group_id_cs; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) -VALUES - (@option_group_id_cs, {localize}'{ts escape="sql"}Refunded{/ts}'{/localize}, @max_weight + 1, 'Refunded', NULL, 0, NULL, @max_weight + 1, 0, 1, 1, NULL, NULL); - --- Payprocs from extensions may have long titles -ALTER TABLE civicrm_payment_processor_type MODIFY COLUMN title varchar(127); - --- CRM-11665 -ALTER TABLE `civicrm_address` - ADD COLUMN manual_geo_code tinyint(4) DEFAULT '0' COMMENT 'Is this a manually entered geo code.'; - --- CRM-11761 -UPDATE `civicrm_setting` SET `group_name` = 'Personal Preferences' WHERE `group_name` = 'Navigation Menu'; - --- CRM-11779 - -INSERT INTO civicrm_action_mapping ( entity, entity_value, entity_value_label, entity_status, entity_status_label, entity_date_start, entity_date_end, entity_recipient ) -VALUES -( 'civicrm_participant', 'event_template', 'Event Template', 'civicrm_participant_status_type', 'Participant Status', 'event_start_date', 'event_end_date', 'event_contacts'); - --- CRM-11802 Fix ON DELETE CASCADE constraint for line_item.price_field_id -ALTER TABLE `civicrm_line_item` - DROP FOREIGN KEY `FK_civicrm_line_item_price_field_id`, - CHANGE `price_field_id` `price_field_id` INT( 10 ) UNSIGNED DEFAULT NULL; - -ALTER TABLE `civicrm_line_item` - ADD CONSTRAINT `FK_civicrm_line_item_price_field_id` FOREIGN KEY (`price_field_id`) REFERENCES `civicrm_price_field`(id) ON DELETE SET NULL; - --- CRM-11821 --- update all location info of domain --- like address, email, phone etc. -UPDATE civicrm_domain cd -LEFT JOIN civicrm_loc_block clb ON cd.loc_block_id = clb.id -LEFT JOIN civicrm_address ca ON clb.address_id = ca.id -LEFT JOIN civicrm_phone cp ON cp.id = clb.phone_id -LEFT JOIN civicrm_email ce ON ce.id = clb.email_id -SET -ca.contact_id = cd.contact_id, cp.contact_id = cd.contact_id, ce.contact_id = cd.contact_id; - --- Delete rows from civicrm_loc_block used for civicrm_domain -DELETE clb.* FROM civicrm_domain cd -LEFT JOIN civicrm_loc_block clb ON clb.id = cd.loc_block_id; - --- Delete loc_block_id from civicrm_domain -ALTER TABLE `civicrm_domain` DROP loc_block_id; - --- CRM11818 --- pledge payments should not be cancelled if the contribution was --- compledged but the pledge is cancelled -UPDATE -civicrm_pledge_payment pp -INNER JOIN civicrm_contribution c ON -c.id = pp.contribution_id AND pp.status_id =3 -AND contribution_status_id = 1 -SET pp.status_id = contribution_status_id - diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha2.mysql.tpl deleted file mode 100644 index 72c703f35f..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha2.mysql.tpl +++ /dev/null @@ -1,40 +0,0 @@ --- CRM-11847 -UPDATE `civicrm_dedupe_rule_group` - SET name = 'IndividualGeneral' - WHERE name = 'IndividualComplete'; - --- CRM-11791 -INSERT IGNORE INTO `civicrm_relationship_type` ( name_a_b,label_a_b, name_b_a,label_b_a, description, contact_type_a, contact_type_b, is_reserved ) - VALUES - ( 'Partner of', '{ts escape="sql"}Partner of{/ts}', 'Partner of', '{ts escape="sql"}Partner of{/ts}', '{ts escape="sql"}Partner relationship.{/ts}', 'Individual', 'Individual', 0 ); - --- CRM-11886 -UPDATE `civicrm_navigation` - SET permission = 'view own manual batches,view all manual batches' - WHERE - name = 'Open Batches' OR - name = 'Closed Batches' OR - name = 'Exported Batches' OR - name = 'Accounting Batches'; - -UPDATE `civicrm_navigation` - SET permission = 'create manual batch' - WHERE - name = 'Accounting Batches'; - --- CRM-11891 -SELECT @contributionlastID := max(id) from civicrm_navigation where name = 'Contributions' AND domain_id = {$domainID}; -SELECT @importWeight := weight from civicrm_navigation where name = 'Import Contributions' and parent_id = @contributionlastID; - --- since 'Bulk Data Entry' was renamed to 'Batch Data Entry' -UPDATE `civicrm_navigation` SET label = '{ts escape="sql"}Batch Data Entry{/ts}', name = 'Batch Data Entry' -WHERE url = 'civicrm/batch&reset=1'; - -UPDATE `civicrm_navigation` - SET `weight` = `weight`+2 - WHERE `parent_id` = @contributionlastID - AND (`weight` > @importWeight OR `name` = 'Accounting Batches'); - -UPDATE `civicrm_navigation` - SET `weight` = @importWeight+1 - WHERE `name` = 'Batch Data Entry'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha3.mysql.tpl deleted file mode 100644 index 17d54c7f1d..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.alpha3.mysql.tpl +++ /dev/null @@ -1,4 +0,0 @@ -{include file='../CRM/Upgrade/4.3.alpha3.msg_template/civicrm_msg_template.tpl'} --- CRM-11906 - -ALTER TABLE `civicrm_batch` CHANGE `item_count` `item_count` INT( 10 ) UNSIGNED NULL DEFAULT NULL COMMENT 'Number of items in a batch.'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta1.mysql.tpl deleted file mode 100644 index 752533be8a..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta1.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{include file='../CRM/Upgrade/4.3.beta1.msg_template/civicrm_msg_template.tpl'} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta2.mysql.tpl deleted file mode 100644 index 1f2e830087..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta2.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{include file='../CRM/Upgrade/4.3.beta2.msg_template/civicrm_msg_template.tpl'} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta3.mysql.tpl deleted file mode 100644 index 0bf6fd7eb6..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta3.mysql.tpl +++ /dev/null @@ -1,31 +0,0 @@ -{include file='../CRM/Upgrade/4.3.beta3.msg_template/civicrm_msg_template.tpl'} --- CRM-12077 -DELETE cog, cov FROM `civicrm_option_group` cog -LEFT JOIN civicrm_option_value cov ON cov.option_group_id = cog.id -WHERE cog.name = 'account_type'; - -{if $multilingual} - UPDATE civicrm_uf_field - SET field_name = 'financial_type' - WHERE field_name LIKE 'contribution_type'; - {foreach from=$locales item=locale} - UPDATE civicrm_uf_field - SET label_{$locale} = 'Financial Type' - WHERE field_name = 'financial_type' AND label_{$locale} = 'Contribution Type'; - {/foreach} - -{else} - UPDATE civicrm_uf_field - SET field_name = 'financial_type', - label = CASE - WHEN label = 'Contribution Type' - THEN 'Financial Type' - ELSE label - END - WHERE field_name = 'contribution_type'; -{/if} - --- CRM-12065 -UPDATE `civicrm_mapping_field` -SET name = replace(name, 'contribution_type', 'financial_type') -where name LIKE '%contribution_type%'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta4.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta4.mysql.tpl deleted file mode 100644 index 471686ad22..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta4.mysql.tpl +++ /dev/null @@ -1,25 +0,0 @@ --- CRM-12151 -ALTER TABLE civicrm_option_value - DROP INDEX index_option_group_id_value, - ADD INDEX index_option_group_id_value (value(128), option_group_id), - DROP INDEX index_option_group_id_name, - ADD INDEX index_option_group_id_name (option_group_id, name(128)); - --- CRM-12127 -UPDATE civicrm_membership_type cmt -LEFT JOIN civicrm_price_field_value cpfv ON cpfv.membership_type_id = cmt.id -LEFT JOIN civicrm_price_field cpf ON cpf.id = cpfv.price_field_id -LEFT JOIN civicrm_price_set cps ON cps.id = cpf.price_set_id -SET -cpfv.financial_type_id = cmt.financial_type_id, -{if !$multilingual} - cpfv.label = cmt.name, - cpfv.description = cmt.description, -{else} - {foreach from=$locales item=locale} - cpfv.label_{$locale} = cmt.name_{$locale}, - cpfv.description_{$locale} = cmt.description_{$locale}, - {/foreach} -{/if} -cpfv.amount = IFNULL(cmt.minimum_fee, 0.00) -WHERE cps.is_quick_config = 1 AND cpfv.membership_type_id IS NOT NULL; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta5.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta5.mysql.tpl deleted file mode 100644 index 2f2b4e8d3b..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.3.beta5.mysql.tpl +++ /dev/null @@ -1,9 +0,0 @@ --- CRM-12142 --- Populate default text for premiums_nothankyou_label -UPDATE `civicrm_premiums` SET {localize field="premiums_nothankyou_label"}premiums_nothankyou_label = '{ts escape="sql"}No thank-you{/ts}'{/localize}; - --- CRM-12233 Fix price field label for quick config membership signup field -UPDATE `civicrm_price_field` cpf -LEFT JOIN `civicrm_price_set` cps ON cps.id = cpf.price_set_id -SET {localize field="label"}cpf.label = '{ts escape="sql"}Membership{/ts}'{/localize} -WHERE cps.is_quick_config = 1 AND cpf.name = 'membership_amount'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.0.mysql.tpl deleted file mode 100644 index 1b102146df..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.0.mysql.tpl +++ /dev/null @@ -1,9 +0,0 @@ -{* file to handle db changes in 4.4.0 during upgrade *} --- CRM-13571 -UPDATE civicrm_state_province SET name = 'Møre og Romsdal' WHERE name = 'Møre ag Romsdal'; - --- CRM-13604 -UPDATE civicrm_state_province SET name = 'Alta Verapaz' WHERE name = 'Alta Verapez'; -UPDATE civicrm_state_province SET name = 'Baja Verapaz' WHERE name = 'Baja Verapez'; -UPDATE civicrm_state_province SET name = 'Retalhuleu' WHERE name = 'Reta.thuleu'; -UPDATE civicrm_state_province SET name = 'Sololá' WHERE name = 'Solol6'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.1.mysql.tpl deleted file mode 100644 index b200c27352..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.1.mysql.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{* file to handle db changes in 4.4.1 during upgrade *} --- CRM-13327 -SELECT @option_group_id_name_badge := max(id) from civicrm_option_group where name = 'name_badge'; -UPDATE civicrm_option_value -SET value = '{literal}{"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}{/literal}' -WHERE option_group_id = @option_group_id_name_badge AND name = 'Avery 5395'; - --- CRM-13669 -{literal} -UPDATE civicrm_option_value SET name = 'Dear {contact.household_name}' -WHERE name = 'Dear {contact.househols_name}'; -{/literal} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.2.mysql.tpl deleted file mode 100644 index 6cf155aa5f..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.2.mysql.tpl +++ /dev/null @@ -1,5 +0,0 @@ -{* file to handle db changes in 4.4.2 during upgrade *} --- CRM-13758 -UPDATE civicrm_uf_field SET field_name = 'gender_id' WHERE field_name = 'gender'; -UPDATE civicrm_uf_field SET field_name = 'prefix_id' WHERE field_name = 'individual_prefix'; -UPDATE civicrm_uf_field SET field_name = 'suffix_id' WHERE field_name = 'individual_suffix'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.3.mysql.tpl deleted file mode 100644 index 6d2787d441..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.3.mysql.tpl +++ /dev/null @@ -1,8 +0,0 @@ -{* file to handle db changes in 4.4.3 during upgrade *} -{include file='../CRM/Upgrade/4.4.3.msg_template/civicrm_msg_template.tpl'} - --- CRM-13420 -UPDATE civicrm_option_value -INNER JOIN civicrm_option_group ON civicrm_option_value.option_group_id = civicrm_option_group.id -SET civicrm_option_value.is_default = 1 -WHERE civicrm_option_group.name = 'payment_instrument' AND civicrm_option_value.name = 'Check'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.4.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.4.mysql.tpl deleted file mode 100644 index 3244650630..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.4.mysql.tpl +++ /dev/null @@ -1,28 +0,0 @@ -{* file to handle db changes in 4.4.4 during upgrade *} - -{* update comment for civicrm_report_instance.grouprole *} -ALTER TABLE civicrm_report_instance MODIFY grouprole varchar(1024) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'role required to be able to run this instance'; - -{* CRM-14117 *} -UPDATE civicrm_navigation SET url = 'http://civicrm.org/what/whatiscivicrm' WHERE name = 'About'; - --- CRM-13968 -SELECT @inprogressstatus := value FROM civicrm_option_value cov -LEFT JOIN civicrm_option_group cg ON cov.option_group_id = cg.id -WHERE cg.name = 'contribution_status' AND cov.name = 'In Progress'; - -SELECT @financialstatus := value FROM civicrm_option_value cov -LEFT JOIN civicrm_option_group cg ON cov.option_group_id = cg.id -WHERE cg.name = 'financial_item_status' AND cov.name = 'Unpaid'; - -SELECT @accountrecievable := id FROM `civicrm_financial_account` WHERE `name` LIKE 'Accounts Receivable'; - -UPDATE civicrm_financial_trxn cft -LEFT JOIN civicrm_entity_financial_trxn ceft ON ceft.financial_trxn_id = cft.id -LEFT JOIN civicrm_entity_financial_trxn ceft_financial_item ON ceft_financial_item.financial_trxn_id = cft.id -LEFT JOIN civicrm_financial_item cfi ON cfi.id = ceft_financial_item.entity_id -SET to_financial_account_id = @accountrecievable, cfi.status_id = @financialstatus -WHERE ceft.entity_table = 'civicrm_contribution' AND ceft_financial_item.entity_table = 'civicrm_financial_item' AND cft.status_id = @inprogressstatus AND cfi.status_id IS NULL; - -{* CRM-14167 *} -ALTER TABLE civicrm_activity_contact ADD INDEX index_record_type ( activity_id, record_type_id ); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.5.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.5.mysql.tpl deleted file mode 100644 index 99441185a8..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.5.mysql.tpl +++ /dev/null @@ -1,36 +0,0 @@ -{* file to handle db changes in 4.4.5 during upgrade *} --- CRM-14191 -SELECT @option_group_id_batch_status := max(id) from civicrm_option_group where name = 'batch_status'; -SELECT @weight := MAX(ROUND(value)) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_status; - -UPDATE civicrm_option_value -SET value = (Select @weight := @weight +1), -weight = @weight -WHERE option_group_id = @option_group_id_batch_status AND name IN ('Data Entry', 'Reopened', 'Exported') AND value = 0 ORDER BY id; - -SELECT @option_group_id_batch_modes := max(id) from civicrm_option_group where name = 'batch_mode'; -SELECT @weights := MAX(ROUND(value)) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_modes; - -UPDATE civicrm_option_value -SET value = (Select @weights := @weights +1), -weight = @weights -WHERE option_group_id = @option_group_id_batch_modes AND name IN ('Manual Batch', 'Automatic Batch') AND value = 0; - -SELECT @manual_mode_id := MAX(value) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_modes AND name = 'Manual Batch'; -UPDATE civicrm_batch SET mode_id = @manual_mode_id WHERE (mode_id IS NULL OR mode_id = 0) AND type_id IS NULL; - -SELECT @data_entry_status_id := MAX(value) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_status AND name = 'Data Entry'; -UPDATE civicrm_batch SET status_id = @data_entry_status_id WHERE status_id = 3 AND type_id IS NOT NULL; - -SELECT @exported_status_id := MAX(value) FROM civicrm_option_value WHERE option_group_id = @option_group_id_batch_status AND name = 'Exported'; -UPDATE civicrm_navigation SET url = CONCAT('civicrm/financial/financialbatches?reset=1&batchStatus=', @exported_status_id) WHERE name = 'Exported Batches'; - --- update status_id to Exported -SELECT @export_activity_type := max(value) FROM civicrm_option_value cov -INNER JOIN civicrm_option_group cog ON cog.id = cov.option_group_id -WHERE cog.name = 'activity_type' AND cov.name = 'Export Accounting Batch'; - -UPDATE civicrm_batch cb -INNER JOIN civicrm_activity ca ON ca.source_record_id = cb.id -SET cb.status_id = @exported_status_id -WHERE cb.status_id = 0 AND ca.activity_type_id = @export_activity_type; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.6.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.6.mysql.tpl deleted file mode 100644 index 82916b9041..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.6.mysql.tpl +++ /dev/null @@ -1,5 +0,0 @@ -{* CRM-16846 - This file is never run, but it doesn't matter because the below query is undone by another alteration to the same column in 4.5.alpha1 *} - --- CRM-14903 -ALTER TABLE `civicrm_mapping_field` -CHANGE COLUMN `operator` `operator` ENUM('=','!=','>','<','>=','<=','IN','NOT IN','LIKE','NOT LIKE','IS NULL','IS NOT NULL', 'IS EMPTY', 'IS NOT EMPTY', 'RLIKE'); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.alpha1.mysql.tpl deleted file mode 100644 index c3c3c63f3d..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.alpha1.mysql.tpl +++ /dev/null @@ -1,161 +0,0 @@ -{include file='../CRM/Upgrade/4.4.alpha1.msg_template/civicrm_msg_template.tpl'} - --- CRM-12357 -SELECT @option_group_id_cvOpt := max(id) FROM civicrm_option_group WHERE name = 'contact_view_options'; -SELECT @max_val := MAX(ROUND(op.value)) FROM civicrm_option_value op WHERE op.option_group_id = @option_group_id_cvOpt; -SELECT @max_wt := MAX(ROUND(val.weight)) FROM civicrm_option_value val WHERE val.option_group_id = @option_group_id_cvOpt; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}`label`{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) -VALUES - (@option_group_id_cvOpt, {localize}'{ts escape="sql"}Mailings{/ts}'{/localize}, @max_val+1, 'CiviMail', NULL, 0, NULL, @max_wt+1, 0, 0, 1, NULL, NULL); - -INSERT INTO civicrm_setting - (domain_id, contact_id, is_domain, group_name, name, value) -VALUES - ({$domainID}, NULL, 1, 'Mailing Preferences', 'write_activity_record', '{serialize}1{/serialize}'); - --- CRM-12580 -ALTER TABLE civicrm_contact ADD INDEX index_is_deleted_sort_name(is_deleted, sort_name, id); -ALTER TABLE civicrm_contact DROP INDEX index_is_deleted; - --- CRM-12495 -DROP TABLE IF EXISTS `civicrm_task_status`; -DROP TABLE IF EXISTS `civicrm_task`; -DROP TABLE IF EXISTS `civicrm_project`; - --- CRM-12425 -SELECT @bounceTypeID := max(id) FROM civicrm_mailing_bounce_type WHERE name = 'Spam'; -INSERT INTO civicrm_mailing_bounce_pattern (bounce_type_id, pattern) -VALUES (@bounceTypeID, 'X-HmXmrOriginalRecipient'); - --- CRM-12716 -UPDATE civicrm_custom_field SET text_length = NULL WHERE html_type = 'TextArea' AND text_length = 255; - --- CRM-12288 - -SELECT @option_group_id_activity_type := max(id) from civicrm_option_group where name = 'activity_type'; -SELECT @max_val := MAX(ROUND(op.value)) FROM civicrm_option_value op WHERE op.option_group_id = @option_group_id_activity_type; -SELECT @max_wt := max(weight) from civicrm_option_value where option_group_id=@option_group_id_activity_type; - -INSERT INTO civicrm_option_value - (option_group_id, {localize field='label'}label{/localize}, {localize field='description'}description{/localize}, value, name, weight, filter, component_id) -VALUES - (@option_group_id_activity_type, {localize}'Inbound SMS'{/localize},{localize}'Inbound SMS'{/localize}, (SELECT @max_val := @max_val+1), 'Inbound SMS', (SELECT @max_wt := @max_wt+1), 1, NULL), - (@option_group_id_activity_type, {localize}'SMS delivery'{/localize},{localize}'SMS delivery'{/localize}, (SELECT @max_val := @max_val+1), 'SMS delivery', (SELECT @max_wt := @max_wt+1), 1, NULL); - --- CRM-13015 replaced if $multilingual w/ localize method -UPDATE `civicrm_option_value` SET {localize field="label"}label = '{ts escape="sql"}Outbound SMS{/ts}'{/localize} - WHERE name = 'SMS' and option_group_id = @option_group_id_activity_type; - --- CRM-12689 -ALTER TABLE civicrm_action_schedule - ADD COLUMN limit_to tinyint(4) DEFAULT '1' COMMENT 'Is this the recipient criteria limited to OR in addition to?' AFTER recipient; - --- CRM-12653 -SELECT @uf_group_contribution_batch_entry := max(id) FROM civicrm_uf_group WHERE name = 'contribution_batch_entry'; -SELECT @uf_group_membership_batch_entry := max(id) FROM civicrm_uf_group WHERE name = 'membership_batch_entry'; - -INSERT INTO civicrm_uf_field - ( uf_group_id, field_name, is_required, is_reserved, weight, visibility, in_selector, is_searchable, location_type_id, {localize field='label'}label{/localize}, field_type) -VALUES - ( @uf_group_contribution_batch_entry, 'soft_credit', 0, 0, 10, 'User and User Admin Only', 0, 0, NULL, {localize}'Soft Credit'{/localize}, 'Contribution'), - ( @uf_group_membership_batch_entry, 'soft_credit', 0, 0, 13, 'User and User Admin Only', 0, 0, NULL, {localize}'Soft Credit'{/localize}, 'Membership'); - --- CRM-12809 -ALTER TABLE `civicrm_custom_group` - ADD COLUMN `is_reserved` tinyint(4) DEFAULT '0' COMMENT 'Is this a reserved Custom Group?'; - ---CRM-12986 fix event_id & contact_id to NOT NULL fields on participant table -SET foreign_key_checks = 0; -ALTER TABLE `civicrm_participant` - CHANGE COLUMN `event_id` `event_id` INT(10) UNSIGNED NOT NULL, - CHANGE COLUMN `contact_id` `contact_id` INT(10) UNSIGNED NOT NULL; -SET foreign_key_checks = 1; - --- CRM-12964 civicrm_print_label table creation -CREATE TABLE IF NOT EXISTS `civicrm_print_label` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'User title for for this label layout', - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'variable name/programmatic handle for this field.', - `description` text COLLATE utf8_unicode_ci COMMENT 'Description of this label layout', - `label_format_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'This refers to name column of civicrm_option_value row in name_badge option group', - `label_type_id` int(10) unsigned DEFAULT NULL COMMENT 'Implicit FK to civicrm_option_value row in NEW label_type option group', - `data` longtext COLLATE utf8_unicode_ci COMMENT 'contains json encode configurations options', - `is_default` tinyint(4) DEFAULT '1' COMMENT 'Is this default?', - `is_active` tinyint(4) DEFAULT '1' COMMENT 'Is this option active?', - `is_reserved` tinyint(4) DEFAULT '1' COMMENT 'Is this reserved label?', - `created_id` int(10) unsigned DEFAULT NULL COMMENT 'FK to civicrm_contact, who created this label layout', - PRIMARY KEY (`id`), - KEY `FK_civicrm_print_label_created_id` (`created_id`), - CONSTRAINT `FK_civicrm_print_label_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE SET NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1; - --- CRM-12964 adding meta-data -INSERT INTO - `civicrm_option_group` (`name`, {localize field='title'}`title`{/localize}, `is_reserved`, `is_active`) -VALUES - ('label_type', {localize}'{ts escape="sql"}Label Type{/ts}'{/localize}, 1, 1), - ('name_badge', {localize}'{ts escape="sql"}Name Badge Format{/ts}'{/localize}, 1, 1); - -SELECT @option_group_id_label_type := max(id) from civicrm_option_group where name = 'label_type'; -SELECT @option_group_id_name_badge := max(id) from civicrm_option_group where name = 'name_badge'; - -INSERT INTO - `civicrm_option_value` (`option_group_id`, {localize field='label'}`label`{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`) -VALUES - (@option_group_id_label_type, {localize}'{ts escape="sql"}Event Badge{/ts}'{/localize}, 1, 'Event Badge', NULL, 0, NULL, 1, 0, 0, 1, NULL, NULL), - (@option_group_id_name_badge, {localize}'{ts escape="sql"}Avery 5395{/ts}'{/localize}, '{literal}{"name":"Avery 5395","paper-size":"a4","metric":"mm","lMargin":13.5,"tMargin":3,"NX":2,"NY":4,"SpaceX":15,"SpaceY":8.5,"width":85.7,"height":59.2,"font-size":12,"orientation":"portrait","font-name":"helvetica","font-style":"","lPadding":0,"tPadding":0}{/literal}', 'Avery 5395', NULL, 0, NULL, 1, 0, 0, 1, NULL, NULL); - --- CRM-12964 adding navigation -UPDATE civicrm_navigation - SET url = 'civicrm/admin/badgelayout&reset=1', - name = 'Event Name Badge Layouts', - label= '{ts escape="sql" skip="true"}Event Name Badge Layouts{/ts}' - WHERE name = 'Event Badge Formats'; - ---CRM-12539 change 'Greater London' to 'London' -UPDATE `civicrm_state_province` SET `name` = 'London' WHERE `name` = 'Greater London'; - -UPDATE `civicrm_premiums` SET {localize field="premiums_nothankyou_label"}premiums_nothankyou_label = '{ts escape="sql"}No thank-you{/ts}'{/localize}; - --- CRM-13015 Change address option labels from Additional Address to Supplemental Address -SELECT @option_group_id_addroptions := max(id) from civicrm_option_group where name = 'address_options'; - -UPDATE civicrm_option_value - SET {localize field="label"}label = '{ts escape="sql"}Supplemental Address 1{/ts}'{/localize} - WHERE name = 'supplemental_address_1' AND option_group_id = @option_group_id_addroptions; - -UPDATE civicrm_option_value - SET {localize field="label"}label = '{ts escape="sql"}Supplemental Address 2{/ts}'{/localize} - WHERE name = 'supplemental_address_2' AND option_group_id = @option_group_id_addroptions; - --- CRM-12717 -UPDATE `civicrm_navigation` SET label = '{ts escape="sql"}Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.){/ts}', name = 'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)' -WHERE url = 'civicrm/admin/setting/misc&reset=1'; - --- CRM-13112 -ALTER TABLE civicrm_survey - ADD is_share TINYINT( 4 ) NULL DEFAULT '1' COMMENT 'Can people share the petition through social media?'; - --- CRM-12439 -{if $multilingual} - ALTER TABLE `civicrm_uf_group` - ADD `description` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT 'Optional verbose description of the profile.' AFTER `group_type`; -{else} - ALTER TABLE `civicrm_uf_group` - ADD `description` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT 'Optional verbose description of the profile.' AFTER `title`; -{/if} - ---CRM-13142 -UPDATE - civicrm_uf_field uf - INNER JOIN - civicrm_uf_group ug ON uf.uf_group_id = ug.id AND ug.is_reserved = 1 AND name = 'membership_batch_entry' -SET uf.is_reserved = 0 -WHERE uf.field_name IN ('join_date', 'membership_start_date', 'membership_end_date'); - ---CRM-13155 - Add searching for recurring contribution data to search has been successfully created. -ALTER TABLE `civicrm_contribution_recur` - CHANGE COLUMN `next_sched_contribution` `next_sched_contribution_date` DATETIME NULL DEFAULT NULL COMMENT 'At Groundspring this was used by the cron job which triggered payments. If we\'re not doing that but we know about payments, it might still be useful to store for display to org andor contributors.' AFTER `cycle_day`; - diff --git a/civicrm/CRM/Upgrade/Incremental/sql/4.4.beta1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/4.4.beta1.mysql.tpl deleted file mode 100644 index ede9a6e3f8..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/4.4.beta1.mysql.tpl +++ /dev/null @@ -1,9 +0,0 @@ -{* file to handle db changes in 4.4.beta1 during upgrade *} --- CRM-13314 Added States for Uruguay -INSERT IGNORE INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES -(NULL, 1229, "FL", "Florida"), -(NULL, 1229, "RN", "Rio Negro"), -(NULL, 1229, "SJ", "San Jose"); - -ALTER TABLE civicrm_email -MODIFY email VARCHAR(254); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.28.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.28.0.mysql.tpl deleted file mode 100644 index acff258d09..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.28.0.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.28.0 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.28.1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.28.1.mysql.tpl deleted file mode 100644 index 46fa031fe5..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.28.1.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.28.1 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.28.2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.28.2.mysql.tpl deleted file mode 100644 index 3140fe775e..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.28.2.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.28.2 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.28.3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.28.3.mysql.tpl deleted file mode 100644 index 30fbade044..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.28.3.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.28.3 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.28.4.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.28.4.mysql.tpl deleted file mode 100644 index 09316482f8..0000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.28.4.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.28.4 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.29.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.29.0.mysql.tpl new file mode 100644 index 0000000000..a25ed8c29a --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.29.0.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.29.0 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.29.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.29.alpha1.mysql.tpl new file mode 100644 index 0000000000..18b176d4b0 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.29.alpha1.mysql.tpl @@ -0,0 +1,47 @@ +{* file to handle db changes in 5.29.alpha1 during upgrade *} + +{* https://github.com/civicrm/civicrm-core/pull/17824 *} +UPDATE civicrm_status_pref SET name = 'checkExtensionsOk' WHERE name = 'extensionsOk'; +UPDATE civicrm_status_pref SET name = 'checkExtensionsUpdates' WHERE name = 'extensionUpdates'; + +-- The RelationshipCache is a high-level index/cache for querying relationships. +DROP TABLE IF EXISTS `civicrm_relationship_cache`; +CREATE TABLE `civicrm_relationship_cache` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship Cache ID', + `relationship_id` int unsigned NOT NULL COMMENT 'id of the relationship (FK to civicrm_relationship.id)', + `relationship_type_id` int unsigned NOT NULL COMMENT 'id of the relationship type', + `orientation` char(3) NOT NULL COMMENT 'The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.', + `near_contact_id` int unsigned NOT NULL COMMENT 'id of the first contact', + `near_relation` varchar(64) COMMENT 'name for relationship of near_contact to far_contact.', + `far_contact_id` int unsigned NOT NULL COMMENT 'id of the second contact', + `far_relation` varchar(64) COMMENT 'name for relationship of far_contact to near_contact.', + `is_active` tinyint DEFAULT 1 COMMENT 'is the relationship active ?', + `start_date` date COMMENT 'date when the relationship started', + `end_date` date COMMENT 'date when the relationship ended', + PRIMARY KEY (`id`), + UNIQUE INDEX `UI_relationship`(relationship_id, orientation), + INDEX `index_nearid_nearrelation`(near_contact_id, near_relation), + INDEX `index_nearid_farrelation`(near_contact_id, far_relation), + INDEX `index_near_relation`(near_relation), + CONSTRAINT FK_civicrm_relationship_cache_relationship_id FOREIGN KEY (`relationship_id`) REFERENCES `civicrm_relationship`(`id`) ON DELETE CASCADE, + CONSTRAINT FK_civicrm_relationship_cache_relationship_type_id FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`) ON DELETE CASCADE, + CONSTRAINT FK_civicrm_relationship_cache_near_contact_id FOREIGN KEY (`near_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE, + CONSTRAINT FK_civicrm_relationship_cache_far_contact_id FOREIGN KEY (`far_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; + +-- Fix missing resubscribeUrl token. There doesn't seem to be any precedent +-- for doing an upgrade for these, since the last update was in 2009 when +-- the token went missing and it had no upgrade script for it. Also unlike +-- message templates, there doesn't seem to be a way to tell whether it's +-- been changed. Using ts is a bit unreliable if the translation has changed +-- but it would be no worse than now and just end up not updating it. +-- Also, I'm drawing a blank on why the %3 is replaced differently during +-- install than during upgrade, hence the OR clause. +{capture assign=unsubgroup}{ldelim}unsubscribe.group{rdelim}{/capture} +{capture assign=actresub}{ldelim}action.resubscribe{rdelim}{/capture} +{capture assign=actresuburl}{ldelim}action.resubscribeUrl{rdelim}{/capture} +UPDATE civicrm_mailing_component +SET body_text = '{ts escape="sql" 1=$unsubgroup 2=$actresub 3=$actresuburl}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking %3{/ts}' +WHERE component_type = 'Unsubscribe' +AND (body_text = '{ts escape="sql" 1=$unsubgroup 2=$actresub}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking %3{/ts}' + OR body_text = '{ts escape="sql" 1=$unsubgroup 2=$actresub}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking {/ts}'); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.29.beta1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.29.beta1.mysql.tpl new file mode 100644 index 0000000000..4b2bf5addb --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.29.beta1.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.29.beta1 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/README.txt b/civicrm/CRM/Upgrade/Incremental/sql/README.txt index a5d166d50e..f7954bce54 100644 --- a/civicrm/CRM/Upgrade/Incremental/sql/README.txt +++ b/civicrm/CRM/Upgrade/Incremental/sql/README.txt @@ -80,4 +80,4 @@ VALUES (@option_group_id_activity_type, {localize}'{ts escape="sql"}Change Custom Data{/ts}'{/localize},{localize}''{/localize}, (SELECT @max_val := @max_val+1), 'Change Custom Data', (SELECT @max_wt := @max_wt+1), 0, @caseCompId); ------------------------------------------------------------------------------ -More details on the wiki: http://wiki.civicrm.org/confluence/display/CRMDOC/Internationalisation+for+Developers#InternationalisationforDevelopers-Localisedfieldsschemachanges +More details: https://docs.civicrm.org/dev/en/latest/translation/database/#localised-fields-schema-changes diff --git a/civicrm/CRM/Utils/Cache/Interface.php b/civicrm/CRM/Utils/Cache/Interface.php index 439dcc63a6..5169db1445 100644 --- a/civicrm/CRM/Utils/Cache/Interface.php +++ b/civicrm/CRM/Utils/Cache/Interface.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * CRM_Utils_Cache_Interface is a long-standing interface used within CiviCRM * for interacting with a cache service. In style and substance, it is extremely * similar to PHP-FIG's SimpleCache interface (PSR-16). Consequently, beginning diff --git a/civicrm/CRM/Utils/Cache/NaiveHasTrait.php b/civicrm/CRM/Utils/Cache/NaiveHasTrait.php index 69712431b1..8843eb2881 100644 --- a/civicrm/CRM/Utils/Cache/NaiveHasTrait.php +++ b/civicrm/CRM/Utils/Cache/NaiveHasTrait.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * The traditional CRM_Utils_Cache_Interface did not support has(). * To get drop-in compliance with PSR-16, we use a naive adapter. * diff --git a/civicrm/CRM/Utils/Cache/NaiveMultipleTrait.php b/civicrm/CRM/Utils/Cache/NaiveMultipleTrait.php index 2981f39f65..c7ae050b39 100644 --- a/civicrm/CRM/Utils/Cache/NaiveMultipleTrait.php +++ b/civicrm/CRM/Utils/Cache/NaiveMultipleTrait.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * The traditional CRM_Utils_Cache_Interface did not support multiple-key * operations. To get drop-in compliance with PSR-16, we use a naive adapter. * An operation like `getMultiple()` just calls `get()` multiple times. diff --git a/civicrm/CRM/Utils/Cache/Redis.php b/civicrm/CRM/Utils/Cache/Redis.php index b9db031f07..d56427d867 100644 --- a/civicrm/CRM/Utils/Cache/Redis.php +++ b/civicrm/CRM/Utils/Cache/Redis.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Utils_Cache_Redis implements CRM_Utils_Cache_Interface { diff --git a/civicrm/CRM/Utils/Check.php b/civicrm/CRM/Utils/Check.php index e8eb744ab2..1e4d9f7df7 100644 --- a/civicrm/CRM/Utils/Check.php +++ b/civicrm/CRM/Utils/Check.php @@ -170,31 +170,20 @@ class CRM_Utils_Check { } /** - * Run all system checks. + * Run all enabled system checks. * * This functon is wrapped by the System.check api. * * Calls hook_civicrm_check() for extensions to add or modify messages. - * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_check + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_check/ * * @param bool $max * Whether to return just the maximum non-hushed severity * - * @return array - * Array of CRM_Utils_Check_Message objects + * @return CRM_Utils_Check_Message[] */ public static function checkAll($max = FALSE) { - $messages = []; - foreach (glob(__DIR__ . '/Check/Component/*.php') as $filePath) { - $className = 'CRM_Utils_Check_Component_' . basename($filePath, '.php'); - /* @var CRM_Utils_Check_Component $check */ - $check = new $className(); - if ($check->isEnabled()) { - $messages = array_merge($messages, $check->checkAll()); - } - } - - CRM_Utils_Hook::check($messages); + $messages = self::checkStatus(); uasort($messages, [__CLASS__, 'severitySort']); @@ -212,6 +201,38 @@ class CRM_Utils_Check { return ($max) ? $maxSeverity : $messages; } + /** + * @param array $statusNames + * Optionally specify the names of specific checks to run, or leave empty to run all + * @param bool $includeDisabled + * Run checks that have been explicitly disabled (default false) + * + * @return CRM_Utils_Check_Message[] + */ + public static function checkStatus($statusNames = [], $includeDisabled = FALSE) { + $messages = []; + $checksNeeded = $statusNames; + foreach (glob(__DIR__ . '/Check/Component/*.php') as $filePath) { + $className = 'CRM_Utils_Check_Component_' . basename($filePath, '.php'); + /* @var CRM_Utils_Check_Component $component */ + $component = new $className(); + if ($includeDisabled || $component->isEnabled()) { + $messages = array_merge($messages, $component->checkAll($statusNames, $includeDisabled)); + } + if ($statusNames) { + // Early return if we have already run (or skipped) all the requested checks. + $checksNeeded = array_diff($checksNeeded, $component->getAllChecks()); + if (!$checksNeeded) { + return $messages; + } + } + } + + CRM_Utils_Hook::check($messages, $statusNames, $includeDisabled); + + return $messages; + } + /** * @param int $level * @return string diff --git a/civicrm/CRM/Utils/Check/Component.php b/civicrm/CRM/Utils/Check/Component.php index 6853690860..37a7171cab 100644 --- a/civicrm/CRM/Utils/Check/Component.php +++ b/civicrm/CRM/Utils/Check/Component.php @@ -18,11 +18,6 @@ use Civi\Api4\StatusPreference; */ abstract class CRM_Utils_Check_Component { - /** - * @var array - */ - public $checksConfig = []; - /** * Get the configured status checks. * @@ -32,20 +27,18 @@ abstract class CRM_Utils_Check_Component { * @throws \Civi\API\Exception\UnauthorizedException */ public function getChecksConfig() { - if (empty($this->checksConfig)) { - $this->checksConfig = Civi::cache('checks')->get('checksConfig', []); - if (empty($this->checksConfig)) { - $this->checksConfig = StatusPreference::get()->setCheckPermissions(FALSE)->execute()->indexBy('name'); + if (!isset(Civi::$statics[__FUNCTION__])) { + // TODO: Remove this check when MINIMUM_UPGRADABLE_VERSION goes to 4.7. + if (CRM_Utils_System::version() !== CRM_Core_BAO_Domain::version() && !CRM_Core_DAO::checkTableExists('civicrm_status_pref')) { + Civi::$statics[__FUNCTION__] = []; + } + else { + Civi::$statics[__FUNCTION__] = (array) StatusPreference::get(FALSE) + ->addWhere('domain_id', '=', 'current_domain') + ->execute()->indexBy('name'); } } - return $this->checksConfig; - } - - /** - * @param array $checksConfig - */ - public function setChecksConfig(array $checksConfig) { - $this->checksConfig = $checksConfig; + return Civi::$statics[__FUNCTION__]; } /** @@ -57,26 +50,60 @@ abstract class CRM_Utils_Check_Component { return TRUE; } + /** + * Get the names of all check functions in this class + * + * @return string[] + */ + public function getAllChecks() { + return array_filter(get_class_methods($this), function($method) { + return $method !== 'checkAll' && strpos($method, 'check') === 0; + }); + } + /** * Run all checks in this class. * - * @return array - * [CRM_Utils_Check_Message] + * @param array $requestedChecks + * Optionally specify the names of specific checks requested, or leave empty to run all + * @param bool $includeDisabled + * Run checks that have been explicitly disabled (default false) * - * @throws \API_Exception + * @return CRM_Utils_Check_Message[] + * + * @throws API_Exception * @throws \Civi\API\Exception\UnauthorizedException */ - public function checkAll() { + public function checkAll($requestedChecks = [], $includeDisabled = FALSE) { $messages = []; - foreach (get_class_methods($this) as $method) { + foreach ($this->getAllChecks() as $method) { // Note that we should check if the test is disabled BEFORE running it in case it's disabled for performance. - if ($method !== 'checkAll' && strpos($method, 'check') === 0 && !$this->isDisabled($method)) { - $messages = array_merge($messages, $this->$method()); + if ($this->isRequested($method, $requestedChecks) && ($includeDisabled || !$this->isDisabled($method))) { + $messages = array_merge($messages, $this->$method($includeDisabled)); } } return $messages; } + /** + * Is this check one of those requested + * + * @param string $method + * @param array $requestedChecks + * @return bool + */ + private function isRequested($method, $requestedChecks) { + if (!$requestedChecks) { + return TRUE; + } + foreach ($requestedChecks as $name) { + if (strpos($name, $method) === 0) { + return TRUE; + } + } + return FALSE; + } + /** * Is the specified check disabled. * @@ -88,19 +115,10 @@ abstract class CRM_Utils_Check_Component { * @throws \Civi\API\Exception\UnauthorizedException */ public function isDisabled($method) { - try { - $checks = $this->getChecksConfig(); - if (!empty($checks[$method])) { - return (bool) empty($checks[$method]['is_active']); - } - } - catch (PEAR_Exception $e) { - // if we're hitting this, DB migration to 5.19 probably hasn't run yet, so - // is_active doesn't exist. Ignore this error so the status check (which - // might warn about missing migrations!) still renders. - // TODO: remove at some point after 5.19 + $checks = $this->getChecksConfig(); + if (isset($checks[$method]['is_active'])) { + return !$checks[$method]['is_active']; } - return FALSE; } diff --git a/civicrm/CRM/Utils/Check/Component/AddressParsing.php b/civicrm/CRM/Utils/Check/Component/AddressParsing.php index 815402b48e..0d42a1771c 100644 --- a/civicrm/CRM/Utils/Check/Component/AddressParsing.php +++ b/civicrm/CRM/Utils/Check/Component/AddressParsing.php @@ -16,6 +16,9 @@ */ class CRM_Utils_Check_Component_AddressParsing extends CRM_Utils_Check_Component { + /** + * @return CRM_Utils_Check_Message[] + */ public static function checkLocaleSupportsAddressParsing() { $addressOptions = CRM_Core_BAO_Setting::valueOptions( diff --git a/civicrm/CRM/Utils/Check/Component/Case.php b/civicrm/CRM/Utils/Check/Component/Case.php index 4931f9f37f..1112b72093 100644 --- a/civicrm/CRM/Utils/Check/Component/Case.php +++ b/civicrm/CRM/Utils/Check/Component/Case.php @@ -46,7 +46,7 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { /** * Check that the case-type names don't rely on double-munging. * - * @return array<CRM_Utils_Check_Message> + * @return CRM_Utils_Check_Message[] * An empty array, or a list of warnings */ public function checkCaseTypeNameConsistency() { @@ -105,7 +105,7 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { /** * Check that the timestamp columns are populated. (CRM-20958) * - * @return array<CRM_Utils_Check_Message> + * @return CRM_Utils_Check_Message[] * An empty array, or a list of warnings */ public function checkNullTimestamps() { @@ -149,7 +149,7 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { /** * Check that the relationship types aren't going to cause problems. * - * @return array<CRM_Utils_Check_Message> + * @return CRM_Utils_Check_Message[] * An empty array, or a list of warnings */ public function checkRelationshipTypeProblems() { @@ -342,7 +342,7 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { + array_column($relationshipTypes, 'id', 'label_b_a'); $missing = []; foreach ($caseTypes as $caseType) { - foreach ($caseType['definition']['caseRoles'] as $role) { + foreach ($caseType['definition']['caseRoles'] ?? [] as $role) { if (!isset($allConfigured[$role['name']])) { $missing[$role['name']] = $role['name']; } @@ -387,7 +387,7 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { * We don't have to think about edge cases because there are already * status checks above for those. * - * @return array<CRM_Utils_Check_Message> + * @return CRM_Utils_Check_Message[] * An empty array, or a list of warnings */ public function checkExternalXmlFileRoleNames() { diff --git a/civicrm/CRM/Utils/Check/Component/Cms.php b/civicrm/CRM/Utils/Check/Component/Cms.php new file mode 100644 index 0000000000..a1e8610db4 --- /dev/null +++ b/civicrm/CRM/Utils/Check/Component/Cms.php @@ -0,0 +1,159 @@ +<?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_Utils_Check_Component_Cms extends CRM_Utils_Check_Component { + + /** + * For sites running in WordPress, make sure the configured base page exists. + * + * @return CRM_Utils_Check_Message[] + */ + public static function checkWpBasePage() { + $config = CRM_Core_Config::singleton(); + if ($config->userFramework != 'WordPress') { + return []; + } + if (is_multisite()) { + // There are a lot potential configurations in a multisite context where + // this could show a false positive. This completely skips multisite for + // now. + return []; + } + + switch (self::pageExists($config->wpBasePage)) { + case 1: + // Page is here and published + return []; + + case 0: + $messageText = [ + ts( + 'CiviCRM relies upon a <a href="%1%2">base page in WordPress</a>, but it is not published.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $config->wpBasePage, + ] + ), + ]; + break; + + case -1: + // Page is missing, but let's look around to see if the default is there + // --either the default as modified by civicrm_basepage_slug or the + // default default, `civicrm`. + $cmsSettings = CRM_Utils_System::url( + 'civicrm/admin/setting', + $query = ['reset' => 1], + FALSE, + NULL, + TRUE, + FALSE, + TRUE + ); + $messageText = [ + ts( + 'CiviCRM relies upon a base page in WordPress at %1%2, but it is missing.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $config->wpBasePage, + ] + ), + ]; + + $altSlugs = array_unique([ + apply_filters('civicrm_basepage_slug', 'civicrm'), + 'civicrm', + ]); + + if (in_array($config->wpBasePage, $altSlugs)) { + $messageText[] = ts( + 'If you have an alternative base page, it can be set in the <a href="%2">WordPress integration settings</a>.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $cmsSettings, + ] + ); + } + else { + foreach ($altSlugs as $slug) { + $exists = self::pageExists($slug); + if ($exists >= 0) { + // One of the possible defaults is here, published or not. + $messageText[] = ts( + 'The default is %1%2, which <a href="%1%2">does exist on this site</a>.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $slug, + ] + ); + if ($exists == 0) { + $messageText[] = ts('However, it is not published.'); + } + // We've found one, and if the `civicrm_basepage_slug` filter has + // modified the default, we should go with it. + break; + } + } + if ($exists == -1) { + // We went through the default(s) and couldn't find one. Defer to + // the one modified by the filter. + $messageText[] = ts( + 'The default is %1%2, but that does not exist on this site either.', + [ + 1 => $config->userFrameworkBaseURL, + 2 => $altSlugs[0], + ] + ); + } + + $messageText[] = ts( + 'You can set the correct base page in the <a href="%1">WordPress integration settings</a>.', + [1 => $cmsSettings] + ); + } + } + + return [ + new CRM_Utils_Check_Message( + __FUNCTION__, + implode(' ', $messageText), + ts('WordPress Base Page Missing'), + \Psr\Log\LogLevel::ERROR, + 'fa-wordpress' + ), + ]; + } + + /** + * See if a page exists and is published. + * + * @param string $slug + * The page path. + * @return int + * -1 if it's missing + * 0 if it's present but not published + * 1 if it's present and published + */ + private static function pageExists($slug) { + $basePage = get_page_by_path($slug); + if (!$basePage) { + return -1; + } + + return (int) ($basePage->post_status == 'publish'); + } + +} diff --git a/civicrm/CRM/Utils/Check/Component/Env.php b/civicrm/CRM/Utils/Check/Component/Env.php index 299e0ea4c9..26e77d8cae 100644 --- a/civicrm/CRM/Utils/Check/Component/Env.php +++ b/civicrm/CRM/Utils/Check/Component/Env.php @@ -17,7 +17,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkPhpVersion() { $messages = []; @@ -82,7 +82,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkPhpMysqli() { $messages = []; @@ -107,7 +107,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Check that the MySQL time settings match the PHP time settings. * - * @return array<CRM_Utils_Check_Message> an empty array, or a list of warnings + * @return CRM_Utils_Check_Message[] */ public function checkMysqlTime() { $messages = []; @@ -117,11 +117,10 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { if (!CRM_Utils_Time::isEqual($phpNow, $sqlNow, 2.5 * 60)) { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts('Timestamps reported by MySQL (eg "%2") and PHP (eg "%3" ) are mismatched.<br /><a href="%1">Read more about this warning</a>', [ - 1 => CRM_Utils_System::docURL2('sysadmin/requirements/#mysql-time', TRUE), - 2 => $sqlNow, - 3 => $phpNow, - ]), + ts('Timestamps reported by MySQL (eg "%1") and PHP (eg "%2" ) are mismatched.', [ + 1 => $sqlNow, + 2 => $phpNow, + ]) . '<br />' . CRM_Utils_System::docURL2('sysadmin/requirements/#mysql-time'), ts('Timestamp Mismatch'), \Psr\Log\LogLevel::ERROR, 'fa-server' @@ -132,7 +131,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkDebug() { $config = CRM_Core_Config::singleton(); @@ -142,7 +141,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { ts('Warning: Debug is enabled in <a href="%1">system settings</a>. This should not be enabled on production servers.', [1 => CRM_Utils_System::url('civicrm/admin/setting/debug', 'reset=1')]), ts('Debug Mode Enabled'), - \Psr\Log\LogLevel::WARNING, + CRM_Core_Config::environment() == 'Production' ? \Psr\Log\LogLevel::WARNING : \Psr\Log\LogLevel::INFO, 'fa-bug' ); $message->addAction( @@ -158,11 +157,17 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * @return array + * @param bool $force + * @return CRM_Utils_Check_Message[] */ - public function checkOutboundMail() { + public function checkOutboundMail($force = FALSE) { $messages = []; + // CiviMail doesn't work in non-production environments; skip. + if (!$force && CRM_Core_Config::environment() != 'Production') { + return $messages; + } + $mailingInfo = Civi::settings()->get('mailing_backend'); if (($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_REDIRECT_TO_DB || (defined('CIVICRM_MAIL_LOG') && CIVICRM_MAIL_LOG) @@ -184,11 +189,17 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Check that domain email and org name are set - * @return array + * @param bool $force + * @return CRM_Utils_Check_Message[] */ - public function checkDomainNameEmail() { + public function checkDomainNameEmail($force = FALSE) { $messages = []; + // CiviMail doesn't work in non-production environments; skip. + if (!$force && CRM_Core_Config::environment() != 'Production') { + return $messages; + } + list($domainEmailName, $domainEmailAddress) = CRM_Core_BAO_Domain::getNameAndEmail(TRUE); $domain = CRM_Core_BAO_Domain::getDomain(); $domainName = $domain->name; @@ -218,7 +229,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, $msg, - ts('Complete Setup'), + ts('Organization Setup'), \Psr\Log\LogLevel::WARNING, 'fa-check-square-o' ); @@ -229,10 +240,17 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Checks if a default bounce handling mailbox is set up - * @return array + * @param bool $force + * @return CRM_Utils_Check_Message[] */ - public function checkDefaultMailbox() { + public function checkDefaultMailbox($force = FALSE) { $messages = []; + + // CiviMail doesn't work in non-production environments; skip. + if (!$force && CRM_Core_Config::environment() != 'Production') { + return $messages; + } + $config = CRM_Core_Config::singleton(); if (in_array('CiviMail', $config->enableComponents) && @@ -246,10 +264,9 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { \Psr\Log\LogLevel::WARNING, 'fa-envelope' ); - $docUrl = 'target="_blank" href="' . CRM_Utils_System::docURL(['page' => 'user/advanced-configuration/email-system-configuration/', 'URLonly' => TRUE]) . '""'; $message->addHelp( ts('A default mailbox must be configured for email bounce processing.') . '<br />' . - ts("Learn more in the <a %1>online documentation</a>.", [1 => $docUrl]) + CRM_Utils_System::docURL2('user/advanced-configuration/email-system-configuration/') ); $messages[] = $message; } @@ -258,55 +275,78 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * Checks if cron has run in a reasonable amount of time - * @return array + * Checks if cron has run in the past hour (3600 seconds) + * @param bool $force + * @return CRM_Utils_Check_Message[] + * @throws CRM_Core_Exception */ - public function checkLastCron() { + public function checkLastCron($force = FALSE) { + // TODO: Remove this check when MINIMUM_UPGRADABLE_VERSION goes to 4.7. + if (CRM_Utils_System::version() !== CRM_Core_BAO_Domain::version()) { + return []; + } + $messages = []; + // Cron doesn't work in non-production environments; skip. + if (!$force && CRM_Core_Config::environment() != 'Production') { + return $messages; + } + $statusPreference = new CRM_Core_DAO_StatusPreference(); $statusPreference->domain_id = CRM_Core_Config::domainID(); - $statusPreference->name = 'checkLastCron'; + $statusPreference->name = __FUNCTION__; + + $level = \Psr\Log\LogLevel::INFO; + $now = gmdate('U'); + // Get timestamp of last cron run if ($statusPreference->find(TRUE) && !empty($statusPreference->check_info)) { - $lastCron = $statusPreference->check_info; - $msg = ts('Last cron run at %1.', [1 => CRM_Utils_Date::customFormat(date('c', $lastCron))]); + $msg = ts('Last cron run at %1.', [1 => CRM_Utils_Date::customFormat(date('c', $statusPreference->check_info))]); } + // If cron record doesn't exist, this is a new install. Make a placeholder record (prefs='new'). else { - $lastCron = 0; - $msg = ts('No cron runs have been recorded.'); + $statusPreference = CRM_Core_BAO_StatusPreference::create([ + 'name' => __FUNCTION__, + 'check_info' => $now, + 'prefs' => 'new', + ]); } + $lastCron = $statusPreference->check_info; - if ($lastCron > gmdate('U') - 3600) { - $messages[] = new CRM_Utils_Check_Message( - __FUNCTION__, - $msg, - ts('Cron Running OK'), - \Psr\Log\LogLevel::INFO, - 'fa-clock-o' - ); + if ($statusPreference->prefs !== 'new' && $lastCron > $now - 3600) { + $title = ts('Cron Running OK'); } else { - $cronLink = 'target="_blank" href="' . htmlentities(CRM_Utils_System::docURL2('sysadmin/setup/jobs/', TRUE)) . '""'; - $msg .= '<p>' . ts('To enable scheduling support, please <a %1>set up the cron job</a>.', [ - 1 => $cronLink, - ]) . '</p>'; - $message = new CRM_Utils_Check_Message( - __FUNCTION__, - $msg, - ts('Cron Not Running'), - ($lastCron > gmdate('U') - 86400) ? \Psr\Log\LogLevel::WARNING : \Psr\Log\LogLevel::ERROR, - 'fa-clock-o' - ); - $messages[] = $message; + // If placeholder record found, give one day "grace period" for admin to set-up cron + if ($statusPreference->prefs === 'new') { + $title = ts('Set-up Cron'); + $msg = ts('No cron runs have been recorded.'); + // After 1 day (86400 seconds) increase the error level + $level = ($lastCron > $now - 86400) ? \Psr\Log\LogLevel::NOTICE : \Psr\Log\LogLevel::WARNING; + } + else { + $title = ts('Cron Not Running'); + // After 1 day (86400 seconds) increase the error level + $level = ($lastCron > $now - 86400) ? \Psr\Log\LogLevel::WARNING : \Psr\Log\LogLevel::ERROR; + } + $msg .= '<p>' . ts('A cron job is required to execute scheduled jobs automatically.') . + '<br />' . CRM_Utils_System::docURL2('sysadmin/setup/jobs/') . '</p>'; } + $messages[] = new CRM_Utils_Check_Message( + __FUNCTION__, + $msg, + $title, + $level, + 'fa-clock-o' + ); return $messages; } /** * Recommend that sites use path-variables for their directories and URLs. - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkUrlVariables() { $messages = []; @@ -343,7 +383,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Recommend that sites use path-variables for their directories and URLs. - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkDirVariables() { $messages = []; @@ -383,8 +423,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Check that important directories are writable. * - * @return array - * Any CRM_Utils_Check_Message instances that need to be generated. + * @return CRM_Utils_Check_Message[] */ public function checkDirsWritable() { $notWritable = []; @@ -432,7 +471,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Checks if new versions are available - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkVersion() { $messages = []; @@ -482,7 +521,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Checks if extensions are set up properly - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkExtensions() { $messages = []; @@ -569,10 +608,9 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { // CRM-13141 There may not be any compatible extensions available for the requested CiviCRM version + CMS. If so, $extdir is empty so just return a notice. $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts('There are currently no extensions on the CiviCRM public extension directory which are compatible with version %1. If you want to install an extension which is not marked as compatible, you may be able to <a %2>download and install extensions manually</a> (depending on access to your web server).', [ + ts('There are currently no extensions on the CiviCRM public extension directory which are compatible with version %1. If you want to install an extension which is not marked as compatible, you may be able to download and install extensions manually (depending on access to your web server).', [ 1 => CRM_Utils_System::majorVersion(), - 2 => 'href="http://wiki.civicrm.org/confluence/display/CRMDOC/Extensions"', - ]), + ]) . '<br />' . CRM_Utils_System::docURL2('sysadmin/customize/extensions/#installing-a-new-extension'), ts('No Extensions Available for this Version'), \Psr\Log\LogLevel::NOTICE, 'fa-plug' @@ -626,7 +664,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { if (!$okextensions && !$updates && !$errors) { $messages[] = new CRM_Utils_Check_Message( - 'extensionsOk', + __FUNCTION__ . 'Ok', ts('No extensions installed. <a %1>Browse available extensions</a>.', [ 1 => 'href="' . CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1') . '"', ]), @@ -648,7 +686,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { if ($updates) { $messages[] = new CRM_Utils_Check_Message( - 'extensionUpdates', + __FUNCTION__ . 'Updates', '<ul><li>' . implode('</li><li>', $updates) . '</li></ul>', ts('Extension Update Available', ['plural' => '%count Extension Updates Available', 'count' => count($updates)]), \Psr\Log\LogLevel::WARNING, @@ -664,7 +702,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { $message = ts('All extensions are up-to-date:'); } $messages[] = new CRM_Utils_Check_Message( - 'extensionsOk', + __FUNCTION__ . 'Ok', $message . '<ul><li>' . implode('</li><li>', $okextensions) . '</li></ul>', ts('Extensions'), \Psr\Log\LogLevel::INFO, @@ -678,7 +716,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Checks if there are pending extension upgrades. * - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkExtensionUpgrades() { if (CRM_Extension_Upgrades::hasPending()) { @@ -702,7 +740,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Checks if CiviCRM database version is up-to-date - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkDbVersion() { $messages = []; @@ -771,8 +809,8 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * ensure that all CiviCRM tables are InnoDB - * @return array + * Ensure that all CiviCRM tables are InnoDB + * @return CRM_Utils_Check_Message[] */ public function checkDbEngine() { $messages = []; @@ -790,12 +828,18 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } /** - * ensure reply id is set to any default value - * @return array + * Ensure reply id is set to any default value + * @param bool $force + * @return CRM_Utils_Check_Message[] */ - public function checkReplyIdForMailing() { + public function checkReplyIdForMailing($force = FALSE) { $messages = []; + // CiviMail doesn't work in non-production environments; skip. + if (!$force && CRM_Core_Config::environment() != 'Production') { + return $messages; + } + if (!CRM_Mailing_PseudoConstant::defaultComponent('Reply', '')) { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, @@ -810,7 +854,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Check for required mbstring extension - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkMbstring() { $messages = []; @@ -829,7 +873,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { /** * Check if environment is Production. - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkEnvironment() { $messages = []; @@ -840,47 +884,17 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { __FUNCTION__, ts('The environment of this CiviCRM instance is set to \'%1\'. Certain functionality like scheduled jobs has been disabled.', [1 => $environment]), ts('Non-Production Environment'), - \Psr\Log\LogLevel::ALERT, + \Psr\Log\LogLevel::NOTICE, 'fa-bug' ); } return $messages; } - /** - * Check that the resource URL points to the correct location. - * @return array - */ - public function checkResourceUrl() { - $messages = []; - // Skip when run during unit tests, you can't check without a CMS. - if (CRM_Core_Config::singleton()->userFramework == 'UnitTests') { - return $messages; - } - // CRM-21629 Set User Agent to avoid being blocked by filters - stream_context_set_default([ - 'http' => ['user_agent' => 'CiviCRM'], - ]); - - // Does arrow.png exist where we expect it? - $arrowUrl = CRM_Core_Config::singleton()->userFrameworkResourceURL . 'packages/jquery/css/images/arrow.png'; - if ($this->fileExists($arrowUrl) === FALSE) { - $messages[] = new CRM_Utils_Check_Message( - __FUNCTION__, - ts('The Resource URL is not set correctly. Please set the <a href="%1">CiviCRM Resource URL</a>.', - [1 => CRM_Utils_System::url('civicrm/admin/setting/url', 'reset=1')]), - ts('Incorrect Resource URL'), - \Psr\Log\LogLevel::ERROR, - 'fa-server' - ); - } - return $messages; - } - /** * Check for utf8mb4 support by MySQL. * - * @return array<CRM_Utils_Check_Message> an empty array, or a list of warnings + * @return CRM_Utils_Check_Message[] */ public function checkMysqlUtf8mb4() { $messages = []; @@ -897,7 +911,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { else { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts("Future versions of CiviCRM may require MySQL to support utf8mb4 encoding. It is recommended, though not yet required. Please discuss with your server administrator about configuring your MySQL server for utf8mb4. CiviCRM's recommended configurations are in the <a href='%1' title='System Administrator Guide'>System Administrator Guide</a>", [1 => CRM_Utils_System::docURL2("sysadmin/requirements/#mysql-configuration", TRUE)]), + ts("Future versions of CiviCRM may require MySQL to support utf8mb4 encoding. It is recommended, though not yet required. Please discuss with your server administrator about configuring your MySQL server for utf8mb4. CiviCRM's recommended configurations are in the System Administrator Guide") . '<br />' . CRM_Utils_System::docURL2('sysadmin/requirements/#mysql-configuration'), ts('MySQL Emoji Support (utf8mb4)'), \Psr\Log\LogLevel::WARNING, 'fa-database' diff --git a/civicrm/CRM/Utils/Check/Component/FinancialTypeAcls.php b/civicrm/CRM/Utils/Check/Component/FinancialTypeAcls.php index c46e93152b..05601e0778 100644 --- a/civicrm/CRM/Utils/Check/Component/FinancialTypeAcls.php +++ b/civicrm/CRM/Utils/Check/Component/FinancialTypeAcls.php @@ -16,6 +16,10 @@ */ class CRM_Utils_Check_Component_FinancialTypeAcls extends CRM_Utils_Check_Component { + /** + * @return CRM_Utils_Check_Message[] + * @throws CiviCRM_API3_Exception + */ public static function checkFinancialAclReport() { $messages = []; $ftAclSetting = Civi::settings()->get('acl_financial_type'); diff --git a/civicrm/CRM/Utils/Check/Component/OptionGroups.php b/civicrm/CRM/Utils/Check/Component/OptionGroups.php index 77a1679a14..62017ae83e 100644 --- a/civicrm/CRM/Utils/Check/Component/OptionGroups.php +++ b/civicrm/CRM/Utils/Check/Component/OptionGroups.php @@ -17,9 +17,13 @@ class CRM_Utils_Check_Component_OptionGroups extends CRM_Utils_Check_Component { /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkOptionGroupValues() { + if (CRM_Utils_System::version() !== CRM_Core_BAO_Domain::version()) { + return []; + } + $messages = []; $problemValues = []; $optionGroups = civicrm_api3('OptionGroup', 'get', [ diff --git a/civicrm/CRM/Utils/Check/Component/PriceFields.php b/civicrm/CRM/Utils/Check/Component/PriceFields.php index cfb6cf7114..03816c98fe 100644 --- a/civicrm/CRM/Utils/Check/Component/PriceFields.php +++ b/civicrm/CRM/Utils/Check/Component/PriceFields.php @@ -19,7 +19,7 @@ class CRM_Utils_Check_Component_PriceFields extends CRM_Utils_Check_Component { /** * Display warning about invalid priceFields - * + * @return CRM_Utils_Check_Message[] */ public function checkPriceFields() { $sql = "SELECT DISTINCT ps.title as ps_title, ps.id as ps_id, psf.label as psf_label diff --git a/civicrm/CRM/Utils/Check/Component/Schema.php b/civicrm/CRM/Utils/Check/Component/Schema.php index c1333dfa05..4e9e9c7ed7 100644 --- a/civicrm/CRM/Utils/Check/Component/Schema.php +++ b/civicrm/CRM/Utils/Check/Component/Schema.php @@ -19,7 +19,7 @@ class CRM_Utils_Check_Component_Schema extends CRM_Utils_Check_Component { /** * Check defined indices exist. * - * @return array + * @return CRM_Utils_Check_Message[] * @throws \CiviCRM_API3_Exception */ public function checkIndices() { @@ -62,7 +62,7 @@ class CRM_Utils_Check_Component_Schema extends CRM_Utils_Check_Component { } /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkMissingLogTables() { $messages = []; @@ -91,7 +91,7 @@ class CRM_Utils_Check_Component_Schema extends CRM_Utils_Check_Component { /** * Check that no smart groups exist that contain deleted custom fields. * - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkSmartGroupCustomFieldCriteria() { if (CRM_Core_BAO_Domain::isDBUpdateRequired()) { @@ -182,6 +182,9 @@ class CRM_Utils_Check_Component_Schema extends CRM_Utils_Check_Component { return $messages; } + /** + * @return CRM_Utils_Check_Message[] + */ public function checkMoneyValueFormatConfig() { $messages = []; if (CRM_Core_Config::singleton()->moneyvalueformat !== '%!i') { diff --git a/civicrm/CRM/Utils/Check/Component/Security.php b/civicrm/CRM/Utils/Check/Component/Security.php index 3a17c834fd..943add05d4 100644 --- a/civicrm/CRM/Utils/Check/Component/Security.php +++ b/civicrm/CRM/Utils/Check/Component/Security.php @@ -20,6 +20,7 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { * CMS have a different pattern to their default file path and URL. * * @todo Use Civi::paths instead? + * @return string */ public function getFilePathMarker() { $config = CRM_Core_Config::singleton(); @@ -47,8 +48,7 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { * is browseable or visible to search engines; it means it can be * requested directly. * - * @return array - * Array of messages + * @return CRM_Utils_Check_Message[] * @see CRM-14091 */ public function checkLogFileIsNotAccessible() { @@ -100,8 +100,7 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { * Being retrievable doesn't mean the files are browseable or visible * to search engines; it only means they can be requested directly. * - * @return array - * Array of messages + * @return CRM_Utils_Check_Message[] * @see CRM-14091 * * @todo Test with WordPress, Joomla. @@ -148,8 +147,7 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { * MAY trigger false positives (if you have files named 'a', 'e' * we'll probably match that). * - * @return array - * Array of messages + * @return CRM_Utils_Check_Message[] * @see CRM-14091 * * @todo Test with WordPress, Joomla. @@ -192,35 +190,36 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { * These files have generally been deleted but Civi source tree but could be * left online if one does a faulty upgrade. * - * @return array of messages + * @return CRM_Utils_Check_Message[] */ public function checkFilesAreNotPresent() { - global $civicrm_root; + $packages_path = rtrim(\Civi::paths()->getPath('[civicrm.packages]/'), '/' . DIRECTORY_SEPARATOR); + $vendor_path = rtrim(\Civi::paths()->getPath('[civicrm.vendor]/'), '/' . DIRECTORY_SEPARATOR); $messages = []; $files = [ [ // CRM-16005, upgraded from Civi <= 4.5.6 - "{$civicrm_root}/packages/dompdf/dompdf.php", + "{$packages_path}/dompdf/dompdf.php", \Psr\Log\LogLevel::CRITICAL, ], [ // CRM-16005, Civi >= 4.5.7 - "{$civicrm_root}/packages/vendor/dompdf/dompdf/dompdf.php", + "{$packages_path}/vendor/dompdf/dompdf/dompdf.php", \Psr\Log\LogLevel::CRITICAL, ], [ // CRM-16005, Civi >= 4.6.0 - "{$civicrm_root}/vendor/dompdf/dompdf/dompdf.php", + "{$vendor_path}/dompdf/dompdf/dompdf.php", \Psr\Log\LogLevel::CRITICAL, ], [ // CIVI-SA-2013-001 - "{$civicrm_root}/packages/OpenFlashChart/php-ofc-library/ofc_upload_image.php", + "{$packages_path}/OpenFlashChart/php-ofc-library/ofc_upload_image.php", \Psr\Log\LogLevel::CRITICAL, ], [ - "{$civicrm_root}/packages/html2text/class.html2text.inc", + "{$packages_path}/html2text/class.html2text.inc", \Psr\Log\LogLevel::CRITICAL, ], ]; @@ -240,6 +239,7 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { /** * Discourage use of remote profile forms. + * @return CRM_Utils_Check_Message[] */ public function checkRemoteProfile() { $messages = []; @@ -260,8 +260,8 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { } /** - * Check that the sysadmin has not modified the Cxn - * security setup. + * Check that the sysadmin has not modified the Cxn security setup. + * @return CRM_Utils_Check_Message[] */ public function checkCxnOverrides() { $list = []; diff --git a/civicrm/CRM/Utils/Check/Component/Source.php b/civicrm/CRM/Utils/Check/Component/Source.php index 7a31d3341a..683f7cd3e3 100644 --- a/civicrm/CRM/Utils/Check/Component/Source.php +++ b/civicrm/CRM/Utils/Check/Component/Source.php @@ -58,7 +58,7 @@ class CRM_Utils_Check_Component_Source extends CRM_Utils_Check_Component { } /** - * @return array + * @return CRM_Utils_Check_Message[] * Each item is an array with keys: * - name: string, an abstract name * - path: string, a full file path @@ -99,7 +99,7 @@ class CRM_Utils_Check_Component_Source extends CRM_Utils_Check_Component { } /** - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkOrphans() { $orphans = $this->findOrphanedFiles(); diff --git a/civicrm/CRM/Utils/Check/Component/Timestamps.php b/civicrm/CRM/Utils/Check/Component/Timestamps.php index 3e9808acad..432a011e5f 100644 --- a/civicrm/CRM/Utils/Check/Component/Timestamps.php +++ b/civicrm/CRM/Utils/Check/Component/Timestamps.php @@ -21,7 +21,7 @@ class CRM_Utils_Check_Component_Timestamps extends CRM_Utils_Check_Component { /** * Check that various columns are TIMESTAMP and not DATETIME. (CRM-9683, etal) * - * @return array + * @return CRM_Utils_Check_Message[] */ public function checkSchema() { $problems = []; diff --git a/civicrm/CRM/Utils/Check/Message.php b/civicrm/CRM/Utils/Check/Message.php index 139ab43ff3..94f51db49d 100644 --- a/civicrm/CRM/Utils/Check/Message.php +++ b/civicrm/CRM/Utils/Check/Message.php @@ -246,6 +246,11 @@ class CRM_Utils_Check_Message { * @throws \CiviCRM_API3_Exception */ private function checkStatusPreference() { + // TODO: Remove this check when MINIMUM_UPGRADABLE_VERSION goes to 4.7. + if (CRM_Utils_System::version() !== CRM_Core_BAO_Domain::version() && !CRM_Core_DAO::checkTableExists('civicrm_status_pref')) { + return FALSE; + } + $this->hiddenUntil = FALSE; // Debug & info can't be hidden if ($this->level < 2) { diff --git a/civicrm/CRM/Utils/EnglishNumber.php b/civicrm/CRM/Utils/EnglishNumber.php index 098dcd2132..08a7a2a1f1 100644 --- a/civicrm/CRM/Utils/EnglishNumber.php +++ b/civicrm/CRM/Utils/EnglishNumber.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * * Utilities for rendering numbers as English. * * Note: This file may be used in a standalone environment. Please ensure it diff --git a/civicrm/CRM/Utils/File.php b/civicrm/CRM/Utils/File.php index ff1bccb6bf..67da4b10a6 100644 --- a/civicrm/CRM/Utils/File.php +++ b/civicrm/CRM/Utils/File.php @@ -753,9 +753,16 @@ HTACCESS; * @return array(string) */ public static function findFiles($dir, $pattern, $relative = FALSE) { - if (!is_dir($dir)) { + if (!is_dir($dir) || !is_readable($dir)) { return []; } + // Which dirs should we exclude from our searches? + // If not defined, we default to excluding any dirname that begins + // with a . which is the old behaviour and therefore excludes .git/ + $excludeDirsPattern = defined('CIVICRM_EXCLUDE_DIRS_PATTERN') + ? constant('CIVICRM_EXCLUDE_DIRS_PATTERN') + : '@' . preg_quote(DIRECTORY_SEPARATOR) . '\.@'; + $dir = rtrim($dir, '/'); $todos = [$dir]; $result = []; @@ -769,13 +776,21 @@ HTACCESS; } } } + // Find subdirs to recurse into. if ($dh = opendir($subdir)) { while (FALSE !== ($entry = readdir($dh))) { $path = $subdir . DIRECTORY_SEPARATOR . $entry; - if ($entry{0} == '.') { - // ignore - } - elseif (is_dir($path)) { + // Exclude . (self) and .. (parent) to avoid infinite loop. + // Exclude configured exclude dirs. + // Exclude dirs we can't read. + // Exclude anything that's not a dir. + if ( + $entry !== '.' + && $entry !== '..' + && (empty($excludeDirsPattern) || !preg_match($excludeDirsPattern, $path)) + && is_dir($path) + && is_readable($path) + ) { $todos[] = $path; } } diff --git a/civicrm/CRM/Utils/Hook.php b/civicrm/CRM/Utils/Hook.php index 38c1da128e..381b69f8f6 100644 --- a/civicrm/CRM/Utils/Hook.php +++ b/civicrm/CRM/Utils/Hook.php @@ -132,7 +132,7 @@ abstract class CRM_Utils_Hook { * but also accepts enough information to support Symfony Event * dispatching. * - * @param array|int $names + * @param array $names * (Recommended) Array of parameter names, in order. * Using an array is recommended because it enables full * event-broadcasting behaviors. @@ -152,32 +152,17 @@ abstract class CRM_Utils_Hook { &$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6, $fnSuffix ) { - if (!\Civi\Core\Container::isContainerBooted()) { - $prebootHooks = ['civicrm_container', 'civicrm_entityTypes']; - // 'civicrm_config' ? - if (in_array($fnSuffix, $prebootHooks)) { - $count = is_array($names) ? count($names) : $names; - return $this->invokeViaUF($count, $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $fnSuffix); - } - else { - // TODO: Emit a warning, eg - // error_log("Warning: hook_$fnSuffix fired prematurely. Dropped."); - return; - } - } - if (!is_array($names)) { // We were called with the old contract wherein $names is actually an int. // Symfony dispatcher requires some kind of name. - // TODO: Emit a warning, eg - // error_log("Warning: hook_$fnSuffix does not give names for its parameters. It will present odd names to any Symfony event listeners."); + Civi::log()->warning("hook_$fnSuffix should be updated to pass an array of parameter names to CRM_Utils_Hook::invoke().", ['civi.tag' => 'deprecated']); $compatNames = ['arg1', 'arg2', 'arg3', 'arg4', 'arg5', 'arg6']; $names = array_slice($compatNames, 0, (int) $names); } $event = \Civi\Core\Event\GenericHookEvent::createOrdered( $names, - array(&$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6) + [&$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6] ); \Civi::dispatcher()->dispatch('hook_' . $fnSuffix, $event); return $event->getReturnValues(); @@ -692,7 +677,7 @@ abstract class CRM_Utils_Hook { * the return value is ignored */ public static function activeTheme(&$theme, $context) { - return self::singleton()->invoke(array('theme', 'context'), $theme, $context, + return self::singleton()->invoke(['theme', 'context'], $theme, $context, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, 'civicrm_activeTheme' ); @@ -883,7 +868,7 @@ abstract class CRM_Utils_Hook { * @return mixed */ public static function alterAdminPanel(&$panels) { - return self::singleton()->invoke(array('panels'), $panels, + return self::singleton()->invoke(['panels'], $panels, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, 'civicrm_alterAdminPanel' ); @@ -2425,13 +2410,20 @@ abstract class CRM_Utils_Hook { /** * Check system status. * - * @param array $messages - * Array<CRM_Utils_Check_Message>. A list of messages regarding system status. + * @param CRM_Utils_Check_Message[] $messages + * A list of messages regarding system status + * @param array $statusNames + * If specified, only these checks are being requested and others should be skipped + * @param bool $includeDisabled + * Run checks that have been explicitly disabled (default false) * @return mixed */ - public static function check(&$messages) { - return self::singleton() - ->invoke(['messages'], $messages, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, 'civicrm_check'); + public static function check(&$messages, $statusNames = [], $includeDisabled = FALSE) { + return self::singleton()->invoke(['messages'], + $messages, $statusNames, $includeDisabled, + self::$_nullObject, self::$_nullObject, self::$_nullObject, + 'civicrm_check' + ); } /** diff --git a/civicrm/CRM/Utils/Hook/WordPress.php b/civicrm/CRM/Utils/Hook/WordPress.php index a82553f1b5..4a2c63f377 100644 --- a/civicrm/CRM/Utils/Hook/WordPress.php +++ b/civicrm/CRM/Utils/Hook/WordPress.php @@ -80,13 +80,13 @@ class CRM_Utils_Hook_WordPress extends CRM_Utils_Hook { // are incompatible with the WordPress Plugin API: // // civicrm_upgrade - // http://wiki.civicrm.org/confluence/display/CRMDOC43/hook_civicrm_upgrade + // https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade/ // // civicrm_caseSummary - // http://wiki.civicrm.org/confluence/display/CRMDOC43/hook_civicrm_caseSummary + // https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_caseSummary/ // // civicrm_dashboard - // http://wiki.civicrm.org/confluence/display/CRMDOC43/hook_civicrm_dashboard + // https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_dashboard/ // distinguish between types of hook if (!in_array($fnSuffix, $this->hooksThatReturn)) { diff --git a/civicrm/CRM/Utils/JS.php b/civicrm/CRM/Utils/JS.php index da228d2413..66c03e0f48 100644 --- a/civicrm/CRM/Utils/JS.php +++ b/civicrm/CRM/Utils/JS.php @@ -152,6 +152,7 @@ class CRM_Utils_JS { /** * @param string $str + * @param bool $throwException * @return string|null * @throws CRM_Core_Exception */ diff --git a/civicrm/CRM/Utils/Mail.php b/civicrm/CRM/Utils/Mail.php index 2b6e5120a7..0ac404f143 100644 --- a/civicrm/CRM/Utils/Mail.php +++ b/civicrm/CRM/Utils/Mail.php @@ -152,6 +152,8 @@ class CRM_Utils_Mail { * text : text of the message * html : html version of the message * replyTo : reply-to header in the email + * returnpath : email address for bounces to be sent to + * messageId : Message ID for this email mesage * attachments: an associative array of * fullPath : complete pathname to the file * mime_type: mime type of the attachment @@ -223,7 +225,7 @@ class CRM_Utils_Mail { } $headers['Date'] = date('r'); if ($includeMessageId) { - $headers['Message-ID'] = '<' . uniqid('civicrm_', TRUE) . "@$emailDomain>"; + $headers['Message-ID'] = $params['messageId'] ?? '<' . uniqid('civicrm_', TRUE) . "@$emailDomain>"; } if (!empty($params['autoSubmitted'])) { $headers['Auto-Submitted'] = "Auto-Generated"; @@ -261,7 +263,11 @@ class CRM_Utils_Mail { $msg->addAttachment( $attach['fullPath'], $attach['mime_type'], - $attach['cleanName'] + $attach['cleanName'], + TRUE, + 'base64', + 'attachment', + (isset($attach['charset']) ? $attach['charset'] : '') ); } } diff --git a/civicrm/CRM/Utils/Migrate/Import.php b/civicrm/CRM/Utils/Migrate/Import.php index 420198d791..819fcc0ea0 100644 --- a/civicrm/CRM/Utils/Migrate/Import.php +++ b/civicrm/CRM/Utils/Migrate/Import.php @@ -349,8 +349,7 @@ AND v.name = %1 } foreach ($fields_indexed_by_group_id as $group_id => $fields) { - \Civi\Api4\CustomField::save() - ->setCheckPermissions(FALSE) + \Civi\Api4\CustomField::save(FALSE) ->setDefaults(['custom_group_id' => $group_id]) ->setRecords(json_decode(json_encode($fields), TRUE)) ->execute(); diff --git a/civicrm/CRM/Utils/PDF/Utils.php b/civicrm/CRM/Utils/PDF/Utils.php index c5cf7003f1..6fc9959b86 100644 --- a/civicrm/CRM/Utils/PDF/Utils.php +++ b/civicrm/CRM/Utils/PDF/Utils.php @@ -207,7 +207,7 @@ class CRM_Utils_PDF_Utils { * @param string $fileName */ public static function _html2pdf_wkhtmltopdf($paper_size, $orientation, $margins, $html, $output, $fileName) { - require_once 'packages/snappy/src/autoload.php'; + require_once 'snappy/src/autoload.php'; $config = CRM_Core_Config::singleton(); $snappy = new Knp\Snappy\Pdf($config->wkhtmltopdfPath); $snappy->setOption("page-width", $paper_size[2] . "pt"); diff --git a/civicrm/CRM/Utils/REST.php b/civicrm/CRM/Utils/REST.php index 5b436c0f20..03c7c26d1c 100644 --- a/civicrm/CRM/Utils/REST.php +++ b/civicrm/CRM/Utils/REST.php @@ -212,7 +212,7 @@ class CRM_Utils_REST { // interface can be disabled in more change to the configuration file. // first check for civicrm site key if (!CRM_Utils_System::authenticateKey(FALSE)) { - $docLink = CRM_Utils_System::docURL2("Managing Scheduled Jobs", TRUE, NULL, NULL, NULL, "wiki"); + $docLink = CRM_Utils_System::docURL2('sysadmin/setup/jobs', TRUE); $key = $requestParams['key'] ?? NULL; if (empty($key)) { return self::error("FATAL: mandatory param 'key' missing. More info at: " . $docLink); diff --git a/civicrm/CRM/Utils/ReCAPTCHA.php b/civicrm/CRM/Utils/ReCAPTCHA.php index 93747f7b13..14c4272f9d 100644 --- a/civicrm/CRM/Utils/ReCAPTCHA.php +++ b/civicrm/CRM/Utils/ReCAPTCHA.php @@ -78,7 +78,7 @@ class CRM_Utils_ReCAPTCHA { $config = CRM_Core_Config::singleton(); $useSSL = FALSE; if (!function_exists('recaptcha_get_html')) { - require_once 'packages/recaptcha/recaptchalib.php'; + require_once 'recaptcha/recaptchalib.php'; } // Load the Recaptcha api.js over HTTPS diff --git a/civicrm/CRM/Utils/SQL/Select.php b/civicrm/CRM/Utils/SQL/Select.php index 4aa6b7e516..642d98ff2b 100644 --- a/civicrm/CRM/Utils/SQL/Select.php +++ b/civicrm/CRM/Utils/SQL/Select.php @@ -69,6 +69,7 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { private $insertInto = NULL; private $insertVerb = 'INSERT INTO '; private $insertIntoFields = []; + private $onDuplicates = []; private $selects = []; private $from; private $joins = []; @@ -373,6 +374,45 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { return $this->insertInto($table, $fields); } + /** + * Take the results of the SELECT query and copy them into another + * table. + * + * If the same record already exists in the other table (based on + * primary-key or unique-key), then update the corresponding record. + * + * @param string $table + * The table to write data into. + * @param array|string $keys + * List of PK/unique fields + * NOTE: This must match the unique-key that was declared in the schema. + * @param array $mapping + * List of values to select and where to send them. + * + * For example, consider: + * ['relationship_id' => 'rel.id'] + * + * This would select the value of 'rel.id' and write to 'relationship_id'. + * + * @param null|array $args + * Use NULL to skip interpolation; use an array of variables to enable. + * @return $this + */ + public function syncInto($table, $keys, $mapping, $args = NULL) { + $keys = (array) $keys; + + $this->select(array_values($mapping), $args); + $this->insertInto($table, array_keys($mapping)); + + foreach ($mapping as $intoColumn => $fromValue) { + if (!in_array($intoColumn, $keys)) { + $this->onDuplicate("$intoColumn = $fromValue", $args); + } + } + + return $this; + } + /** * @param array $fields * The fields to fill in the other table (in order). @@ -386,6 +426,22 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { return $this; } + /** + * For INSERT INTO...SELECT...' queries, you may give an "ON DUPLICATE UPDATE" clause. + * + * @param string|array $exprs list of SQL expressions + * @param null|array $args use NULL to disable interpolation; use an array of variables to enable + * @return CRM_Utils_SQL_Select + */ + public function onDuplicate($exprs, $args = NULL) { + $exprs = (array) $exprs; + foreach ($exprs as $expr) { + $evaluatedExpr = $this->interpolate($expr, $args); + $this->onDuplicates[$evaluatedExpr] = $evaluatedExpr; + } + return $this; + } + /** * @param array|NULL $parts * List of fields to check (e.g. 'selects', 'joins'). @@ -463,6 +519,15 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { $sql .= 'OFFSET ' . $this->offset . "\n"; } } + if ($this->onDuplicates) { + if ($this->insertVerb === 'INSERT INTO ') { + $sql .= ' ON DUPLICATE KEY UPDATE ' . implode(", ", $this->onDuplicates) . "\n"; + } + else { + throw new \Exception("The ON DUPLICATE clause and only be used with INSERT INTO queries."); + } + } + if ($this->mode === self::INTERPOLATE_OUTPUT) { $sql = $this->interpolate($sql, $this->params, self::INTERPOLATE_OUTPUT); } diff --git a/civicrm/CRM/Utils/SQL/TempTable.php b/civicrm/CRM/Utils/SQL/TempTable.php index f8c4e82d56..8993807f3c 100644 --- a/civicrm/CRM/Utils/SQL/TempTable.php +++ b/civicrm/CRM/Utils/SQL/TempTable.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * * Table naming rules: * - MySQL imposes a 64 char limit. * - All temp tables start with "civicrm_tmp". @@ -136,24 +135,13 @@ class CRM_Utils_SQL_TempTable { /** * Get the utf8 string for the table. * - * If the db collation is already utf8 by default (either - * utf8 or utf84mb) then rely on that. Otherwise set to utf8. - * - * Respecting the DB collation supports utf8mb4 adopters, which is currently - * not the norm in civi installs. + * Our tables are either utf8_unicode_ci OR utf8mb8_unicode_ci - check the contact table + * to see which & use the matching one. * * @return string */ public function getUtf8String() { - if (!$this->utf8) { - return ''; - } - $dbUTF = CRM_Core_BAO_SchemaHandler::getDBCollation(); - if (in_array($dbUTF, ['utf8_unicode_ci', 'utf8mb4_unicode_ci']) - && in_array($dbUTF, ['utf8', 'utf8mb4'])) { - return ''; - } - return self::UTF8; + return $this->utf8 ? ('COLLATE ' . CRM_Core_BAO_SchemaHandler::getInUseCollation()) : ''; } /** @@ -169,7 +157,7 @@ class CRM_Utils_SQL_TempTable { $this->toSQL('CREATE'), $columns, $this->memory ? self::MEMORY : self::INNODB, - $this->utf8 ? self::UTF8 : '' + $this->getUtf8String() ); CRM_Core_DAO::executeQuery($sql, [], TRUE, NULL, TRUE, FALSE); $this->createSql = $sql; diff --git a/civicrm/CRM/Utils/String.php b/civicrm/CRM/Utils/String.php index 654b74ff0e..8ffc390096 100644 --- a/civicrm/CRM/Utils/String.php +++ b/civicrm/CRM/Utils/String.php @@ -941,7 +941,7 @@ class CRM_Utils_String { public static function pluralize($str) { $lastLetter = substr($str, -1); $lastTwo = substr($str, -2); - if ($lastLetter == 's' || $lastTwo == 'ch') { + if ($lastLetter == 's' || $lastLetter == 'x' || $lastTwo == 'ch') { return $str . 'es'; } if ($lastLetter == 'y' && $lastTwo != 'ey') { diff --git a/civicrm/CRM/Utils/System.php b/civicrm/CRM/Utils/System.php index 9a7d12db03..74ddd37d93 100644 --- a/civicrm/CRM/Utils/System.php +++ b/civicrm/CRM/Utils/System.php @@ -600,7 +600,7 @@ class CRM_Utils_System { // also make sure the key is sent and is valid $key = trim(CRM_Utils_Array::value('key', $_REQUEST)); - $docAdd = "More info at:" . CRM_Utils_System::docURL2("Managing Scheduled Jobs", TRUE, NULL, NULL, NULL, "wiki"); + $docAdd = "More info at: " . CRM_Utils_System::docURL2('sysadmin/setup/jobs', TRUE); if (!$key) { return self::authenticateAbort( @@ -1390,7 +1390,7 @@ class CRM_Utils_System { } if (!isset($params['text']) or $params['text'] === NULL) { - $params['text'] = ts('(learn more...)'); + $params['text'] = ts('(Learn more...)'); } if (!isset($params['style']) || $params['style'] === NULL) { @@ -1419,7 +1419,7 @@ class CRM_Utils_System { * @return mixed */ public static function formatDocUrl($url) { - return preg_replace('#^(user|sysadmin|dev)/#', '\1/en/stable/', $url); + return preg_replace('#^(installation|user|sysadmin|dev)/#', '\1/en/latest/', $url); } /** @@ -1497,7 +1497,7 @@ class CRM_Utils_System { = CRM_Contribute_BAO_Contribution::$_exportableFields = CRM_Pledge_BAO_Pledge::$_exportableFields = CRM_Core_BAO_CustomField::$_importFields - = CRM_Core_BAO_Cache::$_cache = CRM_Core_DAO::$_dbColumnValueCache = NULL; + = CRM_Core_DAO::$_dbColumnValueCache = NULL; CRM_Core_OptionGroup::flushAll(); CRM_Utils_PseudoConstant::flushAll(); diff --git a/civicrm/CRM/Utils/System/Drupal8.php b/civicrm/CRM/Utils/System/Drupal8.php index 53e2a67dea..78479501e3 100644 --- a/civicrm/CRM/Utils/System/Drupal8.php +++ b/civicrm/CRM/Utils/System/Drupal8.php @@ -56,6 +56,9 @@ class CRM_Utils_System_Drupal8 extends CRM_Utils_System_DrupalBase { // Validate the user object $violations = $account->validate(); if (count($violations)) { + foreach ($violations as $violation) { + CRM_Core_Session::setStatus($violation->getPropertyPath() . ': ' . $violation->getMessage(), '', 'alert'); + } return FALSE; } diff --git a/civicrm/CRM/Utils/System/UnitTests.php b/civicrm/CRM/Utils/System/UnitTests.php index ee53a4a2c4..179906dbec 100644 --- a/civicrm/CRM/Utils/System/UnitTests.php +++ b/civicrm/CRM/Utils/System/UnitTests.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** diff --git a/civicrm/CRM/Utils/System/WordPress.php b/civicrm/CRM/Utils/System/WordPress.php index 63672eeeec..5983774cd7 100644 --- a/civicrm/CRM/Utils/System/WordPress.php +++ b/civicrm/CRM/Utils/System/WordPress.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /** @@ -22,6 +20,13 @@ */ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { + /** + * Get a normalized version of the wpBasePage. + */ + public static function getBasePage() { + return rtrim(Civi::settings()->get('wpBasePage'), '/'); + } + /** */ public function __construct() { @@ -84,6 +89,44 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { 'url' => admin_url('admin.php'), ]; }); + Civi::paths()->register('civicrm.files', function () { + $upload_dir = wp_get_upload_dir(); + + $old = CRM_Core_Config::singleton()->userSystem->getDefaultFileStorage(); + $new = [ + 'path' => $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'civicrm' . DIRECTORY_SEPARATOR, + 'url' => $upload_dir['baseurl'] . '/civicrm/', + ]; + + if ($old['path'] === $new['path']) { + return $new; + } + + $oldExists = file_exists($old['path']); + $newExists = file_exists($new['path']); + + if ($oldExists && !$newExists) { + return $old; + } + elseif (!$oldExists && $newExists) { + return $new; + } + elseif (!$oldExists && !$newExists) { + // neither exists. but that's ok. we're in one of these two cases: + // - we're just starting installation... which will get sorted in a moment + // when someone calls mkdir(). + // - we're running a bespoke setup... which will get sorted in a moment + // by applying $civicrm_paths. + return $new; + } + elseif ($oldExists && $newExists) { + // situation ambiguous. encourage admin to set value explicitly. + if (!isset($GLOBALS['civicrm_paths']['civicrm.files'])) { + \Civi::log()->warning("The system has data from both old+new conventions. Please use civicrm.settings.php to set civicrm.files explicitly."); + } + return $new; + } + }); } else { // Legacy support - only relevant for older extern routes. diff --git a/civicrm/CRM/Utils/Token.php b/civicrm/CRM/Utils/Token.php index 7439473c7a..d3774f5d68 100644 --- a/civicrm/CRM/Utils/Token.php +++ b/civicrm/CRM/Utils/Token.php @@ -250,7 +250,7 @@ class CRM_Utils_Token { /** * @param $token - * @param $domain + * @param CRM_Core_BAO_Domain $domain * @param bool $html * @param bool $escapeSmarty * @@ -261,7 +261,7 @@ class CRM_Utils_Token { // we have to do this because this function is // called only when we find a token in the string - $loc = &$domain->getLocationValues(); + $loc = $domain->getLocationValues(); if (!in_array($token, self::$_tokens['domain'])) { $value = "{domain.$token}"; diff --git a/civicrm/CRM/Utils/VisualBundle.php b/civicrm/CRM/Utils/VisualBundle.php index 8d817290b5..a4b01aa03c 100644 --- a/civicrm/CRM/Utils/VisualBundle.php +++ b/civicrm/CRM/Utils/VisualBundle.php @@ -16,8 +16,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ class CRM_Utils_VisualBundle { diff --git a/civicrm/CRM/Widget/Widget.php b/civicrm/CRM/Widget/Widget.php deleted file mode 100644 index dbc4afe80c..0000000000 --- a/civicrm/CRM/Widget/Widget.php +++ /dev/null @@ -1,197 +0,0 @@ -<?php -/* - * Copyright (C) 2007 Jacob Singh, Sam Lerner - * Licensed to CiviCRM under the Academic Free License version 3.0. - * - * Modified and improved upon by CiviCRM LLC (c) 2007 - */ - -/** - * Class CRM_Widget_Widget - */ -class CRM_Widget_Widget { - - public static $_methodTable; - - public function initialize() { - if (!self::$_methodTable) { - self::$_methodTable = [ - 'getContributionPageData' => [ - 'description' => 'Gets all campaign related data and returns it as a std class.', - 'access' => 'remote', - 'arguments' => [ - 'contributionPageID', - 'widgetID', - ], - ], - 'getEmbedCode' => [ - 'description' => 'Gets embed code. Perhaps overkill, but we can track dropoffs in this case. by # of people requesting embed code / number of unique instances.', - 'access' => 'remote', - 'arguments' => [ - 'contributionPageID', - 'widgetID', - 'format', - ], - ], - ]; - } - } - - public function &methodTable() { - self::initialize(); - - return self::$_methodTable; - } - - /** - * Not implemented - registers an action and unique widget ID. Useful for stats and debugging - * - * @param int $contributionPageID - * @param string $widgetID - * @param string $action - * - * @return string - */ - public function registerRequest($contributionPageID, $widgetID, $action) { - return "I registered a request to $action on $contributionPageID from $widgetID"; - } - - /** - * Gets all campaign related data and returns it as a std class. - * - * @param int $contributionPageID - * @param string $widgetID - * - * @return object - */ - public function getContributionPageData($contributionPageID, $widgetID) { - $config = CRM_Core_Config::singleton(); - - self::registerRequest($contributionPageID, $widgetID, __FUNCTION__); - - $data = new stdClass(); - - if (empty($contributionPageID) || - CRM_Utils_Type::validate($contributionPageID, 'Integer') == NULL - ) { - $data->is_error = TRUE; - CRM_Core_Error::debug_log_message("$contributionPageID is not set"); - return $data; - } - - $widget = new CRM_Contribute_DAO_Widget(); - $widget->contribution_page_id = $contributionPageID; - if (!$widget->find(TRUE)) { - $data->is_error = TRUE; - CRM_Core_Error::debug_log_message("$contributionPageID is not found"); - return $data; - } - - $data->is_error = FALSE; - if (!$widget->is_active) { - $data->is_active = FALSE; - } - - $data->is_active = TRUE; - $data->title = $widget->title; - $data->logo = $widget->url_logo; - $data->button_title = $widget->button_title; - $data->button_url = CRM_Utils_System::url('civicrm/contribute/transact', - "reset=1&id=$contributionPageID", - TRUE, NULL, FALSE, TRUE - ); - $data->about = $widget->about; - - $query = " -SELECT count( id ) as count, - sum( total_amount) as amount -FROM civicrm_contribution -WHERE is_test = 0 -AND contribution_status_id = 1 -AND contribution_page_id = %1"; - $params = [1 => [$contributionPageID, 'Integer']]; - $dao = CRM_Core_DAO::executeQuery($query, $params); - if ($dao->fetch()) { - $data->num_donors = $dao->count; - $data->money_raised = $dao->amount; - } - else { - $data->num_donors = $data->money_raised = 0; - } - - $query = " -SELECT goal_amount, start_date, end_date, is_active -FROM civicrm_contribution_page -WHERE id = %1"; - $params = [1 => [$contributionPageID, 'Integer']]; - $dao = CRM_Core_DAO::executeQuery($query, $params); - if ($dao->fetch()) { - $data->money_target = $dao->goal_amount; - $data->campaign_start = CRM_Utils_Date::customFormat($dao->start_date, $config->dateformatFull); - $data->campaign_end = CRM_Utils_Date::customFormat($dao->end_date, $config->dateformatFull); - - // check for time being between start and end date - $now = time(); - if ($dao->start_date) { - $startDate = CRM_Utils_Date::unixTime($dao->start_date); - if ($startDate && - $startDate >= $now - ) { - $data->is_active = FALSE; - } - } - - if ($dao->end_date) { - $endDate = CRM_Utils_Date::unixTime($dao->end_date); - if ($endDate && - $endDate < $now - ) { - $data->is_active = FALSE; - } - } - } - else { - $data->is_active = FALSE; - } - - // if is_active is false, show this link and hide the contribute button - $data->homepage_link = $widget->url_homepage; - - // movie clip colors, must be in '0xRRGGBB' format - $data->colors = []; - - $hexPrefix = '0x'; - $data->colors["title"] = str_replace('#', $hexPrefix, $widget->color_title); - $data->colors["button"] = str_replace('#', $hexPrefix, $widget->color_button); - $data->colors["bar"] = str_replace('#', $hexPrefix, $widget->color_bar); - $data->colors["main_text"] = str_replace('#', $hexPrefix, $widget->color_main_text); - $data->colors["main"] = str_replace('#', $hexPrefix, $widget->color_main); - $data->colors["main_bg"] = str_replace('#', $hexPrefix, $widget->color_main_bg); - $data->colors["bg"] = str_replace('#', $hexPrefix, $widget->color_bg); - - // these two have colors as normal hex format - // because they're being used in a CSS object - $data->colors["about_link"] = str_replace('#', $hexPrefix, $widget->color_about_link); - $data->colors["homepage_link"] = str_replace('#', $hexPrefix, $widget->color_homepage_link); - - return $data; - } - - /** - * Gets embed code. Perhaps overkill, but we can track dropoffs in this case. - * by # of people reqeusting emebed code / number of unique instances. - * - * @param int $contributionPageID - * @param string $widgetID - * @param string $format - * Either myspace or normal. - * - * @return string - */ - public function getEmbedCode($contributionPageID, $widgetID, $format = "normal") { - self::registerRequest($contributionPageID, $widgetID, __FUNCTION__); - return "<embed>.......................</embed>" . - print_r(func_get_args(), 1); - } - -} diff --git a/civicrm/Civi.php b/civicrm/Civi.php index 95009e35c3..f916756883 100644 --- a/civicrm/Civi.php +++ b/civicrm/Civi.php @@ -64,7 +64,14 @@ class Civi { * @return \Symfony\Component\EventDispatcher\EventDispatcherInterface */ public static function dispatcher() { - return Civi\Core\Container::singleton()->get('dispatcher'); + // NOTE: The dispatcher object is initially created as a boot service + // (ie `dispatcher.boot`). For compatibility with the container (eg + // `RegisterListenersPass` and `createEventDispatcher` addons), + // it is also available as the `dispatcher` service. + // + // The 'dispatcher.boot' and 'dispatcher' services are the same object, + // but 'dispatcher.boot' is resolvable earlier during bootstrap. + return Civi\Core\Container::getBootService('dispatcher.boot'); } /** diff --git a/civicrm/Civi/Api4/Action/Setting/AbstractSettingAction.php b/civicrm/Civi/Api4/Action/Setting/AbstractSettingAction.php index 31e2289682..abbd07ae9a 100644 --- a/civicrm/Civi/Api4/Action/Setting/AbstractSettingAction.php +++ b/civicrm/Civi/Api4/Action/Setting/AbstractSettingAction.php @@ -73,11 +73,11 @@ abstract class AbstractSettingAction extends \Civi\Api4\Generic\AbstractAction { protected function findDomains() { if ($this->domainId == 'all') { - $this->domainId = Domain::get()->setCheckPermissions(FALSE)->addSelect('id')->execute()->column('id'); + $this->domainId = Domain::get(FALSE)->addSelect('id')->execute()->column('id'); } elseif ($this->domainId) { $this->domainId = (array) $this->domainId; - $domains = Domain::get()->setCheckPermissions(FALSE)->addSelect('id')->execute()->column('id'); + $domains = Domain::get(FALSE)->addSelect('id')->execute()->column('id'); $invalid = array_diff($this->domainId, $domains); if ($invalid) { throw new \API_Exception('Invalid domain id: ' . implode(', ', $invalid)); diff --git a/civicrm/Civi/Api4/Action/System/Check.php b/civicrm/Civi/Api4/Action/System/Check.php index 9080f60a8d..19df2a2a11 100644 --- a/civicrm/Civi/Api4/Action/System/Check.php +++ b/civicrm/Civi/Api4/Action/System/Check.php @@ -14,12 +14,39 @@ namespace Civi\Api4\Action\System; /** * Retrieve system notices, warnings, errors, etc. + * @method bool getIncludeDisabled() */ class Check extends \Civi\Api4\Generic\BasicGetAction { + /** + * Run checks that have been explicitly disabled (default false) + * @var bool + */ + protected $includeDisabled = FALSE; + + /** + * @param bool $includeDisabled + * @return Check + */ + public function setIncludeDisabled(bool $includeDisabled): Check { + $this->includeDisabled = $includeDisabled; + return $this; + } + protected function getRecords() { - $messages = []; - foreach (\CRM_Utils_Check::checkAll() as $message) { + $messages = $names = []; + + // Filtering by name relies on the component check rather than the api arrayQuery + // @see \CRM_Utils_Check_Component::isCheckable + foreach ($this->where as $i => $clause) { + if ($clause[0] == 'name' && !empty($clause[2]) && in_array($clause[1], ['=', 'IN'], TRUE)) { + $names = (array) $clause[2]; + unset($this->where[$i]); + break; + } + } + + foreach (\CRM_Utils_Check::checkStatus($names, $this->includeDisabled) as $message) { $messages[] = $message->toArray(); } return $messages; diff --git a/civicrm/Civi/Api4/ActivityContact.php b/civicrm/Civi/Api4/ActivityContact.php index 3c306ef139..e0d39cfb27 100644 --- a/civicrm/Civi/Api4/ActivityContact.php +++ b/civicrm/Civi/Api4/ActivityContact.php @@ -29,6 +29,6 @@ namespace Civi\Api4; * @see \Civi\Api4\Activity * @package Civi\Api4 */ -class ActivityContact extends Generic\DAOEntity { +class ActivityContact extends Generic\BridgeEntity { } diff --git a/civicrm/Civi/Api4/Address.php b/civicrm/Civi/Api4/Address.php index 003e5456d2..038e544ea7 100644 --- a/civicrm/Civi/Api4/Address.php +++ b/civicrm/Civi/Api4/Address.php @@ -33,24 +33,30 @@ namespace Civi\Api4; class Address extends Generic\DAOEntity { /** - * @return \Civi\Api4\Action\Address\Create + * @param bool $checkPermissions + * @return Action\Address\Create */ - public static function create() { - return new \Civi\Api4\Action\Address\Create(__CLASS__, __FUNCTION__); + public static function create($checkPermissions = TRUE) { + return (new Action\Address\Create(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** - * @return \Civi\Api4\Action\Address\Save + * @param bool $checkPermissions + * @return Action\Address\Save */ - public static function save() { - return new \Civi\Api4\Action\Address\Save(__CLASS__, __FUNCTION__); + public static function save($checkPermissions = TRUE) { + return (new Action\Address\Save(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** - * @return \Civi\Api4\Action\Address\Update + * @param bool $checkPermissions + * @return Action\Address\Update */ - public static function update() { - return new \Civi\Api4\Action\Address\Update(__CLASS__, __FUNCTION__); + public static function update($checkPermissions = TRUE) { + return (new Action\Address\Update(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/Campaign.php b/civicrm/Civi/Api4/Campaign.php index 479a6577bf..7d15c1b598 100644 --- a/civicrm/Civi/Api4/Campaign.php +++ b/civicrm/Civi/Api4/Campaign.php @@ -28,10 +28,12 @@ namespace Civi\Api4; class Campaign extends Generic\DAOEntity { /** - * @return \Civi\Api4\Action\Campaign\Get + * @param bool $checkPermissions + * @return Action\Campaign\Get */ - public static function get() { - return new \Civi\Api4\Action\Campaign\Get(__CLASS__, __FUNCTION__); + public static function get($checkPermissions = TRUE) { + return (new Action\Campaign\Get(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/Contact.php b/civicrm/Civi/Api4/Contact.php index 9e13c833c4..59abcc742e 100644 --- a/civicrm/Civi/Api4/Contact.php +++ b/civicrm/Civi/Api4/Contact.php @@ -33,17 +33,21 @@ namespace Civi\Api4; class Contact extends Generic\DAOEntity { /** - * @return \Civi\Api4\Action\Contact\GetChecksum + * @param bool $checkPermissions + * @return Action\Contact\GetChecksum */ - public static function getChecksum() { - return new Action\Contact\GetChecksum(__CLASS__, __FUNCTION__); + public static function getChecksum($checkPermissions = TRUE) { + return (new Action\Contact\GetChecksum(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** - * @return \Civi\Api4\Action\Contact\ValidateChecksum + * @param bool $checkPermissions + * @return Action\Contact\ValidateChecksum */ - public static function validateChecksum() { - return new Action\Contact\ValidateChecksum(__CLASS__, __FUNCTION__); + public static function validateChecksum($checkPermissions = TRUE) { + return (new Action\Contact\ValidateChecksum(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/CustomValue.php b/civicrm/Civi/Api4/CustomValue.php index 71881da659..9cc2e5f753 100644 --- a/civicrm/Civi/Api4/CustomValue.php +++ b/civicrm/Civi/Api4/CustomValue.php @@ -37,74 +37,90 @@ class CustomValue { /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Get * @throws \API_Exception */ - public static function get($customGroup) { - return new Action\CustomValue\Get($customGroup, __FUNCTION__); + public static function get($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Get($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\GetFields * @throws \API_Exception */ - public static function getFields($customGroup = NULL) { - return new Action\CustomValue\GetFields($customGroup, __FUNCTION__); + public static function getFields($customGroup = NULL, $checkPermissions = TRUE) { + return (new Action\CustomValue\GetFields($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Save * @throws \API_Exception */ - public static function save($customGroup) { - return new Action\CustomValue\Save($customGroup, __FUNCTION__); + public static function save($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Save($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Create * @throws \API_Exception */ - public static function create($customGroup) { - return new Action\CustomValue\Create($customGroup, __FUNCTION__); + public static function create($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Create($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Update * @throws \API_Exception */ - public static function update($customGroup) { - return new Action\CustomValue\Update($customGroup, __FUNCTION__); + public static function update($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Update($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Delete * @throws \API_Exception */ - public static function delete($customGroup) { - return new Action\CustomValue\Delete($customGroup, __FUNCTION__); + public static function delete($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Delete($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\Replace * @throws \API_Exception */ - public static function replace($customGroup) { - return new Action\CustomValue\Replace($customGroup, __FUNCTION__); + public static function replace($customGroup, $checkPermissions = TRUE) { + return (new Action\CustomValue\Replace($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** * @param string $customGroup + * @param bool $checkPermissions * @return Action\CustomValue\GetActions * @throws \API_Exception */ - public static function getActions($customGroup = NULL) { - return new Action\CustomValue\GetActions($customGroup, __FUNCTION__); + public static function getActions($customGroup = NULL, $checkPermissions = TRUE) { + return (new Action\CustomValue\GetActions($customGroup, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** diff --git a/civicrm/Civi/Api4/DashboardContact.php b/civicrm/Civi/Api4/DashboardContact.php index 4a4bdc732c..3133272041 100644 --- a/civicrm/Civi/Api4/DashboardContact.php +++ b/civicrm/Civi/Api4/DashboardContact.php @@ -26,6 +26,6 @@ namespace Civi\Api4; * @see \Civi\Api4\Dashboard * @package Civi\Api4 */ -class DashboardContact extends Generic\DAOEntity { +class DashboardContact extends Generic\BridgeEntity { } diff --git a/civicrm/Civi/Api4/Domain.php b/civicrm/Civi/Api4/Domain.php index 589f57052e..a8a40cac74 100644 --- a/civicrm/Civi/Api4/Domain.php +++ b/civicrm/Civi/Api4/Domain.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -30,8 +28,13 @@ namespace Civi\Api4; */ class Domain extends Generic\DAOEntity { - public static function get() { - return new \Civi\Api4\Action\Domain\Get(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\Domain\Get + */ + public static function get($checkPermissions = TRUE) { + return (new Action\Domain\Get(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/Email.php b/civicrm/Civi/Api4/Email.php index 92cdf955fd..cfb9ef99e8 100644 --- a/civicrm/Civi/Api4/Email.php +++ b/civicrm/Civi/Api4/Email.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Entity.php b/civicrm/Civi/Api4/Entity.php index a7767eab47..49f39859ec 100644 --- a/civicrm/Civi/Api4/Entity.php +++ b/civicrm/Civi/Api4/Entity.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -31,17 +29,20 @@ namespace Civi\Api4; class Entity extends Generic\AbstractEntity { /** + * @param bool $checkPermissions * @return Action\Entity\Get */ - public static function get() { - return new Action\Entity\Get('Entity', __FUNCTION__); + public static function get($checkPermissions = TRUE) { + return (new Action\Entity\Get('Entity', __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** - * @return \Civi\Api4\Generic\BasicGetFieldsAction + * @param bool $checkPermissions + * @return Generic\BasicGetFieldsAction */ - public static function getFields() { - return new \Civi\Api4\Generic\BasicGetFieldsAction('Entity', __FUNCTION__, function() { + public static function getFields($checkPermissions = TRUE) { + return (new Generic\BasicGetFieldsAction('Entity', __FUNCTION__, function() { return [ [ 'name' => 'name', @@ -51,6 +52,11 @@ class Entity extends Generic\AbstractEntity { 'name' => 'title', 'description' => 'Localized title', ], + [ + 'name' => 'type', + 'description' => 'Base class for this entity', + 'options' => ['DAOEntity' => 'DAOEntity', 'BasicEntity' => 'BasicEntity', 'BridgeEntity' => 'BridgeEntity', 'AbstractEntity' => 'AbstractEntity'], + ], [ 'name' => 'description', 'description' => 'Description from docblock', @@ -73,14 +79,16 @@ class Entity extends Generic\AbstractEntity { 'description' => 'Any @see annotations from docblock', ], ]; - }); + }))->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return Action\Entity\GetLinks */ - public static function getLinks() { - return new Action\Entity\GetLinks('Entity', __FUNCTION__); + public static function getLinks($checkPermissions = TRUE) { + return (new Action\Entity\GetLinks('Entity', __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** diff --git a/civicrm/Civi/Api4/EntityTag.php b/civicrm/Civi/Api4/EntityTag.php index e2a48276a0..aeefb3d747 100644 --- a/civicrm/Civi/Api4/EntityTag.php +++ b/civicrm/Civi/Api4/EntityTag.php @@ -25,6 +25,6 @@ namespace Civi\Api4; * * @package Civi\Api4 */ -class EntityTag extends Generic\DAOEntity { +class EntityTag extends Generic\BridgeEntity { } diff --git a/civicrm/Civi/Api4/Event.php b/civicrm/Civi/Api4/Event.php index c21a0def34..66c504a534 100644 --- a/civicrm/Civi/Api4/Event.php +++ b/civicrm/Civi/Api4/Event.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -31,10 +29,12 @@ namespace Civi\Api4; class Event extends Generic\DAOEntity { /** - * @return \Civi\Api4\Action\Event\Get + * @param bool $checkPermissions + * @return Action\Event\Get */ - public static function get() { - return new \Civi\Api4\Action\Event\Get(__CLASS__, __FUNCTION__); + public static function get($checkPermissions = TRUE) { + return (new Action\Event\Get(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/Event/Events.php b/civicrm/Civi/Api4/Event/Events.php index c5247695c5..83ef7b4c97 100644 --- a/civicrm/Civi/Api4/Event/Events.php +++ b/civicrm/Civi/Api4/Event/Events.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php b/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php index f57cd298f6..7fd6ce93f4 100644 --- a/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php +++ b/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/SchemaMapBuildEvent.php b/civicrm/Civi/Api4/Event/SchemaMapBuildEvent.php index 38dc989028..a29b7fddee 100644 --- a/civicrm/Civi/Api4/Event/SchemaMapBuildEvent.php +++ b/civicrm/Civi/Api4/Event/SchemaMapBuildEvent.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php index 806a3d451e..ceb6ccc842 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -35,8 +33,7 @@ class ActivityPreCreationSubscriber extends Generic\PreCreationSubscriber { $activityType = $request->getValue('activity_type'); if ($activityType) { \CRM_Core_Error::deprecatedFunctionWarning('Use activity_type_id:name instead of activity_type in APIv4'); - $result = OptionValue::get() - ->setCheckPermissions(FALSE) + $result = OptionValue::get(FALSE) ->addWhere('name', '=', $activityType) ->addWhere('option_group.name', '=', 'activity_type') ->execute(); diff --git a/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php index 72adfb0e18..fa8d4af8d9 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php index 1d9a573e9d..b2d2180d50 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php index 4fae715c70..9689f4bc20 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php index d2344803d1..b3bf36f6df 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php index 509640bd15..e0615aae14 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php index 3835c70d28..032c0f07e5 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php index af664a0bdf..256af1f5f5 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php index 1e2d9d9a13..648843468c 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php index 355738cf86..0396eb16b0 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -53,8 +51,7 @@ class OptionValuePreCreationSubscriber extends Generic\PreCreationSubscriber { return; } \CRM_Core_Error::deprecatedFunctionWarning('Use option_group_id:name instead of option_group in APIv4'); - $optionGroup = OptionGroup::get() - ->setCheckPermissions(FALSE) + $optionGroup = OptionGroup::get(FALSE) ->addSelect('id') ->addWhere('name', '=', $optionGroupName) ->execute(); diff --git a/civicrm/Civi/Api4/Generic/AbstractAction.php b/civicrm/Civi/Api4/Generic/AbstractAction.php index 7a90e1c0a3..8d0111e6b3 100644 --- a/civicrm/Civi/Api4/Generic/AbstractAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractAction.php @@ -33,7 +33,6 @@ use Civi\Api4\Utils\ReflectionUtils; * - Expose the param in the Api Explorer (be sure to add a doc-block as it displays in the help panel). * - Require a value for the param if you add the "@required" annotation. * - * @method $this setCheckPermissions(bool $value) Enable/disable permission checks * @method bool getCheckPermissions() * @method $this setDebug(bool $value) Enable/disable debug output * @method bool getDebug() @@ -174,6 +173,15 @@ abstract class AbstractAction implements \ArrayAccess { return $this; } + /** + * @param bool $checkPermissions + * @return $this + */ + public function setCheckPermissions(bool $checkPermissions) { + $this->checkPermissions = $checkPermissions; + return $this; + } + /** * @param string $name * Unique name for this chained request diff --git a/civicrm/Civi/Api4/Generic/AbstractEntity.php b/civicrm/Civi/Api4/Generic/AbstractEntity.php index 254f626a05..269bcc31b3 100644 --- a/civicrm/Civi/Api4/Generic/AbstractEntity.php +++ b/civicrm/Civi/Api4/Generic/AbstractEntity.php @@ -24,33 +24,30 @@ use Civi\Api4\Utils\ReflectionUtils; /** * Base class for all api entities. * - * When adding your own api from an extension, extend this class only - * if your entity does not have an associated DAO. Otherwise extend DAOEntity. + * This is the most generic of 3 possible base classes for an APIv4 Entity + * (the other 2, which extend this class, are `BasicEntity` and `DAOEntity`). * - * The recommended way to create a non-DAO-based api is to extend this class - * and then add a getFields function and any other actions you wish, e.g. - * - a get() function which returns BasicGetAction using your custom getter callback. - * - a create() function which returns BasicCreateAction using your custom setter callback. - * - a save() function which returns BasicSaveAction using your custom setter callback. - * - an update() function which returns BasicUpdateAction using your custom setter callback. - * - a delete() function which returns BasicBatchAction using your custom delete callback. - * - a replace() function which returns BasicReplaceAction (no callback needed but - * depends on the existence of get, save & delete actions). + * Implementing an API by extending this class directly is appropriate when it does not implement + * all of the CRUD actions, or only a subset like `get` without `create`, `update` or `delete`; + * for example the RelationshipCache entity. * - * Note that you can use the same setter callback function for update as create - - * that function can distinguish between new & existing records by checking if the - * unique identifier has been set (identifier field defaults to "id" but you can change - * that when constructing BasicUpdateAction). + * For all other APIs that do implement CRUD it is recommended to use: + * 1. `DAOEntity` for all entities with a DAO (sql table). + * 2. `BasicEntity` for all others, e.g. file-based entities. + * + * An entity which extends this class directly must, at minimum, implement the `getFields` action. * * @see https://lab.civicrm.org/extensions/api4example */ abstract class AbstractEntity { /** + * @param bool $checkPermissions * @return \Civi\Api4\Action\GetActions */ - public static function getActions() { - return new \Civi\Api4\Action\GetActions(self::getEntityName(), __FUNCTION__); + public static function getActions($checkPermissions = TRUE) { + return (new \Civi\Api4\Action\GetActions(self::getEntityName(), __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** @@ -78,7 +75,7 @@ abstract class AbstractEntity { * @return string */ protected static function getEntityName() { - return substr(static::class, strrpos(static::class, '\\') + 1); + return self::stripNamespace(static::class); } /** @@ -94,7 +91,7 @@ abstract class AbstractEntity { * Magic method to return the action object for an api. * * @param string $action - * @param null $args + * @param array $args * @return AbstractAction * @throws NotImplementedException */ @@ -104,6 +101,9 @@ abstract class AbstractEntity { $entityAction = "\\Civi\\Api4\\Action\\$entity\\" . ucfirst($action); if (class_exists($entityAction)) { $actionObject = new $entityAction($entity, $action); + if (isset($args[0]) && $args[0] === FALSE) { + $actionObject->setCheckPermissions(FALSE); + } } else { throw new NotImplementedException("Api $entity $action version 4 does not exist."); @@ -121,6 +121,7 @@ abstract class AbstractEntity { $info = [ 'name' => static::getEntityName(), 'title' => static::getEntityTitle(), + 'type' => self::stripNamespace(get_parent_class(static::class)), ]; $reflection = new \ReflectionClass(static::class); $info += ReflectionUtils::getCodeDocs($reflection, NULL, ['entity' => $info['name']]); @@ -128,4 +129,14 @@ abstract class AbstractEntity { return $info; } + /** + * Remove namespace prefix from a class name + * + * @param string $className + * @return string + */ + private static function stripNamespace($className) { + return substr($className, strrpos($className, '\\') + 1); + } + } diff --git a/civicrm/Civi/Api4/Generic/AbstractGetAction.php b/civicrm/Civi/Api4/Generic/AbstractGetAction.php index 1e0d547702..153f2e60a0 100644 --- a/civicrm/Civi/Api4/Generic/AbstractGetAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractGetAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -107,7 +105,7 @@ abstract class AbstractGetAction extends AbstractQueryAction { protected function _itemsToGet($field) { foreach ($this->where as $clause) { // Look for exact-match operators (=, IN, or LIKE with no wildcard) - if ($clause[0] == $field && (in_array($clause[1], ['=', 'IN']) || ($clause[1] == 'LIKE' && !(is_string($clause[2]) && strpos($clause[2], '%') !== FALSE)))) { + if ($clause[0] == $field && (in_array($clause[1], ['=', 'IN'], TRUE) || ($clause[1] == 'LIKE' && !(is_string($clause[2]) && strpos($clause[2], '%') !== FALSE)))) { return (array) $clause[2]; } } diff --git a/civicrm/Civi/Api4/Generic/AbstractQueryAction.php b/civicrm/Civi/Api4/Generic/AbstractQueryAction.php index 41fa6f65d0..ed7ac9bf37 100644 --- a/civicrm/Civi/Api4/Generic/AbstractQueryAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractQueryAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/AbstractSaveAction.php b/civicrm/Civi/Api4/Generic/AbstractSaveAction.php index 953f6c59c9..b12dc33204 100644 --- a/civicrm/Civi/Api4/Generic/AbstractSaveAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractSaveAction.php @@ -20,7 +20,14 @@ namespace Civi\Api4\Generic; /** - * Base class for all `Save` api actions. + * Create or update one or more $ENTITIES. + * + * Pass an array of one or more $ENTITY to save in the `records` param. + * + * If creating more than one $ENTITY with similar values, use the `defaults` param. + * + * Set `reload` if you need the api to return complete records for each saved $ENTITY + * (including values that were unchanged in from updated $ENTITIES). * * @method $this setRecords(array $records) Set array of records to be saved. * @method array getRecords() diff --git a/civicrm/Civi/Api4/Generic/BasicBatchAction.php b/civicrm/Civi/Api4/Generic/BasicBatchAction.php index cf86203a9e..d1787bd44a 100644 --- a/civicrm/Civi/Api4/Generic/BasicBatchAction.php +++ b/civicrm/Civi/Api4/Generic/BasicBatchAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -34,8 +32,7 @@ class BasicBatchAction extends AbstractBatchAction { /** * @var callable - * - * Function(array $item, BasicBatchAction $thisAction) => array + * Function(array $item, BasicBatchAction $thisAction): array */ private $doer; @@ -54,7 +51,6 @@ class BasicBatchAction extends AbstractBatchAction { * @param string|array $select * One or more fields to select from each matching item. * @param callable $doer - * Function(array $item, BasicBatchAction $thisAction) => array */ public function __construct($entityName, $actionName, $select = 'id', $doer = NULL) { parent::__construct($entityName, $actionName, $select); diff --git a/civicrm/Civi/Api4/Generic/BasicCreateAction.php b/civicrm/Civi/Api4/Generic/BasicCreateAction.php index 7fe0f301da..6a5027d351 100644 --- a/civicrm/Civi/Api4/Generic/BasicCreateAction.php +++ b/civicrm/Civi/Api4/Generic/BasicCreateAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -33,8 +31,7 @@ class BasicCreateAction extends AbstractCreateAction { /** * @var callable - * - * Function(array $item, BasicCreateAction $thisAction) => array + * Function(array $item, BasicCreateAction $thisAction): array */ private $setter; @@ -44,7 +41,6 @@ class BasicCreateAction extends AbstractCreateAction { * @param string $entityName * @param string $actionName * @param callable $setter - * Function(array $item, BasicCreateAction $thisAction) => array */ public function __construct($entityName, $actionName, $setter = NULL) { parent::__construct($entityName, $actionName); diff --git a/civicrm/Civi/Api4/Generic/BasicEntity.php b/civicrm/Civi/Api4/Generic/BasicEntity.php new file mode 100644 index 0000000000..b582d29491 --- /dev/null +++ b/civicrm/Civi/Api4/Generic/BasicEntity.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\Api4\Generic; + +/** + * Base class for ad-hoc entities that implement CRUD actions. + * + * This is one of 3 possible base classes for an APIv4 Entity + * (the others are `DAOEntity` and `AbstractEntity`). + * + * This base class is for entities that do not have an associated DAO but do implement CRUD actions. + * It can be used in one of these ways: + * + * 1. Extend this class and define the static variables `$getter`, `$setter` & `$deleter` with callbacks to handle CRUD operations. + * In that case there is no need to implement any actions other than `getFields`. + * 2. Override the `get`, `create`, `delete`, etc. methods with custom BasicAction implementations. + * 3. Some combination of the above two options, e.g. defining a callback for `$getter` and using the default `get` action, + * but leaving `$deleter` unset and overriding the `delete` method with a custom BasicBatchAction to handle deletion. + * + * Note: the `replace` action does not require any callback as it internally calls the entity's `get`, `save` and `delete` actions. + */ +abstract class BasicEntity extends AbstractEntity { + + /** + * Unique identifier for this entity. + * + * @var string + */ + protected static $idField = 'id'; + + /** + * Function to read records. Used by `get` action. + * + * @var callable + * Function(BasicGetAction $thisAction): array[] + * + * This function should return an array of records, and is passed a copy of the BasicGetAction object as its first argument. + * The simplest implementation is for it to return every record and the BasicGetAction automatically handle sorting and filtering. + * + * If performance is a concern, it can take advantage of some helper functions for e.g. fetching item(s) by id. + * @see BasicGetAction::getRecords() + */ + protected static $getter; + + /** + * Function to write a record. Used by `create`, `update` and `save`. + * + * @var callable + * Function(array $item, BasicCreateAction|BasicSaveAction|BasicUpdateAction $thisAction): array + * + * This function is called once per write. It takes a single record as the first param, and a reference to + * the action object as the second. + * + * This callback should check the $idField of the record to determine whether the operation is a create or update. + * + * It should return the updated record as an array. + */ + protected static $setter; + + /** + * Function to delete records. Used by `delete` action. + * + * @var callable + * Function(array $item, BasicBatchAction $thisAction): array + * + * This function is called once per delete. It takes a single record as the first param, and a reference to + * the action object as the second. + * + * This callback should check the $idField of the item to determine which record to delete. + * + * It should return the deleted record as an array. + */ + protected static $deleter; + + /** + * @param bool $checkPermissions + * @return BasicGetAction + */ + public static function get($checkPermissions = TRUE) { + return (new BasicGetAction(static::class, __FUNCTION__, static::$getter)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return BasicCreateAction + */ + public static function create($checkPermissions = TRUE) { + return (new BasicCreateAction(static::class, __FUNCTION__, static::$setter)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return BasicSaveAction + */ + public static function save($checkPermissions = TRUE) { + return (new BasicSaveAction(static::class, __FUNCTION__, static::$idField, static::$setter)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return BasicUpdateAction + */ + public static function update($checkPermissions = TRUE) { + return (new BasicUpdateAction(static::class, __FUNCTION__, static::$idField, static::$setter)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return BasicBatchAction + */ + public static function delete($checkPermissions = TRUE) { + return (new BasicBatchAction(static::class, __FUNCTION__, static::$idField, static::$deleter)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return BasicReplaceAction + */ + public static function replace($checkPermissions = TRUE) { + return (new BasicReplaceAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + +} diff --git a/civicrm/Civi/Api4/Generic/BasicGetAction.php b/civicrm/Civi/Api4/Generic/BasicGetAction.php index e40215faa7..f436427c92 100644 --- a/civicrm/Civi/Api4/Generic/BasicGetAction.php +++ b/civicrm/Civi/Api4/Generic/BasicGetAction.php @@ -32,8 +32,7 @@ class BasicGetAction extends AbstractGetAction { /** * @var callable - * - * Function(BasicGetAction $thisAction) => array<array> + * Function(BasicGetAction $thisAction): array[] */ private $getter; @@ -63,14 +62,15 @@ class BasicGetAction extends AbstractGetAction { } /** - * This Basic Get class is a general-purpose api for non-DAO-based entities. + * BasicGet is a general-purpose get action for non-DAO-based entities. * * Useful for fetching records from files or other places. - * You can specify any php function to retrieve the records, and this class will - * automatically filter, sort, select & limit the raw data from your callback. + * Specify any php function to retrieve the records, and this class will + * automatically filter, sort, select & limit the raw data from the callback. * - * You can implement this action in one of two ways: - * 1. Use this class directly by passing a callable ($getter) to the constructor. + * This action is implemented in one of two ways: + * 1. Invoke this class directly by passing a callable ($getter) to the constructor. BasicEntity does this by default. + * The function is passed a copy of $this action as it's first argument. * 2. Extend this class and override this function. * * Either way, this function should return an array of arrays, each representing one retrieved object. diff --git a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php index 070d9909bd..ec58714fe4 100644 --- a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php +++ b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/BasicSaveAction.php b/civicrm/Civi/Api4/Generic/BasicSaveAction.php index 855980cbdd..c1316ede97 100644 --- a/civicrm/Civi/Api4/Generic/BasicSaveAction.php +++ b/civicrm/Civi/Api4/Generic/BasicSaveAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -24,29 +22,23 @@ namespace Civi\Api4\Generic; use Civi\API\Exception\NotImplementedException; /** - * $ACTION one or more $ENTITIES. - * - * If saving more than one new $ENTITY with similar values, use the `defaults` parameter. - * - * Set `reload` if you need the api to return complete $ENTITY records. + * @inheritDoc */ class BasicSaveAction extends AbstractSaveAction { /** * @var callable - * - * Function(array $item, BasicCreateAction $thisAction) => array + * Function(array $item, BasicCreateAction $thisAction): array */ private $setter; /** - * Basic Create constructor. + * Basic Save constructor. * * @param string $entityName * @param string $actionName * @param string $idField * @param callable $setter - * Function(array $item, BasicCreateAction $thisAction) => array */ public function __construct($entityName, $actionName, $idField = 'id', $setter = NULL) { parent::__construct($entityName, $actionName, $idField); diff --git a/civicrm/Civi/Api4/Generic/BasicUpdateAction.php b/civicrm/Civi/Api4/Generic/BasicUpdateAction.php index 57edbfba1f..a7bc7e9bb2 100644 --- a/civicrm/Civi/Api4/Generic/BasicUpdateAction.php +++ b/civicrm/Civi/Api4/Generic/BasicUpdateAction.php @@ -30,8 +30,7 @@ class BasicUpdateAction extends AbstractUpdateAction { /** * @var callable - * - * Function(array $item, BasicUpdateAction $thisAction) => array + * Function(array $item, BasicUpdateAction $thisAction): array */ private $setter; @@ -43,7 +42,6 @@ class BasicUpdateAction extends AbstractUpdateAction { * @param string|array $select * One or more fields to select from each matching item. * @param callable $setter - * Function(array $item, BasicUpdateAction $thisAction) => array */ public function __construct($entityName, $actionName, $select = 'id', $setter = NULL) { parent::__construct($entityName, $actionName, $select); diff --git a/civicrm/Civi/Api4/Generic/BridgeEntity.php b/civicrm/Civi/Api4/Generic/BridgeEntity.php new file mode 100644 index 0000000000..32faea1aa5 --- /dev/null +++ b/civicrm/Civi/Api4/Generic/BridgeEntity.php @@ -0,0 +1,21 @@ +<?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; + +/** + * A bridge is a small table that provides an intermediary link between two other tables. + * + * The API can automatically incorporate a bridgeEntity into a join expression. + */ +class BridgeEntity extends DAOEntity { + +} diff --git a/civicrm/Civi/Api4/Generic/DAOCreateAction.php b/civicrm/Civi/Api4/Generic/DAOCreateAction.php index c65a91f884..d2371d3180 100644 --- a/civicrm/Civi/Api4/Generic/DAOCreateAction.php +++ b/civicrm/Civi/Api4/Generic/DAOCreateAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/DAOEntity.php b/civicrm/Civi/Api4/Generic/DAOEntity.php index 915b42cc54..a7c47ee2e9 100644 --- a/civicrm/Civi/Api4/Generic/DAOEntity.php +++ b/civicrm/Civi/Api4/Generic/DAOEntity.php @@ -13,61 +13,81 @@ namespace Civi\Api4\Generic; /** - * Base class for DAO-based entities. + * Base class for DAO entities (sql tables). + * + * This is one of 3 possible base classes for an APIv4 Entity + * (the others are `BasicEntity` and `AbstractEntity`). + * + * This base class is used for entities that have an associated DAO and support CRUD operations. + * + * Entities that extend this class can override actions and add others on an ad-hoc basis. + * + * DAO entities which do not support all CRUD operations should instead extend AbstractEntity + * in order to implement just the actions appropriate to that entity. */ abstract class DAOEntity extends AbstractEntity { /** + * @param bool $checkPermissions * @return DAOGetAction - * - * @throws \API_Exception */ - public static function get() { - return new DAOGetAction(static::class, __FUNCTION__); + public static function get($checkPermissions = TRUE) { + return (new DAOGetAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return DAOSaveAction */ - public static function save() { - return new DAOSaveAction(static::class, __FUNCTION__); + public static function save($checkPermissions = TRUE) { + return (new DAOSaveAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return DAOGetFieldsAction */ - public static function getFields() { - return new DAOGetFieldsAction(static::class, __FUNCTION__); + public static function getFields($checkPermissions = TRUE) { + return (new DAOGetFieldsAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return DAOCreateAction - * - * @throws \API_Exception */ - public static function create() { - return new DAOCreateAction(static::class, __FUNCTION__); + public static function create($checkPermissions = TRUE) { + return (new DAOCreateAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return DAOUpdateAction */ - public static function update() { - return new DAOUpdateAction(static::class, __FUNCTION__); + public static function update($checkPermissions = TRUE) { + return (new DAOUpdateAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return DAODeleteAction */ - public static function delete() { - return new DAODeleteAction(static::class, __FUNCTION__); + public static function delete($checkPermissions = TRUE) { + return (new DAODeleteAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return BasicReplaceAction */ - public static function replace() { - return new BasicReplaceAction(static::class, __FUNCTION__); + public static function replace($checkPermissions = TRUE) { + return (new BasicReplaceAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** diff --git a/civicrm/Civi/Api4/Generic/DAOGetAction.php b/civicrm/Civi/Api4/Generic/DAOGetAction.php index 2b73f18a8f..9ad1d54adc 100644 --- a/civicrm/Civi/Api4/Generic/DAOGetAction.php +++ b/civicrm/Civi/Api4/Generic/DAOGetAction.php @@ -35,7 +35,9 @@ class DAOGetAction extends AbstractGetAction { use Traits\DAOActionTrait; /** - * Fields to return. Defaults to all non-custom fields `[*]`. + * Fields to return. Defaults to all non-custom fields `['*']`. + * + * The keyword `"custom.*"` selects all custom fields. So to select all core + custom fields, select `['*', 'custom.*']`. * * Use the dot notation to perform joins in the select clause, e.g. selecting `['*', 'contact.*']` from `Email::get()` * will select all fields for the email + all fields for the related contact. @@ -48,7 +50,21 @@ class DAOGetAction extends AbstractGetAction { /** * Joins to other entities. * + * Each join is an array of properties: + * + * ``` + * [Entity, Required, Bridge, [field, op, value]...] + * ``` + * + * - `Entity`: the name of the api entity to join onto. + * - `Required`: `TRUE` for an `INNER JOIN`, `FALSE` for a `LEFT JOIN`. + * - `Bridge` (optional): Name of a BridgeEntity to incorporate into the join. + * - `[field, op, value]...`: zero or more conditions for the ON clause, using the same nested format as WHERE and HAVING + * but with the difference that "value" is interpreted as an expression (e.g. can be the name of a field). + * Enclose literal values with quotes. + * * @var array + * @see \Civi\Api4\Generic\BridgeEntity */ protected $join = []; @@ -141,10 +157,14 @@ class DAOGetAction extends AbstractGetAction { /** * @param string $entity * @param bool $required + * @param string $bridge * @param array ...$conditions * @return DAOGetAction */ - public function addJoin(string $entity, bool $required = FALSE, ...$conditions): DAOGetAction { + public function addJoin(string $entity, bool $required = FALSE, $bridge = NULL, ...$conditions): DAOGetAction { + if ($bridge) { + array_unshift($conditions, $bridge); + } array_unshift($conditions, $entity, $required); $this->join[] = $conditions; return $this; diff --git a/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php b/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php index 74afc1715f..631e91652f 100644 --- a/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php +++ b/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/DAOSaveAction.php b/civicrm/Civi/Api4/Generic/DAOSaveAction.php index 1f0dead375..a3d8a288f5 100644 --- a/civicrm/Civi/Api4/Generic/DAOSaveAction.php +++ b/civicrm/Civi/Api4/Generic/DAOSaveAction.php @@ -14,19 +14,13 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4\Generic; /** - * Create or update one or more $ENTITIES. - * - * If creating more than one $ENTITY with similar values, use the `defaults` param. - * - * Set `reload` if you need the api to return complete records for each saved $ENTITY. + * @inheritDoc */ class DAOSaveAction extends AbstractSaveAction { use Traits\DAOActionTrait; diff --git a/civicrm/Civi/Api4/Generic/DAOUpdateAction.php b/civicrm/Civi/Api4/Generic/DAOUpdateAction.php index d039b6e144..0d4bf17551 100644 --- a/civicrm/Civi/Api4/Generic/DAOUpdateAction.php +++ b/civicrm/Civi/Api4/Generic/DAOUpdateAction.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php index 08db9f75fa..4ae6096c50 100644 --- a/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -62,7 +60,7 @@ trait ArrayQueryActionTrait { * @return bool */ private function evaluateFilters($row) { - $where = $this->getWhere(); + $where = array_values($this->getWhere()); $allConditions = in_array($where[0], ['AND', 'OR', 'NOT']) ? $where : ['AND', $where]; return $this->walkFilters($row, $allConditions); } diff --git a/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php index acf90cdcf5..78065d55f3 100644 --- a/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php index 85ac173f5e..6497168a3d 100644 --- a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php @@ -12,6 +12,7 @@ namespace Civi\Api4\Generic\Traits; +use Civi\Api4\CustomField; use Civi\Api4\Utils\FormattingUtil; /** @@ -168,50 +169,29 @@ trait DAOActionTrait { // $customValueID is the ID of the custom value in the custom table for this // entity (i guess this assumes it's not a multi value entity) foreach ($params as $name => $value) { - if (strpos($name, '.') === FALSE) { + $field = $this->getCustomFieldInfo($name); + if (!$field) { continue; } - list($customGroup, $customField) = explode('.', $name); - list($customField, $option) = array_pad(explode(':', $customField), 2, NULL); - - $customFieldId = \CRM_Core_BAO_CustomField::getFieldValue( - \CRM_Core_DAO_CustomField::class, - $customField, - 'id', - 'name' - ); - $customFieldType = \CRM_Core_BAO_CustomField::getFieldValue( - \CRM_Core_DAO_CustomField::class, - $customField, - 'html_type', - 'name' - ); - $customFieldExtends = \CRM_Core_BAO_CustomGroup::getFieldValue( - \CRM_Core_DAO_CustomGroup::class, - $customGroup, - 'extends', - 'name' - ); - // todo are we sure we don't want to allow setting to NULL? need to test - if ($customFieldId && NULL !== $value) { + if (NULL !== $value) { - if ($option) { - $options = FormattingUtil::getPseudoconstantList($this->getEntityName(), 'custom_' . $customFieldId, $option, $params, $this->getActionName()); + if ($field['suffix']) { + $options = FormattingUtil::getPseudoconstantList($this->getEntityName(), 'custom_' . $field['id'], $field['suffix'], $params, $this->getActionName()); $value = FormattingUtil::replacePseudoconstant($options, $value, TRUE); } - if ($customFieldType === 'CheckBox') { + if ($field['html_type'] === 'CheckBox') { // this function should be part of a class - formatCheckBoxField($value, 'custom_' . $customFieldId, $this->getEntityName()); + formatCheckBoxField($value, 'custom_' . $field['id'], $this->getEntityName()); } \CRM_Core_BAO_CustomField::formatCustomField( - $customFieldId, + $field['id'], $customParams, $value, - $customFieldExtends, + $field['custom_group.extends'], // todo check when this is needed NULL, $entityId, @@ -227,6 +207,29 @@ trait DAOActionTrait { } } + /** + * Gets field info needed to save custom data + * + * @param string $name + * Field identifier with possible suffix, e.g. MyCustomGroup.MyField1:label + * @return array|NULL + */ + protected function getCustomFieldInfo($name) { + if (strpos($name, '.') === FALSE) { + return NULL; + } + list($groupName, $fieldName) = explode('.', $name); + list($fieldName, $suffix) = array_pad(explode(':', $fieldName), 2, NULL); + if (empty(\Civi::$statics['APIv4_Custom_Fields'][$groupName])) { + \Civi::$statics['APIv4_Custom_Fields'][$groupName] = (array) CustomField::get(FALSE) + ->addSelect('id', 'name', 'html_type', 'custom_group.extends') + ->addWhere('custom_group.name', '=', $groupName) + ->execute()->indexBy('name'); + } + $info = \Civi::$statics['APIv4_Custom_Fields'][$groupName][$fieldName] ?? NULL; + return $info ? ['suffix' => $suffix] + $info : NULL; + } + /** * Check edit/delete permissions for contacts and related entities. * diff --git a/civicrm/Civi/Api4/Generic/Traits/IsCurrentTrait.php b/civicrm/Civi/Api4/Generic/Traits/IsCurrentTrait.php index 81dde6ab89..aec4b82e66 100644 --- a/civicrm/Civi/Api4/Generic/Traits/IsCurrentTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/IsCurrentTrait.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4\Generic\Traits; diff --git a/civicrm/Civi/Api4/Group.php b/civicrm/Civi/Api4/Group.php index b1cfa8591a..1b685361b0 100644 --- a/civicrm/Civi/Api4/Group.php +++ b/civicrm/Civi/Api4/Group.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; diff --git a/civicrm/Civi/Api4/GroupContact.php b/civicrm/Civi/Api4/GroupContact.php index 62d1b2dc0f..d5935967a6 100644 --- a/civicrm/Civi/Api4/GroupContact.php +++ b/civicrm/Civi/Api4/GroupContact.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; @@ -30,27 +28,33 @@ namespace Civi\Api4; * * @package Civi\Api4 */ -class GroupContact extends Generic\DAOEntity { +class GroupContact extends Generic\BridgeEntity { /** + * @param bool $checkPermissions * @return Action\GroupContact\Create */ - public static function create() { - return new Action\GroupContact\Create(__CLASS__, __FUNCTION__); + public static function create($checkPermissions = TRUE) { + return (new Action\GroupContact\Create(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return Action\GroupContact\Save */ - public static function save() { - return new Action\GroupContact\Save(__CLASS__, __FUNCTION__); + public static function save($checkPermissions = TRUE) { + return (new Action\GroupContact\Save(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } /** + * @param bool $checkPermissions * @return Action\GroupContact\Update */ - public static function update() { - return new Action\GroupContact\Update(__CLASS__, __FUNCTION__); + public static function update($checkPermissions = TRUE) { + return (new Action\GroupContact\Update(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/GroupNesting.php b/civicrm/Civi/Api4/GroupNesting.php index 96276beee6..10e6b8d174 100644 --- a/civicrm/Civi/Api4/GroupNesting.php +++ b/civicrm/Civi/Api4/GroupNesting.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; diff --git a/civicrm/Civi/Api4/MailSettings.php b/civicrm/Civi/Api4/MailSettings.php index 342ecdbc6e..f94667ec99 100644 --- a/civicrm/Civi/Api4/MailSettings.php +++ b/civicrm/Civi/Api4/MailSettings.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/MappingField.php b/civicrm/Civi/Api4/MappingField.php index 16cf57ad56..23cb5e0ca9 100644 --- a/civicrm/Civi/Api4/MappingField.php +++ b/civicrm/Civi/Api4/MappingField.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; diff --git a/civicrm/Civi/Api4/Navigation.php b/civicrm/Civi/Api4/Navigation.php index 9833842ec7..3ae9e5cb09 100644 --- a/civicrm/Civi/Api4/Navigation.php +++ b/civicrm/Civi/Api4/Navigation.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; diff --git a/civicrm/Civi/Api4/Note.php b/civicrm/Civi/Api4/Note.php index 77319f236f..575a780a3e 100644 --- a/civicrm/Civi/Api4/Note.php +++ b/civicrm/Civi/Api4/Note.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/OpenID.php b/civicrm/Civi/Api4/OpenID.php index 19ad246a53..c316e3f915 100644 --- a/civicrm/Civi/Api4/OpenID.php +++ b/civicrm/Civi/Api4/OpenID.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/OptionGroup.php b/civicrm/Civi/Api4/OptionGroup.php index 22f28d5fcf..51a7c60a1d 100644 --- a/civicrm/Civi/Api4/OptionGroup.php +++ b/civicrm/Civi/Api4/OptionGroup.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/OptionValue.php b/civicrm/Civi/Api4/OptionValue.php index 98e9cae388..09f741ebb6 100644 --- a/civicrm/Civi/Api4/OptionValue.php +++ b/civicrm/Civi/Api4/OptionValue.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Participant.php b/civicrm/Civi/Api4/Participant.php index 473deace0c..221ea1f677 100644 --- a/civicrm/Civi/Api4/Participant.php +++ b/civicrm/Civi/Api4/Participant.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; diff --git a/civicrm/Civi/Api4/Phone.php b/civicrm/Civi/Api4/Phone.php index 85789ee363..64760a8085 100644 --- a/civicrm/Civi/Api4/Phone.php +++ b/civicrm/Civi/Api4/Phone.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Provider/ActionObjectProvider.php b/civicrm/Civi/Api4/Provider/ActionObjectProvider.php index 9fa607c65e..ced568e7b7 100644 --- a/civicrm/Civi/Api4/Provider/ActionObjectProvider.php +++ b/civicrm/Civi/Api4/Provider/ActionObjectProvider.php @@ -116,7 +116,8 @@ class ActionObjectProvider implements EventSubscriberInterface, ProviderInterfac } } elseif (is_string($val) && strlen($val) > 1 && substr($val, 0, 1) === '$') { - $val = \CRM_Utils_Array::pathGet($result, explode('.', substr($val, 1))); + $key = substr($val, 1); + $val = $result[$key] ?? \CRM_Utils_Array::pathGet($result, explode('.', $key)); } } diff --git a/civicrm/Civi/Api4/Query/Api4SelectQuery.php b/civicrm/Civi/Api4/Query/Api4SelectQuery.php index b9bedfa86b..5721e91968 100644 --- a/civicrm/Civi/Api4/Query/Api4SelectQuery.php +++ b/civicrm/Civi/Api4/Query/Api4SelectQuery.php @@ -187,10 +187,25 @@ class Api4SelectQuery { $select = array_merge(['id'], $select); } + // Expand the superstar 'custom.*' to select all fields in all custom groups + $customStar = array_search('custom.*', array_values($select), TRUE); + if ($customStar !== FALSE) { + $customGroups = civicrm_api4($this->getEntity(), 'getFields', [ + 'checkPermissions' => FALSE, + 'where' => [['custom_group', 'IS NOT NULL']], + ], ['custom_group' => 'custom_group']); + $customSelect = []; + foreach ($customGroups as $groupName) { + $customSelect[] = "$groupName.*"; + } + array_splice($select, $customStar, 1, $customSelect); + } + // Expand wildcards in joins (the api wrapper already expanded non-joined wildcards) $wildFields = array_filter($select, function($item) { return strpos($item, '*') !== FALSE && strpos($item, '.') !== FALSE && strpos($item, '(') === FALSE && strpos($item, ' ') === FALSE; }); + foreach ($wildFields as $item) { $pos = array_search($item, array_values($select)); $this->autoJoinFK($item); @@ -439,7 +454,7 @@ class Api4SelectQuery { // Prevent (most) redundant acl sub clauses if they have already been applied to the main entity. // FIXME: Currently this only works 1 level deep, but tracking through multiple joins would increase complexity // and just doing it for the first join takes care of most acl clause deduping. - if (count($stack) === 1 && in_array($stack[0], $this->aclFields)) { + if (count($stack) === 1 && in_array($stack[0], $this->aclFields, TRUE)) { return []; } $clauses = $baoName::getSelectWhereClause($tableAlias); @@ -494,12 +509,18 @@ class Api4SelectQuery { // First item in the array is a boolean indicating if the join is required (aka INNER or LEFT). // The rest are join conditions. $side = array_shift($join) ? 'INNER' : 'LEFT'; + // Add all fields from joined entity to spec $joinEntityGet = \Civi\API\Request::create($entity, 'get', ['version' => 4, 'checkPermissions' => $this->getCheckPermissions()]); foreach ($joinEntityGet->entityFields() as $field) { $field['sql_name'] = '`' . $alias . '`.`' . $field['column_name'] . '`'; $this->addSpecField($alias . '.' . $field['name'], $field); } - $conditions = $this->getJoinConditions($entity, $alias); + if (!empty($join[0]) && is_string($join[0]) && \CRM_Utils_Rule::alphanumeric($join[0])) { + $conditions = $this->getBridgeJoin($join, $entity, $alias); + } + else { + $conditions = $this->getJoinConditions($join, $entity, $alias); + } foreach (array_filter($join) as $clause) { $conditions[] = $this->treeWalkClauses($clause, 'ON'); } @@ -511,35 +532,133 @@ class Api4SelectQuery { /** * Supply conditions for an explicit join. * - * @param $entity - * @param $alias + * @param array $joinTree + * @param string $joinEntity + * @param string $alias * @return array */ - private function getJoinConditions($entity, $alias) { + private function getJoinConditions($joinTree, $joinEntity, $alias) { $conditions = []; // getAclClause() expects a stack of 1-to-1 join fields to help it dedupe, but this is more flexible, // so unless this is a direct 1-to-1 join with the main entity, we'll just hack it // with a padded empty stack to bypass its deduping. $stack = [NULL, NULL]; - foreach ($this->apiFieldSpec as $name => $field) { - if ($field['entity'] !== $entity && $field['fk_entity'] === $entity) { - $conditions[] = $this->treeWalkClauses([$name, '=', "$alias.id"], 'ON'); + // If we're not explicitly referencing the joinEntity ID in the ON clause, search for a default + $explicitId = array_filter($joinTree, function($clause) use ($alias) { + list($sideA, $op, $sideB) = array_pad((array) $clause, 3, NULL); + return $op === '=' && ($sideA === "$alias.id" || $sideB === "$alias.id"); + }); + if (!$explicitId) { + foreach ($this->apiFieldSpec as $name => $field) { + if ($field['entity'] !== $joinEntity && $field['fk_entity'] === $joinEntity) { + $conditions[] = $this->treeWalkClauses([$name, '=', "$alias.id"], 'ON'); + } + elseif (strpos($name, "$alias.") === 0 && substr_count($name, '.') === 1 && $field['fk_entity'] === $this->getEntity()) { + $conditions[] = $this->treeWalkClauses([$name, '=', 'id'], 'ON'); + $stack = ['id']; + } } - elseif (strpos($name, "$alias.") === 0 && substr_count($name, '.') === 1 && $field['fk_entity'] === $this->getEntity()) { - $conditions[] = $this->treeWalkClauses([$name, '=', 'id'], 'ON'); - $stack = ['id']; + // Hmm, if we came up with > 1 condition, then it's ambiguous how it should be joined so we won't return anything but the generic ACLs + if (count($conditions) > 1) { + $stack = [NULL, NULL]; + $conditions = []; } } - // Hmm, if we came up with > 1 condition, then it's ambiguous how it should be joined so we won't return anything but the generic ACLs - if (count($conditions) > 1) { - $stack = [NULL, NULL]; - $conditions = []; - } - $baoName = CoreUtil::getBAOFromApiName($entity); + $baoName = CoreUtil::getBAOFromApiName($joinEntity); $acls = array_values($this->getAclClause($alias, $baoName, $stack)); return array_merge($acls, $conditions); } + /** + * Join onto a BridgeEntity table + * + * @param array $joinTree + * @param string $joinEntity + * @param string $alias + * @return array + * @throws \API_Exception + */ + protected function getBridgeJoin(&$joinTree, $joinEntity, $alias) { + $bridgeEntity = array_shift($joinTree); + if (!is_a('\Civi\Api4\\' . $bridgeEntity, '\Civi\Api4\Generic\BridgeEntity', TRUE)) { + throw new \API_Exception("Illegal bridge entity specified: " . $bridgeEntity); + } + $bridgeAlias = $alias . '_via_' . strtolower($bridgeEntity); + $bridgeTable = CoreUtil::getTableName($bridgeEntity); + $joinTable = CoreUtil::getTableName($joinEntity); + $bridgeEntityGet = \Civi\API\Request::create($bridgeEntity, 'get', ['version' => 4, 'checkPermissions' => $this->getCheckPermissions()]); + $fkToJoinField = $fkToBaseField = NULL; + // Find the bridge field that links to the joinEntity (either an explicit FK or an entity_id/entity_table combo) + foreach ($bridgeEntityGet->entityFields() as $name => $field) { + if ($field['fk_entity'] === $joinEntity || (!$fkToJoinField && $name === 'entity_id')) { + $fkToJoinField = $name; + } + } + // Get list of entities allowed for entity_table + if (array_key_exists('entity_id', $bridgeEntityGet->entityFields())) { + $entityTables = (array) civicrm_api4($bridgeEntity, 'getFields', [ + 'checkPermissions' => FALSE, + 'where' => [['name', '=', 'entity_table']], + 'loadOptions' => TRUE, + ], ['options'])->first(); + } + // If bridge field to joinEntity is entity_id, validate entity_table is allowed + if (!$fkToJoinField || ($fkToJoinField === 'entity_id' && !array_key_exists($joinTable, $entityTables))) { + throw new \API_Exception("Unable to join $bridgeEntity to $joinEntity"); + } + // Create link between bridge entity and join entity + $joinConditions = [ + "`$bridgeAlias`.`$fkToJoinField` = `$alias`.`id`", + ]; + if ($fkToJoinField === 'entity_id') { + $joinConditions[] = "`$bridgeAlias`.`entity_table` = '$joinTable'"; + } + // Register fields from the bridge entity as if they belong to the join entity + foreach ($bridgeEntityGet->entityFields() as $name => $field) { + if ($name == 'id' || $name == $fkToJoinField || ($name == 'entity_table' && $fkToJoinField == 'entity_id')) { + continue; + } + if ($field['fk_entity'] || (!$fkToBaseField && $name == 'entity_id')) { + $fkToBaseField = $name; + } + // Note these fields get a sql alias pointing to the bridge entity, but an api alias pretending they belong to the join entity + $field['sql_name'] = '`' . $bridgeAlias . '`.`' . $field['column_name'] . '`'; + $this->addSpecField($alias . '.' . $field['name'], $field); + } + // Move conditions for the bridge join out of the joinTree + $bridgeConditions = []; + $joinTree = array_filter($joinTree, function($clause) use ($fkToBaseField, $alias, $bridgeAlias, &$bridgeConditions) { + list($sideA, $op, $sideB) = array_pad((array) $clause, 3, NULL); + if ($op === '=' && $sideB && ($sideA === "$alias.$fkToBaseField" || $sideB === "$alias.$fkToBaseField")) { + $expr = $sideA === "$alias.$fkToBaseField" ? $sideB : $sideA; + $bridgeConditions[] = "`$bridgeAlias`.`$fkToBaseField` = " . $this->getExpression($expr)->render($this->apiFieldSpec); + return FALSE; + } + elseif ($op === '=' && $fkToBaseField == 'entity_id' && ($sideA === "$alias.entity_table" || $sideB === "$alias.entity_table")) { + $expr = $sideA === "$alias.entity_table" ? $sideB : $sideA; + $bridgeConditions[] = "`$bridgeAlias`.`entity_table` = " . $this->getExpression($expr)->render($this->apiFieldSpec); + return FALSE; + } + return TRUE; + }); + // If no bridge conditions were specified, link it to the base entity + if (!$bridgeConditions) { + $bridgeConditions[] = "`$bridgeAlias`.`$fkToBaseField` = a.id"; + if ($fkToBaseField == 'entity_id') { + if (!array_key_exists($this->getFrom(), $entityTables)) { + throw new \API_Exception("Unable to join $bridgeEntity to " . $this->getEntity()); + } + $bridgeConditions[] = "`$bridgeAlias`.`entity_table` = '" . $this->getFrom() . "'"; + } + } + + $this->join('LEFT', $bridgeTable, $bridgeAlias, $bridgeConditions); + + $baoName = CoreUtil::getBAOFromApiName($joinEntity); + $acls = array_values($this->getAclClause($alias, $baoName, [NULL, NULL])); + return array_merge($acls, $joinConditions); + } + /** * Joins a path and adds all fields in the joined entity to apiFieldSpec * diff --git a/civicrm/Civi/Api4/Relationship.php b/civicrm/Civi/Api4/Relationship.php index d1a76fede9..dd76ecc23e 100644 --- a/civicrm/Civi/Api4/Relationship.php +++ b/civicrm/Civi/Api4/Relationship.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -31,10 +29,12 @@ namespace Civi\Api4; class Relationship extends Generic\DAOEntity { /** - * @return \Civi\Api4\Action\Relationship\Get + * @param bool $checkPermissions + * @return Action\Relationship\Get */ - public static function get() { - return new \Civi\Api4\Action\Relationship\Get(static::class, __FUNCTION__); + public static function get($checkPermissions = TRUE) { + return (new Action\Relationship\Get(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/RelationshipCache.php b/civicrm/Civi/Api4/RelationshipCache.php new file mode 100644 index 0000000000..4030d33180 --- /dev/null +++ b/civicrm/Civi/Api4/RelationshipCache.php @@ -0,0 +1,49 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ + + +namespace Civi\Api4; + +/** + * RelationshipCache - readonly table to facilitate joining and finding contacts by relationship. + * + * @see \Civi\Api4\Relationship + * + * @package Civi\Api4 + */ +class RelationshipCache extends Generic\AbstractEntity { + + /** + * @param bool $checkPermissions + * @return Generic\DAOGetAction + */ + public static function get($checkPermissions = TRUE) { + return (new Generic\DAOGetAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return Generic\DAOGetFieldsAction + */ + public static function getFields($checkPermissions = TRUE) { + return (new Generic\DAOGetFieldsAction(static::class, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + +} diff --git a/civicrm/Civi/Api4/Route.php b/civicrm/Civi/Api4/Route.php index f3d36bc61c..a407a5093e 100644 --- a/civicrm/Civi/Api4/Route.php +++ b/civicrm/Civi/Api4/Route.php @@ -14,14 +14,10 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ namespace Civi\Api4; -use Civi\Api4\Generic\BasicGetFieldsAction; - /** * CiviCRM menu route. * @@ -36,10 +32,11 @@ use Civi\Api4\Generic\BasicGetFieldsAction; class Route extends \Civi\Api4\Generic\AbstractEntity { /** + * @param bool $checkPermissions * @return \Civi\Api4\Generic\BasicGetAction */ - public static function get() { - return new \Civi\Api4\Generic\BasicGetAction(__CLASS__, __FUNCTION__, function ($get) { + public static function get($checkPermissions = TRUE) { + return (new \Civi\Api4\Generic\BasicGetAction(__CLASS__, __FUNCTION__, function ($get) { // Pulling from ::items() rather than DB -- because it provides the final/live/altered data. $items = \CRM_Core_Menu::items(); $result = []; @@ -47,11 +44,15 @@ class Route extends \Civi\Api4\Generic\AbstractEntity { $result[] = ['path' => $path] + $item; } return $result; - }); + }))->setCheckPermissions($checkPermissions); } - public static function getFields() { - return new BasicGetFieldsAction(__CLASS__, __FUNCTION__, function() { + /** + * @param bool $checkPermissions + * @return Generic\BasicGetFieldsAction + */ + public static function getFields($checkPermissions = TRUE) { + return (new Generic\BasicGetFieldsAction(__CLASS__, __FUNCTION__, function() { return [ [ 'name' => 'path', @@ -90,7 +91,7 @@ class Route extends \Civi\Api4\Generic\AbstractEntity { 'data_type' => 'Array', ], ]; - }); + }))->setCheckPermissions($checkPermissions); } /** diff --git a/civicrm/Civi/Api4/SavedSearch.php b/civicrm/Civi/Api4/SavedSearch.php index dd5e900667..1262b6747e 100644 --- a/civicrm/Civi/Api4/SavedSearch.php +++ b/civicrm/Civi/Api4/SavedSearch.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php index aefa117db4..b7da530eac 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php +++ b/civicrm/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php index 43540ddec3..d3849abbef 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php +++ b/civicrm/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php index 61b38dccd1..a8ed4042b0 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php +++ b/civicrm/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -59,8 +57,7 @@ class CustomGroupJoinable extends Joinable { */ public function getEntityFields() { if (!$this->entityFields) { - $fields = CustomField::get() - ->setCheckPermissions(FALSE) + $fields = CustomField::get(FALSE) ->setSelect(['custom_group.name', 'custom_group.extends', 'custom_group.table_name', '*']) ->addWhere('custom_group.table_name', '=', $this->getTargetTable()) ->execute(); diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php index 3cd51f970d..0375fa0c2a 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php +++ b/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/Joiner.php b/civicrm/Civi/Api4/Service/Schema/Joiner.php index 4bd59de171..8786ec72bb 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joiner.php +++ b/civicrm/Civi/Api4/Service/Schema/Joiner.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/SchemaMap.php b/civicrm/Civi/Api4/Service/Schema/SchemaMap.php index 9c186833a5..951d824211 100644 --- a/civicrm/Civi/Api4/Service/Schema/SchemaMap.php +++ b/civicrm/Civi/Api4/Service/Schema/SchemaMap.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php index afecc01056..e6f82e5ce2 100644 --- a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php +++ b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -44,7 +42,7 @@ class SchemaMapBuilder { */ public function __construct(EventDispatcherInterface $dispatcher) { $this->dispatcher = $dispatcher; - $this->apiEntities = array_keys((array) Entity::get()->setCheckPermissions(FALSE)->addSelect('name')->execute()->indexBy('name')); + $this->apiEntities = array_keys((array) Entity::get(FALSE)->addSelect('name')->execute()->indexBy('name')); } /** diff --git a/civicrm/Civi/Api4/Service/Schema/Table.php b/civicrm/Civi/Api4/Service/Schema/Table.php index 72e88656aa..57fd4a256d 100644 --- a/civicrm/Civi/Api4/Service/Schema/Table.php +++ b/civicrm/Civi/Api4/Service/Schema/Table.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/CustomFieldSpec.php b/civicrm/Civi/Api4/Service/Spec/CustomFieldSpec.php index 54ff20ee11..0222473ae5 100644 --- a/civicrm/Civi/Api4/Service/Spec/CustomFieldSpec.php +++ b/civicrm/Civi/Api4/Service/Spec/CustomFieldSpec.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/FieldSpec.php b/civicrm/Civi/Api4/Service/Spec/FieldSpec.php index fc8852dd10..8b9ba5ca24 100644 --- a/civicrm/Civi/Api4/Service/Spec/FieldSpec.php +++ b/civicrm/Civi/Api4/Service/Spec/FieldSpec.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php index e1a2537d31..d1c0097593 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php deleted file mode 100644 index 028dbcfb0b..0000000000 --- a/civicrm/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php +++ /dev/null @@ -1,45 +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 - */ - - -namespace Civi\Api4\Service\Spec\Provider; - -use Civi\Api4\Service\Spec\FieldSpec; -use Civi\Api4\Service\Spec\RequestSpec; - -class ActivityCreationSpecProvider implements Generic\SpecProviderInterface { - - /** - * @inheritDoc - */ - public function modifySpec(RequestSpec $spec) { - $sourceContactField = new FieldSpec('source_contact_id', 'Activity', 'Integer'); - $sourceContactField->setRequired(TRUE); - $sourceContactField->setFkEntity('Contact'); - - $spec->addFieldSpec($sourceContactField); - } - - /** - * @inheritDoc - */ - public function applies($entity, $action) { - return $entity === 'Activity' && $action === 'create'; - } - -} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php new file mode 100644 index 0000000000..95504953b1 --- /dev/null +++ b/civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php @@ -0,0 +1,60 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ + + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\RequestSpec; + +class ActivitySpecProvider implements Generic\SpecProviderInterface { + + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $action = $spec->getAction(); + + $field = new FieldSpec('source_contact_id', 'Activity', 'Integer'); + $field->setTitle(ts('Source Contact')); + $field->setDescription(ts('Contact who created this activity.')); + $field->setRequired($action === 'create'); + $field->setFkEntity('Contact'); + $spec->addFieldSpec($field); + + $field = new FieldSpec('target_contact_id', 'Activity', 'Array'); + $field->setTitle(ts('Target Contacts')); + $field->setDescription(ts('Contact(s) involved in this activity.')); + $field->setFkEntity('Contact'); + $spec->addFieldSpec($field); + + $field = new FieldSpec('assignee_contact_id', 'Activity', 'Array'); + $field->setTitle(ts('Assignee Contacts')); + $field->setDescription(ts('Contact(s) assigned to this activity.')); + $field->setFkEntity('Contact'); + $spec->addFieldSpec($field); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Activity' && in_array($action, ['create', 'update'], TRUE); + } + +} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php index 26b611d7db..1b29d79350 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php index 1f77f16d2d..8bbd333542 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php index 08210eb86d..2461c93451 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php index c3f422cd17..925f415681 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php index edcfd3916d..19c4cdbb6c 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php index 4a3f1b7449..7c32163161 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php index ffad166d58..a7b0dd8a7e 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php index e994466e5d..87f94da38d 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php index b8d8e04cf7..7e63ff5437 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php index 7b6bbb45ba..2e6b2443d7 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/FieldDomainIdSpecProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php b/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php index 5d42a72366..a9768949a0 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php index 629cff435d..fd8698d74d 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php index 8027ee4eb2..08cea9d596 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php @@ -1,33 +1,17 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2020 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | 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. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | 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 (c) 2004-2020 + * @copyright CiviCRM LLC https://civicrm.org/licensing */ namespace Civi\Api4\Service\Spec\Provider; diff --git a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php index 6116c4c69d..37c74acee6 100644 --- a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php +++ b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php @@ -14,7 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * */ @@ -128,8 +127,7 @@ class SpecGatherer { if ($entity === 'Participant') { $extends = ['Participant', 'ParticipantRole', 'ParticipantEventName', 'ParticipantEventType']; } - $customFields = CustomField::get() - ->setCheckPermissions(FALSE) + $customFields = CustomField::get(FALSE) ->addWhere('custom_group.extends', 'IN', $extends) ->addWhere('custom_group.is_multiple', '=', '0') ->setSelect(['custom_group.name', '*']) @@ -146,8 +144,7 @@ class SpecGatherer { * @param \Civi\Api4\Service\Spec\RequestSpec $specification */ private function getCustomGroupFields($customGroup, RequestSpec $specification) { - $customFields = CustomField::get() - ->setCheckPermissions(FALSE) + $customFields = CustomField::get(FALSE) ->addWhere('custom_group.name', '=', $customGroup) ->setSelect(['custom_group.name', 'custom_group.table_name', '*']) ->execute(); diff --git a/civicrm/Civi/Api4/Setting.php b/civicrm/Civi/Api4/Setting.php index 8b269fe214..a5d3654c98 100644 --- a/civicrm/Civi/Api4/Setting.php +++ b/civicrm/Civi/Api4/Setting.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -31,20 +29,40 @@ namespace Civi\Api4; */ class Setting extends Generic\AbstractEntity { - public static function get() { - return new Action\Setting\Get(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\Setting\Get + */ + public static function get($checkPermissions = TRUE) { + return (new Action\Setting\Get(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } - public static function set() { - return new Action\Setting\Set(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\Setting\Set + */ + public static function set($checkPermissions = TRUE) { + return (new Action\Setting\Set(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } - public static function revert() { - return new Action\Setting\Revert(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\Setting\Revert + */ + public static function revert($checkPermissions = TRUE) { + return (new Action\Setting\Revert(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } - public static function getFields() { - return new Action\Setting\GetFields(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\Setting\GetFields + */ + public static function getFields($checkPermissions = TRUE) { + return (new Action\Setting\GetFields(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/System.php b/civicrm/Civi/Api4/System.php index 5dbe24c510..da4ea2bb75 100644 --- a/civicrm/Civi/Api4/System.php +++ b/civicrm/Civi/Api4/System.php @@ -16,11 +16,8 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ - namespace Civi\Api4; -use Civi\Api4\Generic\BasicGetFieldsAction; - /** * A collection of system maintenance/diagnostic utilities. * @@ -28,18 +25,32 @@ use Civi\Api4\Generic\BasicGetFieldsAction; */ class System extends Generic\AbstractEntity { - public static function flush() { - return new Action\System\Flush(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\System\Flush + */ + public static function flush($checkPermissions = TRUE) { + return (new Action\System\Flush(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } - public static function check() { - return new Action\System\Check(__CLASS__, __FUNCTION__); + /** + * @param bool $checkPermissions + * @return Action\System\Check + */ + public static function check($checkPermissions = TRUE) { + return (new Action\System\Check(__CLASS__, __FUNCTION__)) + ->setCheckPermissions($checkPermissions); } - public static function getFields() { - return new BasicGetFieldsAction(__CLASS__, __FUNCTION__, function() { + /** + * @param bool $checkPermissions + * @return Generic\BasicGetFieldsAction + */ + public static function getFields($checkPermissions = TRUE) { + return (new Generic\BasicGetFieldsAction(__CLASS__, __FUNCTION__, function() { return []; - }); + }))->setCheckPermissions($checkPermissions); } } diff --git a/civicrm/Civi/Api4/UFMatch.php b/civicrm/Civi/Api4/UFMatch.php index d056ebb6f5..6cc1c4ee59 100644 --- a/civicrm/Civi/Api4/UFMatch.php +++ b/civicrm/Civi/Api4/UFMatch.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ @@ -26,6 +24,6 @@ namespace Civi\Api4; * * @package Civi\Api4 */ -class UFMatch extends Generic\DAOEntity { +class UFMatch extends Generic\BridgeEntity { } diff --git a/civicrm/Civi/Api4/Utils/CoreUtil.php b/civicrm/Civi/Api4/Utils/CoreUtil.php index 1f4c7766a4..8d06ce9678 100644 --- a/civicrm/Civi/Api4/Utils/CoreUtil.php +++ b/civicrm/Civi/Api4/Utils/CoreUtil.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Api4/Utils/FormattingUtil.php b/civicrm/Civi/Api4/Utils/FormattingUtil.php index 77e50db8f5..900df21ccf 100644 --- a/civicrm/Civi/Api4/Utils/FormattingUtil.php +++ b/civicrm/Civi/Api4/Utils/FormattingUtil.php @@ -14,8 +14,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ diff --git a/civicrm/Civi/Core/CiviEventDispatcher.php b/civicrm/Civi/Core/CiviEventDispatcher.php index 9f3da3215e..ac104537d8 100644 --- a/civicrm/Civi/Core/CiviEventDispatcher.php +++ b/civicrm/Civi/Core/CiviEventDispatcher.php @@ -117,6 +117,9 @@ class CiviEventDispatcher extends EventDispatcher { case 'fail': throw new \RuntimeException("The dispatch policy prohibits event \"$eventName\"."); + case 'not-ready': + throw new \RuntimeException("CiviCRM has not bootstrapped sufficiently to fire event \"$eventName\"."); + default: throw new \RuntimeException("The dispatch policy for \"$eventName\" is unrecognized ($mode)."); diff --git a/civicrm/Civi/Core/Container.php b/civicrm/Civi/Core/Container.php index 15c7860a9d..5b96e40ef0 100644 --- a/civicrm/Civi/Core/Container.php +++ b/civicrm/Civi/Core/Container.php @@ -125,7 +125,7 @@ class Container { $container->setDefinition('dispatcher', new Definition( 'Civi\Core\CiviEventDispatcher', - [new Reference('service_container')] + [] )) ->setFactory([new Reference(self::SELF), 'createEventDispatcher'])->setPublic(TRUE); @@ -210,7 +210,7 @@ class Container { ->setFactory('CRM_Utils_Mail::createMailer'); if (empty(\Civi::$statics[__CLASS__]['boot'])) { - throw new \RuntimeException("Cannot initialize container. Boot services are undefined."); + throw new \RuntimeException('Cannot initialize container. Boot services are undefined.'); } foreach (\Civi::$statics[__CLASS__]['boot'] as $bootService => $def) { $container->setDefinition($bootService, new Definition())->setSynthetic(TRUE)->setPublic(TRUE); @@ -324,14 +324,11 @@ class Container { } /** - * @param \Symfony\Component\DependencyInjection\ContainerInterface $container * @return \Symfony\Component\EventDispatcher\EventDispatcher */ - public function createEventDispatcher($container) { - $dispatcher = new CiviEventDispatcher(); - if (\CRM_Core_Config::isUpgradeMode()) { - $dispatcher->setDispatchPolicy(\CRM_Upgrade_DispatchPolicy::get('upgrade.main')); - } + public function createEventDispatcher() { + // Continue building on the original dispatcher created during bootstrap. + $dispatcher = static::getBootService('dispatcher.boot'); $dispatcher->addListener('civi.core.install', ['\Civi\Core\InstallationCanary', 'check']); $dispatcher->addListener('civi.core.install', ['\Civi\Core\DatabaseInitializer', 'initialize']); @@ -355,9 +352,11 @@ class Container { $dispatcher->addListener('hook_civicrm_coreResourceList', ['\CRM_Utils_System', 'appendCoreResources']); $dispatcher->addListener('hook_civicrm_getAssetUrl', ['\CRM_Utils_System', 'alterAssetUrl']); $dispatcher->addListener('hook_civicrm_alterExternUrl', ['\CRM_Utils_System', 'migrateExternUrl'], 1000); + $dispatcher->addListener('hook_civicrm_triggerInfo', ['\CRM_Contact_BAO_RelationshipCache', 'onHookTriggerInfo']); $dispatcher->addListener('civi.dao.postInsert', ['\CRM_Core_BAO_RecurringEntity', 'triggerInsert']); $dispatcher->addListener('civi.dao.postUpdate', ['\CRM_Core_BAO_RecurringEntity', 'triggerUpdate']); $dispatcher->addListener('civi.dao.postDelete', ['\CRM_Core_BAO_RecurringEntity', 'triggerDelete']); + $dispatcher->addListener('hook_civicrm_postSave_civicrm_domain', ['\CRM_Core_BAO_Domain', 'onPostSave']); $dispatcher->addListener('hook_civicrm_unhandled_exception', [ 'CRM_Core_LegacyErrorHandler', 'handleException', @@ -462,20 +461,19 @@ class Container { */ public static function createPrevNextCache($container) { $setting = \Civi::settings()->get('prevNextBackend'); - if ($setting === 'default') { - // For initial release (5.8.x), continue defaulting to SQL. - $isTransitional = version_compare(\CRM_Utils_System::version(), '5.9.alpha1', '<'); + if (!$setting || $setting === 'default') { $cacheDriver = \CRM_Utils_Cache::getCacheDriver(); $service = 'prevnext.driver.' . strtolower($cacheDriver); - return $container->has($service) && !$isTransitional + return $container->has($service) ? $container->get($service) : $container->get('prevnext.driver.sql'); } - else { - return $container->get('prevnext.driver.' . $setting); - } + return $container->get('prevnext.driver.' . $setting); } + /** + * @return \ArrayObject + */ public static function createCacheConfig() { $driver = \CRM_Utils_Cache::getCacheDriver(); $settings = \CRM_Utils_Cache::getCacheSettings($driver); @@ -501,6 +499,17 @@ class Container { $bootServices['paths'] = new \Civi\Core\Paths(); + $bootServices['dispatcher.boot'] = new CiviEventDispatcher(); + + // Quality control: There should be no pre-boot hooks because they make it harder to understand/support/refactor. + // If a pre-boot hook sneaks in, we'll raise an error. + $bootDispatchPolicy = [ + '/^hook_/' => 'not-ready', + '/^civi\./' => 'run', + ]; + $mainDispatchPolicy = \CRM_Core_Config::isUpgradeMode() ? \CRM_Upgrade_DispatchPolicy::get('upgrade.main') : NULL; + $bootServices['dispatcher.boot']->setDispatchPolicy($bootDispatchPolicy); + $class = $runtime->userFrameworkClass; $bootServices['userSystem'] = $userSystem = new $class(); $userSystem->initialize(); @@ -522,6 +531,7 @@ class Container { \CRM_Utils_Hook::singleton(TRUE); \CRM_Extension_System::singleton(TRUE); \CRM_Extension_System::singleton(TRUE)->getClassLoader()->register(); + $bootServices['dispatcher.boot']->setDispatchPolicy($mainDispatchPolicy); $runtime->includeCustomPath(); @@ -532,8 +542,16 @@ class Container { } \Civi::$statics[__CLASS__]['container'] = $container; } + else { + $bootServices['dispatcher.boot']->setDispatchPolicy($mainDispatchPolicy); + } } + /** + * @param string $name + * + * @return mixed + */ public static function getBootService($name) { return \Civi::$statics[__CLASS__]['boot'][$name]; } diff --git a/civicrm/Civi/Install/Requirements.php b/civicrm/Civi/Install/Requirements.php index 87012fa9c0..da7b2cc765 100644 --- a/civicrm/Civi/Install/Requirements.php +++ b/civicrm/Civi/Install/Requirements.php @@ -28,12 +28,15 @@ class Requirements { */ protected $system_checks = [ 'checkMemory', - 'checkServerVariables', 'checkMysqlConnectExists', 'checkJsonEncodeExists', 'checkMultibyteExists', ]; + protected $system_checks_web = [ + 'checkServerVariables', + ]; + protected $database_checks = [ 'checkMysqlConnection', 'checkMysqlVersion', @@ -83,6 +86,12 @@ class Requirements { $errors[] = $this->$check(); } + if (PHP_SAPI !== 'cli') { + foreach ($this->system_checks_web as $check) { + $errors[] = $this->$check(); + } + } + return $errors; } diff --git a/civicrm/Civi/Report/OutputHandlerBase.php b/civicrm/Civi/Report/OutputHandlerBase.php new file mode 100644 index 0000000000..247bc45f6d --- /dev/null +++ b/civicrm/Civi/Report/OutputHandlerBase.php @@ -0,0 +1,146 @@ +<?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\Report; + +/** + * Base Report Output Handler + */ +class OutputHandlerBase implements OutputHandlerInterface { + + /** + * This is for convenience since otherwise several functions + * would take it as a parameter. + * + * @var \CRM_Report_Form + */ + protected $form; + + /** + * Getter for $form + * + * @return \CRM_Report_Form + */ + public function getForm():\CRM_Report_Form { + return $this->form; + } + + /** + * Setter for $form + * + * @param \CRM_Report_Form $form + */ + public function setForm(\CRM_Report_Form $form) { + $this->form = $form; + } + + /** + * Are we a suitable output handler based on the given form? + * + * The class member $form isn't set yet at this point since we don't + * even know if we're in play yet, so the form is a parameter. + * + * @param \CRM_Report_Form $form + * + * @return bool + */ + public function isOutputHandlerFor(\CRM_Report_Form $form):bool { + return FALSE; + } + + /** + * Return the download filename. This should be the "clean" name, not + * a munged temporary filename. + * + * @return string + */ + public function getFileName():string { + return ''; + } + + /** + * Return the html body of the email. + * + * @return string + */ + public function getMailBody():string { + return ''; + } + + /** + * Return the report contents as a string. + * + * @return string + */ + public function getOutputString():string { + return ''; + } + + /** + * Set headers as appropriate and send the output to the browser. + */ + public function download() { + } + + /** + * Mime type of the attachment. + * + * @return string + */ + public function getMimeType():string { + return 'text/html'; + } + + /** + * Charset of the attachment. + * + * The default of '' means charset is not specified in the mimepart, + * which is normal for binary attachments, but for text attachments you + * should specify something like 'utf-8'. + * + * @return string + */ + public function getCharset():string { + return ''; + } + + /** + * Hide/show various elements in the output, but generally for a handler + * this is always set to TRUE. + * + * @return bool + */ + public function isPrintOnly():bool { + return TRUE; + } + + /** + * Use a pager, but for a handler this would be FALSE since paging + * is a UI element. + * + * @return bool + */ + public function isAddPaging():bool { + return FALSE; + } + + /** + * Create absolute urls for links. Generally for a handler + * this is always set to TRUE, but for example for 'print' it's displayed + * on the site so it can be relative. + * @todo Couldn't it just always be absolute? + * + * @return bool + */ + public function isAbsoluteUrl():bool { + return TRUE; + } + +} diff --git a/civicrm/Civi/Report/OutputHandlerFactory.php b/civicrm/Civi/Report/OutputHandlerFactory.php new file mode 100644 index 0000000000..a2f975410f --- /dev/null +++ b/civicrm/Civi/Report/OutputHandlerFactory.php @@ -0,0 +1,101 @@ +<?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\Report; + +/** + * OutputHandlers can either be the standard core ones: print/pdf/csv, or + * extensions can add their own. + * + * @package Civi\Report + */ +class OutputHandlerFactory { + + protected static $singleton; + + /** + * @var array + * Array of registered possible OutputHandlers. + */ + protected static $registered = []; + + /** + * Singleton function. + * + * @return OutputHandlerFactory + */ + public static function singleton() { + if (self::$singleton === NULL) { + self::$singleton = new OutputHandlerFactory(); + self::registerBuiltins(); + } + return self::$singleton; + } + + /** + * Return an OutputHandler based on the parameters. + * + * @param \CRM_Report_Form $form + * A CiviReport that extends CRM_Report_Form. + * + * @return \Civi\Report\OutputHandlerInterface|NULL + * An object that implements the OutputHandlerInterface, or NULL if + * nothing suitable for the given parameters. + */ + public function create(\CRM_Report_Form $form) { + /** + * The first draft of this had extensions register their classes, + * but it needed to be early on because there's also the dropdown on the + * report form that lists the output formats available which happens + * earlier than the output run and that worked better as a simple hook. + * So it just felt out of place then to have two different types of things, + * and people are used to hooks, and there's already alterReportVar which + * seemed a natural place. + */ + \CRM_Utils_Hook::alterReportVar('outputhandlers', self::$registered, $form); + foreach (self::$registered as $candidate) { + try { + $outputHandler = new $candidate(); + if ($outputHandler->isOutputHandlerFor($form)) { + $outputHandler->setForm($form); + return $outputHandler; + } + } + catch (\Exception $e) { + // no ts() since this is a sysadmin-y message + \Civi::log()->warn("Unable to use $candidate as an output handler. " . $e->getMessage()); + } + } + return NULL; + } + + /** + * Register an outputHandler to handle an output format. + * + * @param string $outputHandler + * The classname of a class that implements OutputHandlerInterface. + */ + public function register(string $outputHandler) { + // Use classname as index to (a) avoid duplicates and (b) make it easier + // to unset/overwrite one via hook. + self::$registered[$outputHandler] = $outputHandler; + } + + /** + * There are some handlers that were hard-coded in to the form before which + * have now been moved to outputhandlers. + */ + private static function registerBuiltins() { + self::$singleton->register('\CRM_Report_OutputHandler_Print'); + self::$singleton->register('\CRM_Report_OutputHandler_Csv'); + self::$singleton->register('\CRM_Report_OutputHandler_Pdf'); + } + +} diff --git a/civicrm/Civi/Report/OutputHandlerInterface.php b/civicrm/Civi/Report/OutputHandlerInterface.php new file mode 100644 index 0000000000..bae1097782 --- /dev/null +++ b/civicrm/Civi/Report/OutputHandlerInterface.php @@ -0,0 +1,121 @@ +<?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\Report; + +/** + * @package Civi\Report + */ +interface OutputHandlerInterface { + + /** + * Getter for $form. + * + * It's suggested to extend \Civi\Report\OutputHandlerBase and then this will + * be handled for you. + * + * @return \CRM_Report_Form + */ + public function getForm():\CRM_Report_Form; + + /** + * Setter for $form. + * + * It's suggested to extend \Civi\Report\OutputHandlerBase and then this will + * be handled for you. + * + * @param \CRM_Report_Form $form + */ + public function setForm(\CRM_Report_Form $form); + + /** + * Are we a suitable output handler based on the given form? + * + * The class member $form isn't set yet at this point since we don't + * even know if we're in play yet, so the form is a parameter. + * + * @param \CRM_Report_Form $form + * + * @return bool + */ + public function isOutputHandlerFor(\CRM_Report_Form $form):bool; + + /** + * Return the download filename. This should be the "clean" name, not + * a munged temporary filename. + * + * @return string + */ + public function getFileName():string; + + /** + * Return the html body of the email. + * + * @return string + */ + public function getMailBody():string; + + /** + * Return the report contents as a string. + * + * @return string + */ + public function getOutputString():string; + + /** + * Set headers as appropriate and send the output to the browser. + */ + public function download(); + + /** + * Mime type of the attachment. + * + * @return string + */ + public function getMimeType():string; + + /** + * Charset of the attachment. + * + * The default of '' means charset is not specified in the mimepart, + * which is normal for binary attachments, but for text attachments you + * should specify something like 'utf-8'. + * + * @return string + */ + public function getCharset():string; + + /** + * Hide/show various elements in the output, but generally for a handler + * this is always set to TRUE. + * + * @return bool + */ + public function isPrintOnly():bool; + + /** + * Use a pager, but for a handler this would be FALSE since paging + * is a UI element. + * + * @return bool + */ + public function isAddPaging():bool; + + /** + * Create absolute urls for links. Generally for a handler + * this is always set to TRUE, but for example for 'print' it's displayed + * on the site so it can be relative. + * @todo Couldn't it just always be absolute? + * + * @return bool + */ + public function isAbsoluteUrl():bool; + +} diff --git a/civicrm/Civi/Test/Api3TestTrait.php b/civicrm/Civi/Test/Api3TestTrait.php index fbe73cd0fe..ed3557babe 100644 --- a/civicrm/Civi/Test/Api3TestTrait.php +++ b/civicrm/Civi/Test/Api3TestTrait.php @@ -23,7 +23,10 @@ trait Api3TestTrait { * @return array */ public function versionThreeAndFour() { - return [[3], [4]]; + return [ + 'APIv3' => [3], + 'APIv4' => [4], + ]; } /** diff --git a/civicrm/Civi/Test/ContactTestTrait.php b/civicrm/Civi/Test/ContactTestTrait.php index efb0b146e2..26991ea8cf 100644 --- a/civicrm/Civi/Test/ContactTestTrait.php +++ b/civicrm/Civi/Test/ContactTestTrait.php @@ -18,7 +18,7 @@ trait ContactTestTrait { /** * Emulate a logged in user since certain functions use that. * value to store a record in the DB (like activity) - * CRM-8180 + * @see https://issues.civicrm.org/jira/browse/CRM-8180 * * @return int * Contact ID of the created user. diff --git a/civicrm/Civi/Test/Data.php b/civicrm/Civi/Test/Data.php index 9360484f29..d2007f9e82 100644 --- a/civicrm/Civi/Test/Data.php +++ b/civicrm/Civi/Test/Data.php @@ -44,6 +44,8 @@ class Data { \Civi\Test::schema()->setStrict(TRUE); }); + civicrm_api('setting', 'create', ['installed' => 1, 'domain_id' => 'all', 'version' => 3]); + // Rebuild triggers civicrm_api('system', 'flush', ['version' => 3, 'triggers' => 1]); diff --git a/civicrm/Civi/Test/DbTestTrait.php b/civicrm/Civi/Test/DbTestTrait.php index b664edd84a..079bb8df6b 100644 --- a/civicrm/Civi/Test/DbTestTrait.php +++ b/civicrm/Civi/Test/DbTestTrait.php @@ -184,7 +184,7 @@ trait DbTestTrait { $actual = \CRM_Core_DAO::singleValueQuery($query, $params); $this->assertEquals($expected, $actual, sprintf('%sexpected=[%s] actual=[%s] query=[%s]', - $message, $expected, $actual, \CRM_Core_DAO::composeQuery($query, $params, FALSE) + $message, $expected, $actual, \CRM_Core_DAO::composeQuery($query, $params) ) ); } diff --git a/civicrm/Civi/Test/TAP.php b/civicrm/Civi/Test/TAP.php index dd1df865e2..e7bcd88555 100644 --- a/civicrm/Civi/Test/TAP.php +++ b/civicrm/Civi/Test/TAP.php @@ -2,25 +2,11 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | 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. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | 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 | +--------------------------------------------------------------------+ */ diff --git a/civicrm/Civi/Test/TAPLegacy.php b/civicrm/Civi/Test/TAPLegacy.php index 41c7da08b4..7da5659f54 100644 --- a/civicrm/Civi/Test/TAPLegacy.php +++ b/civicrm/Civi/Test/TAPLegacy.php @@ -2,25 +2,11 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | - +--------------------------------------------------------------------+ - | This file is a part of CiviCRM. | - | | - | CiviCRM is free software; you can copy, modify, and distribute it | - | under the terms of the GNU Affero General Public License | - | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | - | | - | 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. | + | Copyright CiviCRM LLC. All rights reserved. | | | - | You should have received a copy of the GNU Affero General Public | - | License and the CiviCRM Licensing Exception along | - | with this program; if not, contact CiviCRM LLC | - | at info[AT]civicrm[DOT]org. If you have questions about the | - | GNU Affero General Public License or the licensing of CiviCRM, | - | see the CiviCRM license FAQ at http://civicrm.org/licensing | + | 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 | +--------------------------------------------------------------------+ */ diff --git a/civicrm/ang/api4Explorer/Explorer.html b/civicrm/ang/api4Explorer/Explorer.html index 5b47978683..b32196dfd5 100644 --- a/civicrm/ang/api4Explorer/Explorer.html +++ b/civicrm/ang/api4Explorer/Explorer.html @@ -70,10 +70,15 @@ <div class="api4-input form-inline"> <i class="crm-i fa-arrows"></i> <input class="form-control twenty" type="text" ng-model="params.join[$index][0]" ng-model-options="{updateOn: 'blur'}" ng-change="$ctrl.buildFieldList()"/> + <label>{{:: ts('Required:') }}</label> <select class="form-control" ng-model="params.join[$index][1]" ng-options="o.k as o.v for o in ::joinTypes" ></select> + <label>{{:: ts('Using:') }}</label> + <select class="form-control" ng-model="params.join[$index][2]" ng-options="e.name as e.name for e in ::bridgeEntities" ng-change="$ctrl.buildFieldList()"> + <option value="">{{:: ts('- none -') }}</option> + </select> <a href class="crm-hover-button" title="Clear" ng-click="clearParam('join', $index)"><i class="crm-i fa-times"></i></a> </div> - <fieldset class="api4-clause-fieldset" crm-api4-clause="{skip: 2, clauses: params.join[$index], op: 'AND', label: 'On', fields: fieldsAndJoins, format: 'plain'}"> + <fieldset class="api4-clause-fieldset" crm-api4-clause="{skip: 3, clauses: params.join[$index], op: 'AND', label: 'On', fields: fieldsAndJoins, format: 'plain'}"> </fieldset> </fieldset> </div> diff --git a/civicrm/ang/api4Explorer/Explorer.js b/civicrm/ang/api4Explorer/Explorer.js index 9e6b9644a8..0dca04e3bc 100644 --- a/civicrm/ang/api4Explorer/Explorer.js +++ b/civicrm/ang/api4Explorer/Explorer.js @@ -56,7 +56,8 @@ $scope.loading = false; $scope.controls = {}; $scope.langs = ['php', 'js', 'ang', 'cli']; - $scope.joinTypes = [{k: false, v: ts('Optional')}, {k: true, v: ts('Required')}]; + $scope.joinTypes = [{k: false, v: 'FALSE (LEFT JOIN)'}, {k: true, v: 'TRUE (INNER JOIN)'}]; + $scope.bridgeEntities = _.filter(schema, {type: 'BridgeEntity'}); $scope.code = { php: [ {name: 'oop', label: ts('OOP Style'), code: ''}, @@ -96,7 +97,7 @@ function pluralize(str) { var lastLetter = str[str.length - 1], lastTwo = str[str.length - 2] + lastLetter; - if (lastLetter === 's' || lastTwo === 'ch') { + if (lastLetter === 's' || lastLetter === 'x' || lastTwo === 'ch') { return str + 'es'; } if (lastLetter === 'y' && lastTwo !== 'ey') { @@ -312,6 +313,22 @@ return _.findWhere(schema, {name: entityName || $scope.entity}); } + // Get name of entity given join alias + function entityNameFromAlias(alias) { + var joins = getExplicitJoins(), + entity = $scope.entity, + path = alias.split('.'); + // First check explicit joins + if (joins[alias]) { + return joins[alias]; + } + // Then lookup implicit links + _.each(path, function(node) { + entity = _.find(links[entity], {alias: node}).entity; + }); + return entity; + } + // Get all params that have been set function getParams() { var params = {}; @@ -399,6 +416,10 @@ addJoins($scope.fieldsAndJoinsAndFunctionsWithSuffixes, false, ['name', 'label']); addJoins($scope.fieldsAndJoinsAndFunctionsAndWildcards, true, ['name', 'label']); } + // Custom fields are supported if HAVING is + if (actionInfo.params.having) { + $scope.fieldsAndJoinsAndFunctionsAndWildcards.unshift({id: 'custom.*', text: 'custom.*', 'description': 'All custom fields'}); + } $scope.fieldsAndJoinsAndFunctionsAndWildcards.unshift({id: '*', text: '*', 'description': 'All core ' + $scope.entity + ' fields'}); }; @@ -466,12 +487,29 @@ }, true); } if (name === 'select' && actionInfo.params.having) { - $scope.$watchCollection('params.select', function(values) { + $scope.$watchCollection('params.select', function(newSelect) { + // Ignore row_count, it can't be used in HAVING clause + var select = _.without(newSelect, 'row_count'); $scope.havingOptions.length = 0; - _.each(values, function(item) { - var pieces = item.split(' AS '), + // An empty select is an implicit * + if (!select.length) { + select.push('*'); + } + _.each(select, function(item) { + var joinEntity, + pieces = item.split(' AS '), alias = _.trim(pieces[pieces.length - 1]).replace(':label', ':name'); - $scope.havingOptions.push({id: alias, text: alias}); + // Expand wildcards + if (alias[alias.length - 1] === '*') { + if (alias.length > 1) { + joinEntity = entityNameFromAlias(alias.slice(0, -2)); + } + var fieldList = _.filter(getEntity(joinEntity).fields, {custom_field_id: null}); + formatForSelect2(fieldList, $scope.havingOptions, 'name', ['description', 'required', 'default_value'], alias.slice(0, -1)); + } + else { + $scope.havingOptions.push({id: alias, text: alias}); + } }); }); } @@ -630,11 +668,12 @@ // Format oop params function formatOOP(entity, action, params, indent) { var code = '', - newLine = "\n" + _.repeat(' ', indent); + newLine = "\n" + _.repeat(' ', indent), + perm = params.checkPermissions === false ? 'FALSE' : ''; if (entity.substr(0, 7) !== 'Custom_') { - code = "\\Civi\\Api4\\" + entity + '::' + action + '()'; + code = "\\Civi\\Api4\\" + entity + '::' + action + '(' + perm + ')'; } else { - code = "\\Civi\\Api4\\CustomValue::" + action + "('" + entity.substr(7) + "')"; + code = "\\Civi\\Api4\\CustomValue::" + action + "('" + entity.substr(7) + "'" + (perm ? ', ' : '') + perm + ")"; } _.each(params, function(param, key) { var val = ''; @@ -667,7 +706,7 @@ code += (chain.length > 3 ? ',' : '') + (!_.isEmpty(chain[2]) ? newLine : ' ') + (chain.length > 3 ? phpFormat(chain[3]) : '') + ')'; }); } - else { + else if (key !== 'checkPermissions') { code += newLine + "->set" + ucfirst(key) + '(' + phpFormat(param, 2 + indent) + ')'; } }); diff --git a/civicrm/ang/crmMailing/Recipients.js b/civicrm/ang/crmMailing/Recipients.js index 0d39cde49e..1867e9582f 100644 --- a/civicrm/ang/crmMailing/Recipients.js +++ b/civicrm/ang/crmMailing/Recipients.js @@ -95,11 +95,12 @@ } 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+'" aria-hidden="true"></i> <span class="' + spanClass + '">' + item.text + '</span>'; + return '<i class="crm-i '+icon+'"></i> <span class="' + spanClass + '">' + smartGroupMarker + item.text + '</span>'; } function validate() { @@ -154,7 +155,7 @@ mids.push(0); } - CRM.api3('Group', 'getlist', { params: { id: { IN: gids }, options: { limit: 0 } }, extra: ["is_hidden"] } ).then( + 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) { @@ -165,8 +166,8 @@ $(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}); + 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}); } @@ -233,6 +234,9 @@ if('civicrm_mailing' === rcpAjaxState.entity) { params["api.MailingRecipients.getcount"] = {}; } + else if ('civicrm_group' === rcpAjaxState.entity) { + params.extra = ["saved_search_id"]; + } return params; }, @@ -256,8 +260,8 @@ text: obj.label } : ''; } else { - return { id: obj.id + ' ' + rcpAjaxState.entity + ' ' + rcpAjaxState.type, - text: obj.label }; + return { id: obj.id + ' ' + rcpAjaxState.entity + ' ' + rcpAjaxState.type, text: obj.label, + is_smart: (!_.isEmpty(obj.extra.saved_search_id)) }; } }) }; diff --git a/civicrm/ang/crmMailing/services.js b/civicrm/ang/crmMailing/services.js index 45c2063732..3dbbf9ae98 100644 --- a/civicrm/ang/crmMailing/services.js +++ b/civicrm/ang/crmMailing/services.js @@ -470,7 +470,7 @@ .then(function (deliveryInfos) { var count = Object.keys(deliveryInfos).length; if (count === 0) { - CRM.alert(ts('Could not identify any recipients. Perhaps the group is empty?')); + CRM.alert(ts('Could not identify any recipients. Perhaps your test group is empty, or you tried sending to contacts that do not exist and you have no permission to add contacts.')); } }) ; diff --git a/civicrm/api/v3/Contribution.php b/civicrm/api/v3/Contribution.php index bbe0169181..298980b4a7 100644 --- a/civicrm/api/v3/Contribution.php +++ b/civicrm/api/v3/Contribution.php @@ -393,7 +393,7 @@ function _civicrm_api3_contribute_format_params($params, &$values) { * @throws Exception */ function civicrm_api3_contribution_sendconfirmation($params) { - $ids = $values = []; + $ids = []; $allowedParams = [ 'receipt_from_email', 'receipt_from_name', @@ -404,8 +404,7 @@ function civicrm_api3_contribution_sendconfirmation($params) { 'payment_processor_id', ]; $input = array_intersect_key($params, array_flip($allowedParams)); - $input['is_email_receipt'] = TRUE; - CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $params['id'], $values); + CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $params['id']); } /** @@ -488,7 +487,8 @@ function civicrm_api3_contribution_completetransaction($params) { elseif ($contribution->contribution_status_id == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed')) { throw new API_Exception(ts('Contribution already completed'), 'contribution_completed'); } - $input['trxn_id'] = !empty($params['trxn_id']) ? $params['trxn_id'] : $contribution->trxn_id; + $input['trxn_id'] = $params['trxn_id'] ?? $contribution->trxn_id; + if (!empty($params['fee_amount'])) { $input['fee_amount'] = $params['fee_amount']; } @@ -682,7 +682,7 @@ function _ipn_process_transaction(&$params, $contribution, $input, $ids, $firstC } $input['card_type_id'] = $params['card_type_id'] ?? NULL; $input['pan_truncation'] = $params['pan_truncation'] ?? NULL; - return CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, NULL, + return CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, $params['is_post_payment_create'] ?? NULL); } diff --git a/civicrm/api/v3/Domain.php b/civicrm/api/v3/Domain.php index 166179f88f..974826b30e 100644 --- a/civicrm/api/v3/Domain.php +++ b/civicrm/api/v3/Domain.php @@ -28,17 +28,23 @@ function civicrm_api3_domain_get($params) { $params['version'] = $params['domain_version'] ?? NULL; unset($params['version']); - $bao = new CRM_Core_BAO_Domain(); if (!empty($params['current_domain'])) { - $domainBAO = CRM_Core_Config::domainID(); - $params['id'] = $domainBAO; + $params['id'] = CRM_Core_Config::domainID(); } if (!empty($params['options']) && !empty($params['options']['is_count'])) { return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params); } - _civicrm_api3_dao_set_filter($bao, $params, TRUE); - $domains = _civicrm_api3_dao_to_array($bao, $params, TRUE, 'Domain'); + // If requesting current domain, read from cache + if (!empty($params['id']) && $params['id'] == CRM_Core_Config::domainID()) { + $bao = CRM_Core_BAO_Domain::getDomain(); + $domains = [$params['id'] => $bao->toArray()]; + } + else { + $bao = new CRM_Core_BAO_Domain(); + _civicrm_api3_dao_set_filter($bao, $params, TRUE); + $domains = _civicrm_api3_dao_to_array($bao, $params, TRUE, 'Domain'); + } foreach ($domains as $domain) { if (!empty($domain['contact_id'])) { diff --git a/civicrm/api/v3/Job.php b/civicrm/api/v3/Job.php index f34d7d48a2..e791235232 100644 --- a/civicrm/api/v3/Job.php +++ b/civicrm/api/v3/Job.php @@ -466,7 +466,14 @@ function civicrm_api3_job_process_membership($params) { return civicrm_api3_create_error('Could not acquire lock, another Membership Processing process is running'); } - $result = CRM_Member_BAO_Membership::updateAllMembershipStatus(); + // We need to pass this through as a simple array of membership status IDs as values. + if (!empty($params['exclude_membership_status_ids'])) { + is_array($params['exclude_membership_status_ids']) ?: $params['exclude_membership_status_ids'] = [$params['exclude_membership_status_ids']]; + } + if (!empty($params['exclude_membership_status_ids']['IN'])) { + $params['exclude_membership_status_ids'] = $params['exclude_membership_status_ids']['IN']; + } + $result = CRM_Member_BAO_Membership::updateAllMembershipStatus($params); $lock->release(); if ($result['is_error'] == 0) { @@ -477,6 +484,25 @@ function civicrm_api3_job_process_membership($params) { } } +function _civicrm_api3_job_process_membership_spec(&$params) { + $params['exclude_test_memberships']['api.default'] = TRUE; + $params['exclude_test_memberships']['title'] = 'Exclude test memberships'; + $params['exclude_test_memberships']['description'] = 'Exclude test memberships from calculations (default = TRUE)'; + $params['exclude_test_memberships']['type'] = CRM_Utils_Type::T_BOOLEAN; + $params['only_active_membership_types']['api.default'] = TRUE; + $params['only_active_membership_types']['title'] = 'Exclude disabled membership types'; + $params['only_active_membership_types']['description'] = 'Exclude disabled membership types from calculations (default = TRUE)'; + $params['only_active_membership_types']['type'] = CRM_Utils_Type::T_BOOLEAN; + $params['exclude_membership_status_ids']['title'] = 'Exclude membership status IDs from calculations'; + $params['exclude_membership_status_ids']['description'] = 'Default: Exclude Pending, Cancelled, Expired. Deceased will always be excluded'; + $params['exclude_membership_status_ids']['type'] = CRM_Utils_Type::T_INT; + $params['exclude_membership_status_ids']['pseudoconstant'] = [ + 'table' => 'civicrm_membership_status', + 'keyColumn' => 'id', + 'labelColumn' => 'label', + ]; +} + /** * This api checks and updates the status of all survey respondents. * diff --git a/civicrm/api/v3/Mailing.php b/civicrm/api/v3/Mailing.php index 011a19f149..756cf75ab8 100644 --- a/civicrm/api/v3/Mailing.php +++ b/civicrm/api/v3/Mailing.php @@ -657,7 +657,7 @@ function civicrm_api3_mailing_send_test($params) { $emailId = $emailDetail[$email]['email_id']; $contactId = $emailDetail[$email]['contact_id']; } - if (!$contactId) { + if (!$contactId && CRM_Core_Permission::check('add contacts')) { //create new contact. $contact = civicrm_api3('Contact', 'create', [ @@ -669,13 +669,15 @@ function civicrm_api3_mailing_send_test($params) { $contactId = $contact['id']; $emailId = $contact['values'][$contactId]['api.Email.get']['id']; } - civicrm_api3('MailingEventQueue', 'create', - [ - 'job_id' => $job['id'], - 'email_id' => $emailId, - 'contact_id' => $contactId, - ] - ); + if ($emailId && $contactId) { + civicrm_api3('MailingEventQueue', 'create', + [ + 'job_id' => $job['id'], + 'email_id' => $emailId, + 'contact_id' => $contactId, + ] + ); + } } } diff --git a/civicrm/api/v3/Order.php b/civicrm/api/v3/Order.php index 99b270ec29..32d59a1939 100644 --- a/civicrm/api/v3/Order.php +++ b/civicrm/api/v3/Order.php @@ -74,9 +74,9 @@ function civicrm_api3_order_create($params) { civicrm_api3_verify_one_mandatory($params, NULL, ['line_items', 'total_amount']); $entity = NULL; $entityIds = []; - $contributionStatus = $params['contribution_status_id'] ?? NULL; - if ($contributionStatus !== 'Pending' && 'Pending' !== CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contributionStatus)) { - CRM_Core_Error::deprecatedFunctionWarning("Creating a Order with a status other than pending is deprecated. Currently empty defaults to 'Completed' so as a transition not passing in 'Pending' is deprecated. You can chain payment creation e.g civicrm_api3('Order', 'create', ['blah' => 'blah', 'contribution_status_id' => 'Pending', 'api.Payment.create => ['total_amount' => 5]]"); + $params['contribution_status_id'] = $params['contribution_status_id'] ?? 'Pending'; + if ($params['contribution_status_id'] !== 'Pending' && 'Pending' !== CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $params['contribution_status_id'])) { + CRM_Core_Error::deprecatedFunctionWarning("Creating a Order with a status other than pending is deprecated. Please do not set contribution_status_id, it will default to Pending. You can chain payment creation e.g civicrm_api3('Order', 'create', ['blah' => 'blah', 'contribution_status_id' => 'Pending', 'api.Payment.create => ['total_amount' => 5]]"); } if (!empty($params['line_items']) && is_array($params['line_items'])) { @@ -91,9 +91,7 @@ function civicrm_api3_order_create($params) { if ($entityParams) { if (in_array($entity, ['participant', 'membership'])) { $entityParams['skipLineItem'] = TRUE; - if ($contributionStatus === 'Pending') { - $entityParams['status_id'] = ($entity === 'participant' ? 'Pending from incomplete transaction' : 'Pending'); - } + $entityParams['status_id'] = ($entity === 'participant' ? 'Pending from incomplete transaction' : 'Pending'); $entityResult = civicrm_api3($entity, 'create', $entityParams); $params['contribution_mode'] = $entity; $entityIds[] = $params[$entity . '_id'] = $entityResult['id']; diff --git a/civicrm/api/v3/ReportTemplate.php b/civicrm/api/v3/ReportTemplate.php index 5d2e98fe61..2b96179265 100644 --- a/civicrm/api/v3/ReportTemplate.php +++ b/civicrm/api/v3/ReportTemplate.php @@ -97,6 +97,9 @@ function civicrm_api3_report_template_delete($params) { * * @return array * API result array + * + * @throws \API_Exception + * @throws \CiviCRM_API3_Exception */ function civicrm_api3_report_template_getrows($params) { civicrm_api3_verify_one_mandatory($params, NULL, ['report_id', 'instance_id']); diff --git a/civicrm/api/v3/System.php b/civicrm/api/v3/System.php index 486d67bb1b..b597c48793 100644 --- a/civicrm/api/v3/System.php +++ b/civicrm/api/v3/System.php @@ -514,11 +514,8 @@ function civicrm_api3_system_createmissinglogtables() { * */ function civicrm_api3_system_rebuildmultilingualschema() { - $domain = new CRM_Core_DAO_Domain(); - $domain->find(TRUE); - - if ($domain->locales) { - $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { CRM_Core_I18n_Schema::rebuildMultilingualSchema($locales); return civicrm_api3_create_success(1); } diff --git a/civicrm/bin/regen.sh b/civicrm/bin/regen.sh index 3d5f6bcf85..f7451a23fc 100755 --- a/civicrm/bin/regen.sh +++ b/civicrm/bin/regen.sh @@ -39,8 +39,6 @@ echo "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB $MYSQLCMD < civicrm.mysql $MYSQLCMD < civicrm_data.mysql $MYSQLCMD < civicrm_sample.mysql -echo "DROP TABLE IF EXISTS zipcodes" | $MYSQLCMD -$MYSQLCMD < zipcodes.mysql ## For first boot on fresh DB, boot CMS before CRM. cms_eval 'civicrm_initialize();' @@ -48,8 +46,8 @@ cms_eval 'civicrm_initialize();' php GenerateData.php ## Prune local data -$MYSQLCMD -e "DROP TABLE zipcodes; DROP TABLE IF EXISTS civicrm_install_canary; DELETE FROM civicrm_cache; DELETE FROM civicrm_setting;" -$MYSQLCMD -e "DELETE FROM civicrm_extension WHERE full_name NOT IN ('sequentialcreditnotes');" +$MYSQLCMD -e "DROP TABLE IF EXISTS civicrm_install_canary; DELETE FROM civicrm_cache; DELETE FROM civicrm_setting;" +$MYSQLCMD -e "DELETE FROM civicrm_extension WHERE full_name NOT IN ('sequentialcreditnotes', 'eventcart', 'search', 'flexmailer');" TABLENAMES=$( echo "show tables like 'civicrm_%'" | $MYSQLCMD | grep ^civicrm_ | xargs ) cd $CIVISOURCEDIR/sql diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php index 89a15791e1..5362bfefa3 100644 --- a/civicrm/civicrm-version.php +++ b/civicrm/civicrm-version.php @@ -1,7 +1,7 @@ <?php /** @deprecated */ function civicrmVersion( ) { - return array( 'version' => '5.28.4', + return array( 'version' => '5.29.0', 'cms' => 'Wordpress', 'revision' => '' ); } diff --git a/civicrm/composer.json b/civicrm/composer.json index 92f7969296..0a737c6dd9 100644 --- a/civicrm/composer.json +++ b/civicrm/composer.json @@ -44,7 +44,7 @@ "require": { "php": "~7.1", "cache/integration-tests": "~0.16.0", - "dompdf/dompdf" : "0.8.*", + "dompdf/dompdf" : "~0.8", "electrolinux/phpquery": "^0.9.6", "symfony/config": "~3.0 || ~4.4", "symfony/polyfill-iconv": "~1.0", @@ -77,7 +77,8 @@ "xkerman/restricted-unserialize": "~1.1", "typo3/phar-stream-wrapper": "^2 || ^3.0", "brick/money": "~0.4", - "ext-intl": "*" + "ext-intl": "*", + "pear/mail_mime": "~1.10" }, "scripts": { "post-install-cmd": [ @@ -253,6 +254,9 @@ "pear/mail": { "Apply CiviCRM Customisations for CRM-1367 and CRM-5946": "https://raw.githubusercontent.com/civicrm/civicrm-core/36319938a5bf26c1e7e2110a26a65db6a5979268/tools/scripts/composer/patches/pear-mail.patch" }, + "pear/mail_mime": { + "Apply patch for CRM-3133 wordwrap body to be 750 characters to apply with RFC 2821": "https://raw.githubusercontent.com/civicrm/civicrm-core/74e25f27bb3be32519657539afe8a285c6c99a08/tools/scripts/composer/patches/mail_mime_crm_3133.patch" + }, "pear/net_smtp": { "Add in CiviCRM custom error message for CRM-8744": "https://raw.githubusercontent.com/civicrm/civicrm-core/a6a0ff13d2a155ad962529595dceaef728116f96/tools/scripts/composer/patches/net-smtp-patch.patch" }, diff --git a/civicrm/composer.lock b/civicrm/composer.lock index e933416e7b..e39dd5c9d2 100644 --- a/civicrm/composer.lock +++ b/civicrm/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "76eb92be0bda933e6913e5cffd3ad672", + "content-hash": "1ff9c045fb03756148c0c66562aa61fd", "packages": [ { "name": "adrienrn/php-mimetyper", @@ -449,28 +449,28 @@ }, { "name": "dompdf/dompdf", - "version": "v0.8.3", + "version": "v0.8.5", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "75f13c700009be21a1965dc2c5b68a8708c22ba2" + "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/75f13c700009be21a1965dc2c5b68a8708c22ba2", - "reference": "75f13c700009be21a1965dc2c5b68a8708c22ba2", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6782abfc090b132134cd6cea0ec6d76f0fce2c56", + "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "phenx/php-font-lib": "0.5.*", - "phenx/php-svg-lib": "0.3.*", - "php": ">=5.4.0" + "phenx/php-font-lib": "^0.5.1", + "phenx/php-svg-lib": "^0.3.3", + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.5|^6.5", - "squizlabs/php_codesniffer": "2.*" + "phpunit/phpunit": "^7.5", + "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "ext-gd": "Needed to process images", @@ -511,7 +511,7 @@ ], "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", "homepage": "https://github.com/dompdf/dompdf", - "time": "2018-12-14T02:40:31+00:00" + "time": "2020-02-20T03:52:51+00:00" }, { "name": "electrolinux/phpquery", @@ -1114,6 +1114,57 @@ "homepage": "http://pear.php.net/package/Mail", "time": "2017-04-11T17:27:29+00:00" }, + { + "name": "pear/mail_mime", + "version": "1.10.9", + "source": { + "type": "git", + "url": "https://github.com/pear/Mail_Mime.git", + "reference": "1e7ae4e5258b6c0d385a8e76add567934245d38d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pear/Mail_Mime/zipball/1e7ae4e5258b6c0d385a8e76add567934245d38d", + "reference": "1e7ae4e5258b6c0d385a8e76add567934245d38d", + "shasum": "" + }, + "require": { + "pear/pear-core-minimal": "*" + }, + "type": "library", + "extra": { + "patches_applied": { + "Apply patch for CRM-3133 wordwrap body to be 750 characters to apply with RFC 2821": "https://raw.githubusercontent.com/civicrm/civicrm-core/74e25f27bb3be32519657539afe8a285c6c99a08/tools/scripts/composer/patches/mail_mime_crm_3133.patch" + } + }, + "autoload": { + "psr-0": { + "Mail": "./" + } + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "./" + ], + "license": [ + "BSD-3-clause" + ], + "authors": [ + { + "name": "Cipriano Groenendal", + "email": "cipri@php.net", + "role": "Lead" + }, + { + "name": "Aleksander Machniak", + "email": "alec@php.net", + "role": "Lead" + } + ], + "description": "Mail_Mime provides classes to create MIME messages", + "homepage": "http://pear.php.net/package/Mail_Mime", + "time": "2020-06-27T08:35:27+00:00" + }, { "name": "pear/net_smtp", "version": "1.9.0", @@ -1377,20 +1428,20 @@ }, { "name": "phenx/php-font-lib", - "version": "0.5", + "version": "0.5.2", "source": { "type": "git", "url": "https://github.com/PhenX/php-font-lib.git", - "reference": "19ad2bebc35be028fcc0221025fcbf3d436a3962" + "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/19ad2bebc35be028fcc0221025fcbf3d436a3962", - "reference": "19ad2bebc35be028fcc0221025fcbf3d436a3962", + "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8", + "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8", "shasum": "" }, "require-dev": { - "phpunit/phpunit": "^4.8" + "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7" }, "type": "library", "autoload": { @@ -1410,7 +1461,7 @@ ], "description": "A library to read, parse, export and make subsets of different types of font files.", "homepage": "https://github.com/PhenX/php-font-lib", - "time": "2017-02-11T10:58:43+00:00" + "time": "2020-03-08T15:31:32+00:00" }, { "name": "phenx/php-svg-lib", @@ -2005,16 +2056,16 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.3.0", + "version": "8.3.1", "source": { "type": "git", "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f" + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796", + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796", "shasum": "" }, "require": { @@ -2046,7 +2097,7 @@ "parser", "stylesheet" ], - "time": "2019-02-22T07:42:52+00:00" + "time": "2020-06-01T09:10:00+00:00" }, { "name": "symfony/config", @@ -2294,20 +2345,6 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], "time": "2020-04-12T16:54:01+00:00" }, { @@ -2415,20 +2452,6 @@ "polyfill", "portable" ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], "time": "2020-05-12T16:14:59+00:00" }, { diff --git a/civicrm/css/api4-explorer.css b/civicrm/css/api4-explorer.css index 18dc679278..fa28828058 100644 --- a/civicrm/css/api4-explorer.css +++ b/civicrm/css/api4-explorer.css @@ -54,10 +54,6 @@ margin-bottom: 10px; } -#bootstrap-theme.api4-explorer-page .api4-input.form-inline > label { - margin-right: 12px; -} - #bootstrap-theme.api4-explorer-page .explorer-help-panel .panel-body { word-break: break-word; } diff --git a/civicrm/css/civicrm.css b/civicrm/css/civicrm.css index 9ff756f3f3..a3264938b0 100644 --- a/civicrm/css/civicrm.css +++ b/civicrm/css/civicrm.css @@ -1850,9 +1850,6 @@ input.crm-form-entityref { .crm-container .crm-button-type-back { margin-left: 20px; } -.crm-container .crm-button-type-cancel input { - color: #E6E6DC!important; -} .crm-container a.button, .crm-container a.button:link, @@ -1862,7 +1859,7 @@ input.crm-form-entityref { .crm-container input[type=button], .crm-container .crm-button { text-shadow: 0 1px 0 black; - background: #70716B url(../i/crm-button-bg.gif) repeat-x top left; + background: #696969; color: #FFF; font-size: 13px; font-weight: normal; @@ -1919,7 +1916,7 @@ input.crm-form-entityref { .crm-container .ui-dialog-buttonset .ui-button:focus, .crm-container a.button:hover, .crm-container a.button:focus { - background-position: 0 -25px; + background: #3e3e3e; } .crm-container .crm-button-disabled, @@ -1930,7 +1927,6 @@ input.crm-form-entityref { .crm-container .crm-button[disabled] { opacity: .6; cursor: default; - background-position: top left; } .crm-container .crm-button-disabled input[disabled] { @@ -2137,11 +2133,6 @@ a.crm-i:hover { padding-left: 1.6em; } -.crm-container .inform-icon { - background-position: -16px -144px; - margin-right: 5px; -} - .crm-container a.helpicon { opacity: .8; } @@ -3202,7 +3193,7 @@ span.crm-select-item-color { right: 0; } .crm-container .ui-dialog-titlebar.ui-widget-header { - background: url("../i/crm-button-bg.gif") repeat-x scroll left center #70716B; + background: #5D677B; color: #F5F6F1; } .crm-container .ui-dialog-title { diff --git a/civicrm/CRM/Event/Cart/BAO/Cart.php b/civicrm/ext/eventcart/CRM/Event/Cart/BAO/Cart.php similarity index 100% rename from civicrm/CRM/Event/Cart/BAO/Cart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/BAO/Cart.php diff --git a/civicrm/CRM/Event/Cart/BAO/Conference.php b/civicrm/ext/eventcart/CRM/Event/Cart/BAO/Conference.php similarity index 100% rename from civicrm/CRM/Event/Cart/BAO/Conference.php rename to civicrm/ext/eventcart/CRM/Event/Cart/BAO/Conference.php diff --git a/civicrm/CRM/Event/Cart/BAO/EventInCart.php b/civicrm/ext/eventcart/CRM/Event/Cart/BAO/EventInCart.php similarity index 100% rename from civicrm/CRM/Event/Cart/BAO/EventInCart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/BAO/EventInCart.php diff --git a/civicrm/CRM/Event/Cart/BAO/MerParticipant.php b/civicrm/ext/eventcart/CRM/Event/Cart/BAO/MerParticipant.php similarity index 100% rename from civicrm/CRM/Event/Cart/BAO/MerParticipant.php rename to civicrm/ext/eventcart/CRM/Event/Cart/BAO/MerParticipant.php diff --git a/civicrm/CRM/Event/Cart/Controller/Checkout.php b/civicrm/ext/eventcart/CRM/Event/Cart/Controller/Checkout.php similarity index 100% rename from civicrm/CRM/Event/Cart/Controller/Checkout.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Controller/Checkout.php diff --git a/civicrm/CRM/Event/Cart/Form/Cart.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Cart.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/Cart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/Cart.php diff --git a/civicrm/CRM/Event/Cart/Form/Checkout/ConferenceEvents.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ConferenceEvents.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/Checkout/ConferenceEvents.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ConferenceEvents.php diff --git a/civicrm/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.php diff --git a/civicrm/CRM/Event/Cart/Form/Checkout/Payment.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/Checkout/Payment.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php diff --git a/civicrm/CRM/Event/Cart/Form/Checkout/ThankYou.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ThankYou.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/Checkout/ThankYou.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/ThankYou.php diff --git a/civicrm/CRM/Event/Cart/Form/MerParticipant.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php similarity index 100% rename from civicrm/CRM/Event/Cart/Form/MerParticipant.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Form/MerParticipant.php diff --git a/civicrm/CRM/Event/Cart/Page/AddToCart.php b/civicrm/ext/eventcart/CRM/Event/Cart/Page/AddToCart.php similarity index 100% rename from civicrm/CRM/Event/Cart/Page/AddToCart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Page/AddToCart.php diff --git a/civicrm/CRM/Event/Cart/Page/CheckoutAJAX.php b/civicrm/ext/eventcart/CRM/Event/Cart/Page/CheckoutAJAX.php similarity index 100% rename from civicrm/CRM/Event/Cart/Page/CheckoutAJAX.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Page/CheckoutAJAX.php diff --git a/civicrm/CRM/Event/Cart/Page/RemoveFromCart.php b/civicrm/ext/eventcart/CRM/Event/Cart/Page/RemoveFromCart.php similarity index 100% rename from civicrm/CRM/Event/Cart/Page/RemoveFromCart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Page/RemoveFromCart.php diff --git a/civicrm/CRM/Event/Cart/Page/ViewCart.php b/civicrm/ext/eventcart/CRM/Event/Cart/Page/ViewCart.php similarity index 100% rename from civicrm/CRM/Event/Cart/Page/ViewCart.php rename to civicrm/ext/eventcart/CRM/Event/Cart/Page/ViewCart.php diff --git a/civicrm/ext/eventcart/CRM/Event/Cart/PageCallback.php b/civicrm/ext/eventcart/CRM/Event/Cart/PageCallback.php new file mode 100644 index 0000000000..d6d1e7d98d --- /dev/null +++ b/civicrm/ext/eventcart/CRM/Event/Cart/PageCallback.php @@ -0,0 +1,41 @@ +<?php + +class CRM_Event_Cart_PageCallback { + + /** + * @param \Civi\Core\Event\GenericHookEvent $event + */ + public static function run($event) { + switch ($event->page->getVar('_name')) { + case 'CRM_Event_Page_EventInfo': + self::alterEventInfo($event); + break; + + case 'CRM_Event_Page_List': + self::alterEventList($event); + } + } + + public static function alterEventInfo($event) { + $eventID = $event->page->getVar('_id'); + $link = CRM_Event_Cart_BAO_EventInCart::get_registration_link($eventID); + $registerText = $link['label']; + + $action = CRM_Utils_Request::retrieve('action', 'String', $event->page, FALSE); + $action_query = ($action === CRM_Core_Action::PREVIEW) ? "&action=$action" : ''; + + $url = CRM_Utils_System::url($link['path'], $link['query'] . $action_query, FALSE, NULL, TRUE, TRUE); + + $event->page->assign('registerText', $registerText); + $event->page->assign('registerURL', $url); + $event->page->assign('eventCartEnabled', TRUE); + } + + public static function alterEventList($event) { + if ((bool) Civi::settings()->get('enable_cart')) { + CRM_Core_Region::instance('crm-event-list-pre') + ->add(['template' => 'CRM/Event/Cart/eventlistpre.tpl']); + } + } + +} diff --git a/civicrm/CRM/Event/Cart/StateMachine/Checkout.php b/civicrm/ext/eventcart/CRM/Event/Cart/StateMachine/Checkout.php similarity index 100% rename from civicrm/CRM/Event/Cart/StateMachine/Checkout.php rename to civicrm/ext/eventcart/CRM/Event/Cart/StateMachine/Checkout.php diff --git a/civicrm/ext/eventcart/LICENSE.txt b/civicrm/ext/eventcart/LICENSE.txt new file mode 100644 index 0000000000..912a621bb1 --- /dev/null +++ b/civicrm/ext/eventcart/LICENSE.txt @@ -0,0 +1,667 @@ +Package: eventcart +Copyright (C) 2020, CiviCRM <info@civicrm.org> +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/eventcart/README.md b/civicrm/ext/eventcart/README.md new file mode 100644 index 0000000000..55be91b801 --- /dev/null +++ b/civicrm/ext/eventcart/README.md @@ -0,0 +1,11 @@ +# eventcart + +This extracts most of the event cart functionality into an extension. + +The extension is licensed under [AGPL-3.0](LICENSE.txt). + +## Remaining work + +1. Move CRM_Event_Cart_DAO_Cart and CRM_Event_Cart_DAO_EventInCart from CiviCRM core (see https://github.com/civicrm/civicrm-core/pull/17339 for details). +1. There are various places in CiviCRM which still check the setting `enable_cart`. These should be moved to this extension. +1. The "Conference Slots" functionality is only enabled if Event Cart is enabled so that should be moved into this extension too. diff --git a/civicrm/ext/eventcart/eventcart.civix.php b/civicrm/ext/eventcart/eventcart.civix.php new file mode 100644 index 0000000000..482ac73bf6 --- /dev/null +++ b/civicrm/ext/eventcart/eventcart.civix.php @@ -0,0 +1,477 @@ +<?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_Event_Cart_ExtensionUtil { + const SHORT_NAME = "eventcart"; + const LONG_NAME = "eventcart"; + const CLASS_PREFIX = "CRM_Event_Cart"; + + /** + * 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 = []) { + 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) { + 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_Event_Cart_ExtensionUtil as E; + +/** + * (Delegated) Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config + */ +function _eventcart_civix_civicrm_config(&$config = NULL) { + static $configured = FALSE; + if ($configured) { + return; + } + $configured = TRUE; + + $template =& CRM_Core_Smarty::singleton(); + + $extRoot = dirname(__FILE__) . DIRECTORY_SEPARATOR; + $extDir = $extRoot . 'templates'; + + if (is_array($template->template_dir)) { + array_unshift($template->template_dir, $extDir); + } + else { + $template->template_dir = [$extDir, $template->template_dir]; + } + + $include_path = $extRoot . PATH_SEPARATOR . get_include_path(); + set_include_path($include_path); +} + +/** + * (Delegated) Implements hook_civicrm_xmlMenu(). + * + * @param $files array(string) + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_xmlMenu + */ +function _eventcart_civix_civicrm_xmlMenu(&$files) { + foreach (_eventcart_civix_glob(__DIR__ . '/xml/Menu/*.xml') as $file) { + $files[] = $file; + } +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function _eventcart_civix_civicrm_install() { + _eventcart_civix_civicrm_config(); + if ($upgrader = _eventcart_civix_upgrader()) { + $upgrader->onInstall(); + } +} + +/** + * Implements hook_civicrm_postInstall(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_postInstall + */ +function _eventcart_civix_civicrm_postInstall() { + _eventcart_civix_civicrm_config(); + if ($upgrader = _eventcart_civix_upgrader()) { + if (is_callable([$upgrader, 'onPostInstall'])) { + $upgrader->onPostInstall(); + } + } +} + +/** + * Implements hook_civicrm_uninstall(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_uninstall + */ +function _eventcart_civix_civicrm_uninstall() { + _eventcart_civix_civicrm_config(); + if ($upgrader = _eventcart_civix_upgrader()) { + $upgrader->onUninstall(); + } +} + +/** + * (Delegated) Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function _eventcart_civix_civicrm_enable() { + _eventcart_civix_civicrm_config(); + if ($upgrader = _eventcart_civix_upgrader()) { + if (is_callable([$upgrader, 'onEnable'])) { + $upgrader->onEnable(); + } + } +} + +/** + * (Delegated) Implements hook_civicrm_disable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_disable + * @return mixed + */ +function _eventcart_civix_civicrm_disable() { + _eventcart_civix_civicrm_config(); + if ($upgrader = _eventcart_civix_upgrader()) { + if (is_callable([$upgrader, 'onDisable'])) { + $upgrader->onDisable(); + } + } +} + +/** + * (Delegated) Implements hook_civicrm_upgrade(). + * + * @param $op string, the type of operation being performed; 'check' or 'enqueue' + * @param $queue CRM_Queue_Queue, (for 'enqueue') the modifiable list of pending up upgrade tasks + * + * @return mixed + * based on op. for 'check', returns array(boolean) (TRUE if upgrades are pending) + * for 'enqueue', returns void + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade + */ +function _eventcart_civix_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) { + if ($upgrader = _eventcart_civix_upgrader()) { + return $upgrader->onUpgrade($op, $queue); + } +} + +/** + * @return CRM_Event_Cart_Upgrader + */ +function _eventcart_civix_upgrader() { + if (!file_exists(__DIR__ . '/CRM/Event/Cart/Upgrader.php')) { + return NULL; + } + else { + return CRM_Event_Cart_Upgrader_Base::instance(); + } +} + +/** + * Search directory tree for files which match a glob pattern. + * + * Note: Dot-directories (like "..", ".git", or ".svn") will be ignored. + * Note: In Civi 4.3+, delegate to CRM_Utils_File::findFiles() + * + * @param string $dir base dir + * @param string $pattern , glob pattern, eg "*.txt" + * + * @return array + */ +function _eventcart_civix_find_files($dir, $pattern) { + if (is_callable(['CRM_Utils_File', 'findFiles'])) { + return CRM_Utils_File::findFiles($dir, $pattern); + } + + $todos = [$dir]; + $result = []; + while (!empty($todos)) { + $subdir = array_shift($todos); + foreach (_eventcart_civix_glob("$subdir/$pattern") as $match) { + if (!is_dir($match)) { + $result[] = $match; + } + } + if ($dh = opendir($subdir)) { + while (FALSE !== ($entry = readdir($dh))) { + $path = $subdir . DIRECTORY_SEPARATOR . $entry; + if ($entry[0] == '.') { + } + elseif (is_dir($path)) { + $todos[] = $path; + } + } + closedir($dh); + } + } + return $result; +} + +/** + * (Delegated) Implements hook_civicrm_managed(). + * + * Find any *.mgd.php files, merge their content, and return. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_managed + */ +function _eventcart_civix_civicrm_managed(&$entities) { + $mgdFiles = _eventcart_civix_find_files(__DIR__, '*.mgd.php'); + sort($mgdFiles); + foreach ($mgdFiles as $file) { + $es = include $file; + foreach ($es as $e) { + if (empty($e['module'])) { + $e['module'] = E::LONG_NAME; + } + if (empty($e['params']['version'])) { + $e['params']['version'] = '3'; + } + $entities[] = $e; + } + } +} + +/** + * (Delegated) Implements hook_civicrm_caseTypes(). + * + * Find any and return any files matching "xml/case/*.xml" + * + * Note: This hook only runs in CiviCRM 4.4+. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_caseTypes + */ +function _eventcart_civix_civicrm_caseTypes(&$caseTypes) { + if (!is_dir(__DIR__ . '/xml/case')) { + return; + } + + foreach (_eventcart_civix_glob(__DIR__ . '/xml/case/*.xml') as $file) { + $name = preg_replace('/\.xml$/', '', basename($file)); + if ($name != CRM_Case_XMLProcessor::mungeCaseType($name)) { + $errorMessage = sprintf("Case-type file name is malformed (%s vs %s)", $name, CRM_Case_XMLProcessor::mungeCaseType($name)); + throw new CRM_Core_Exception($errorMessage); + } + $caseTypes[$name] = [ + 'module' => E::LONG_NAME, + 'name' => $name, + 'file' => $file, + ]; + } +} + +/** + * (Delegated) Implements hook_civicrm_angularModules(). + * + * Find any and return any files matching "ang/*.ang.php" + * + * Note: This hook only runs in CiviCRM 4.5+. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_angularModules + */ +function _eventcart_civix_civicrm_angularModules(&$angularModules) { + if (!is_dir(__DIR__ . '/ang')) { + return; + } + + $files = _eventcart_civix_glob(__DIR__ . '/ang/*.ang.php'); + foreach ($files as $file) { + $name = preg_replace(':\.ang\.php$:', '', basename($file)); + $module = include $file; + if (empty($module['ext'])) { + $module['ext'] = E::LONG_NAME; + } + $angularModules[$name] = $module; + } +} + +/** + * (Delegated) Implements hook_civicrm_themes(). + * + * Find any and return any files matching "*.theme.php" + */ +function _eventcart_civix_civicrm_themes(&$themes) { + $files = _eventcart_civix_glob(__DIR__ . '/*.theme.php'); + foreach ($files as $file) { + $themeMeta = include $file; + if (empty($themeMeta['name'])) { + $themeMeta['name'] = preg_replace(':\.theme\.php$:', '', basename($file)); + } + if (empty($themeMeta['ext'])) { + $themeMeta['ext'] = E::LONG_NAME; + } + $themes[$themeMeta['name']] = $themeMeta; + } +} + +/** + * Glob wrapper which is guaranteed to return an array. + * + * The documentation for glob() says, "On some systems it is impossible to + * distinguish between empty match and an error." Anecdotally, the return + * result for an empty match is sometimes array() and sometimes FALSE. + * This wrapper provides consistency. + * + * @link http://php.net/glob + * @param string $pattern + * + * @return array + */ +function _eventcart_civix_glob($pattern) { + $result = glob($pattern); + return is_array($result) ? $result : []; +} + +/** + * 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 _eventcart_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' => CRM_Utils_Array::value('name', $item), + '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 = _eventcart_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item); + } + } + return $found; + } +} + +/** + * (Delegated) Implements hook_civicrm_navigationMenu(). + */ +function _eventcart_civix_navigationMenu(&$nodes) { + if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) { + _eventcart_civix_fixNavigationMenu($nodes); + } +} + +/** + * Given a navigation menu, generate navIDs for any items which are + * missing them. + */ +function _eventcart_civix_fixNavigationMenu(&$nodes) { + $maxNavID = 1; + array_walk_recursive($nodes, function($item, $key) use (&$maxNavID) { + if ($key === 'navID') { + $maxNavID = max($maxNavID, $item); + } + }); + _eventcart_civix_fixNavigationMenuItems($nodes, $maxNavID, NULL); +} + +function _eventcart_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'])) { + _eventcart_civix_fixNavigationMenuItems($nodes[$origKey]['child'], $maxNavID, $nodes[$origKey]['attributes']['navID']); + } + } +} + +/** + * (Delegated) Implements hook_civicrm_alterSettingsFolders(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterSettingsFolders + */ +function _eventcart_civix_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { + $settingsDir = __DIR__ . DIRECTORY_SEPARATOR . 'settings'; + if (!in_array($settingsDir, $metaDataFolders) && is_dir($settingsDir)) { + $metaDataFolders[] = $settingsDir; + } +} + +/** + * (Delegated) Implements hook_civicrm_entityTypes(). + * + * Find any *.entityType.php files, merge their content, and return. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes + */ +function _eventcart_civix_civicrm_entityTypes(&$entityTypes) { + $entityTypes = array_merge($entityTypes, []); +} diff --git a/civicrm/ext/eventcart/eventcart.php b/civicrm/ext/eventcart/eventcart.php new file mode 100644 index 0000000000..9fac71ca98 --- /dev/null +++ b/civicrm/ext/eventcart/eventcart.php @@ -0,0 +1,133 @@ +<?php + +require_once 'eventcart.civix.php'; +// phpcs:disable +use CRM_Eventcart_ExtensionUtil as E; +// phpcs:enable + +/** + * Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config/ + */ +function eventcart_civicrm_config(&$config) { + if (isset(Civi::$statics[__FUNCTION__])) { + return; + } + Civi::$statics[__FUNCTION__] = 1; + // Since as a hidden extension it's always enabled, until this is a "real" extension you can turn off we need to check the legacy setting. + if ((bool) Civi::settings()->get('enable_cart')) { + Civi::dispatcher()->addListener('hook_civicrm_pageRun', 'CRM_Event_Cart_PageCallback::run'); + } + + _eventcart_civix_civicrm_config($config); +} + +/** + * Implements hook_civicrm_xmlMenu(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_xmlMenu + */ +function eventcart_civicrm_xmlMenu(&$files) { + _eventcart_civix_civicrm_xmlMenu($files); +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function eventcart_civicrm_install() { + _eventcart_civix_civicrm_install(); +} + +/** + * Implements hook_civicrm_postInstall(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_postInstall + */ +function eventcart_civicrm_postInstall() { + _eventcart_civix_civicrm_postInstall(); +} + +/** + * Implements hook_civicrm_uninstall(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_uninstall + */ +function eventcart_civicrm_uninstall() { + _eventcart_civix_civicrm_uninstall(); +} + +/** + * Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function eventcart_civicrm_enable() { + _eventcart_civix_civicrm_enable(); +} + +/** + * Implements hook_civicrm_disable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_disable + */ +function eventcart_civicrm_disable() { + _eventcart_civix_civicrm_disable(); +} + +/** + * Implements hook_civicrm_upgrade(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade + */ +function eventcart_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) { + return _eventcart_civix_civicrm_upgrade($op, $queue); +} + +/** + * Implements hook_civicrm_managed(). + * + * Generate a list of entities to create/deactivate/delete when this module + * is installed, disabled, uninstalled. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_managed + */ +function eventcart_civicrm_managed(&$entities) { + _eventcart_civix_civicrm_managed($entities); +} + +/** + * Implements hook_civicrm_angularModules(). + * + * Generate a list of Angular modules. + * + * Note: This hook only runs in CiviCRM 4.5+. It may + * use features only available in v4.6+. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_angularModules + */ +function eventcart_civicrm_angularModules(&$angularModules) { + _eventcart_civix_civicrm_angularModules($angularModules); +} + +/** + * Implements hook_civicrm_alterSettingsFolders(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterSettingsFolders + */ +function eventcart_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { + _eventcart_civix_civicrm_alterSettingsFolders($metaDataFolders); +} + +/** + * Implements hook_civicrm_entityTypes(). + * + * Declare entity types provided by this module. + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes + */ +function eventcart_civicrm_entityTypes(&$entityTypes) { + _eventcart_civix_civicrm_entityTypes($entityTypes); +} diff --git a/civicrm/ext/eventcart/images/screenshot.png b/civicrm/ext/eventcart/images/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6765b696fa03249ac2cd605d5f0e4aa000ad6dad GIT binary patch literal 11775 zcmcI~2{hF0+y56OQnV|Q9{obnC}fhoMT;zDD-6k&WsqSQyC_cyNfKkwBV?D!GRBt5 zGGmLzHfHR`GDD0#%X^QW=l8znfBxq^@Be?!drqgOx$n8}>%Q*KwcOX|dS;+^ZTC)* zoe%`=zH$A^9SGtfLJ-$;K3?!m^9hqK2s%@D<BFD%PcMt6`w%yQ(YUX5JVNvMo`$~+ zq_-9EZQB_F+ZhsaNjOCF_{*!u_wae{<rCwx-OG2N{PY3tkV}8;X^_~%x2@>9eVB`m ze0z+oc|*}j>nVYr)!O=^lmDV7CVZoA&aAMLlfE~UxJ+GV44YZJ@XT$!mYBA*L~lj) zU!JMn4BQT+S+^Z82wHdcnxR)ZA(43^qM|u-7s2=QMf=d#u3gKaP$-jW(dyZW&GzS2 zRLlc@e%^724}yY|<<-?KpA#;#gaVfb!zq1z7R9BdrefmarerdiQtaF%dl;;OIQ^~n z0Mf8R_l@p3?{Q;C9~+xABR_F9Un5%Cqc0NN5Y%@5P7>nYy;EH9tJDK-QwY-K0zZb4 zAA`ZjSzlkDTwyat{bwjSre|cqa`6)1x)0bHCh5i~ed{%BWhPTbMr;=bK8H>YM{DGl zl$Pd9OgIYch9J%Q^zp<Y=jVl|>N2FULrgL~a2%=L*wApjxUkSb?AS3Aa5l=&&;v}9 z5Lh>u{aV8LdETk=jO9cL<~_RGI6~u5+V_V6L(R?2bLHaTz>r%`WsL}CMOPsAGGpPJ z1;HcT%*-r1S<TPnCdqq-p7%67d_5J+EBl#-zl>YvM&0#saLDuzQI_>zU-i<s0EX00 zFkEN)2<)tkhEo|;Q}tq#Bf>bIuS+xi1(p>)x77kx=Zkmz$pt}&cj1nCt9b71zcO}| zR)N7&M0}A*){o9Mu*kgkK{(!BVLu%IC_X-(oZF}8pZ_jmV@&(^Wz9vZ1+JAP;&8~_ z>)?J<H$O3I?D3dCl-<XRs(SowSkKh^eKPl{ft7?)R$!>`83VZNrK-V&g@sN_mh7KS zazJ}C%00x1MHV%_o#^-hd+4OVOG%S^FUti?50T_{fpKqaLV~02XybA!IhmyJBTwM` zxpUtW3tn$0*RE^_mpXpz#EBD>_Vznoo}NY=ZU3zx;*hiG<l;B-CA-f>?)PeBM=(tm zVEO<{Q6$m{g~A_@V)s|jkygVmw*%P+a-TGWhK43fUlCjwl5o%>78?ly!03A{q5+J& zzRuT0imJ_e2`#MFrl@Yi;j04w0J@`FCho|L@Bn}1c$A-BGGh<C3tX|b9qg!7MkKL$ zZkRI258VJn+H&gZ>PV`6FP<Qkuxe_D&>#8(FT|^r0obN?$^T$7UHD5I4RUgFDC6S~ zTZ61FudiJuqFH7uS{#u3`T21$-%5`Iio7sW@u{L>Evw>(KG7zecQE{Jf0obM@}m{4 zMKTUJfnazXuOX30On;88Gj!CXME5h=QrGX}(+Tv@<h+*3iXCF$w6c@WlqMd1s;;(@ z?49?EPJ5@dZq3+%l{BgBLja`@7-wW;WV2W-`O2}uFW~_BBQ^drmjk(cy<HDLP|XdF z%4=&cdHML<6%!MSi)VMI=7kng?R|X8Ub785Tjj2j)=n*%i-Pk})17_+tMRZ^p!7{l zOoUhpSudRwiPSD85bkAHu3T-L>IC{9uNzJ{)jg^@UFo-UwDkbGwQBqQM~^-l`Qmrq zHz)<?hG-`uy}P=)G$=k@<$Of9GgN5u3$5qa+3Vp%E-08BcS=6t2{xf@;X0*>RIF4x zO=v6$b`knOMLSS6t4mqH8^Y>=cKJ*A%c8|K^6ecQBJ~fVRpfA3JTmoILlSEnM-HDZ z8P^iYu6s5}q;BUPwA{54Az3-Oc;cBJlb5XR*_Gh%)M*J|JXwhMwXWW@kj9e7_V|0# zHMT^p60y7Bzyo&e;tzo}Qp6uVcu)&Or8&E}<hsDGkLxa1dQH8lTmYbc)H@PCIB4yB zg1H#wqS8<@=5pC*cIax)bgr`q1ntVuPP>hCb$uf<-Pvh^p@BuzW>y!b(qoLXD|<3t z@|to)T{V{}0a!oNVZm_>XU?24HqE#As8s73v{}UXNw7jgkOA{jH|un4Y%JwVxDZ+C zDY#LO3$$_|fSb6D|J=wkn-{gP1+ImoH(LkiSA%_z;gtYb*X5sF4K=fl@4D^<H>Ml; z87}B9ba8&<edDd}hrDail1vdb8KwuXa=p1wT+0eQiGAJ(hz&C>IqBf%QF6+G=uvWp zs3(lZ=qNW;5sBv0heu!f2@=hPfy?T4o>NTp(1kIFVEcfFS#u@d(r;`?^)0o_$hj+O zEzIBnpkV+bH4(=(H|qv?h9O{=FHKKQI_0pbOlEG28wCA)dgo)F)cd1iV#W~>5t8ru zh@PRo8C`U`rI)|IO9t2`>GRjGS2*7K&bQ`-zFXHm!fIg%neb86Lv;%MTJ*8FFY_E7 zZkR|Xrlb@ks|T26q}c8x0q36=S*RnouJ6xi!Fjx;Z+->WQ9e66+dh*4+X?(*$6ihA zc+2?93q8p(n;%i#^hIDVyjry`tG%kg86I8IsTOTUJVC4)2=<hUSG1A^={!)ITYI(S zXC*Fp08-K8Ao|F0Df4WG*AzFTDM#)cak<?RRR?@xkyj76>0Q!ainyS0y9u4x4aEt= z*r^`Hl$)C(04kSsF2XZMeX}bk#*<oFfcU|#uhkV7^uEn!-bfLddR$0$o{6$EnTZgV zyQ#BCEp;QR@Ip1|Ieu;LH*c-BjcbJ#lFb|c*jPjfIZ~$kfS!fV7*oTA#NWucW)lnz z4Li46$FpM&vAnJk?eSS@z)^_B;hs!L#iGiTqp|7=6L1^k9`wZBVsBU1{7>!$4sq$l z#9}UJK=r-bt<`#4hr#J-*NM|Mh&^b6K~H<qn`w*$$%Ns8F=1_o29VihURoyuY}z%n zwZKOCJ{~tCmK5=%L$RL%^<z&v^FTHCqDbjJLm!TUyXsdxp4Z=@dfetk`#w4VUt6Fo zOoe;D>y+dN8ylNWUh8=JSyfdFv(K3){ms5)z6&n-2|=M`ADuA7s$San4@z*jPBDD5 znd4pVpMC$?2)#CHb~ZAzJ(yH}oY`*LE~9>s?#t(6)|kodf&|vIR6a8>P~#<D3k$We zx6kkjmviu!l9bF9fP%#Wz%Mi$;O&(Jbz)3@ON%Q2Zj_OWA%T*!-C9`hw)ZHxf?j^w zYHZm|6bhbxjW1;xUMNDff}Ltl|6q4UMMsnGKVo-6Q2Ax_fSr^jdc@Ab5<PC0nOv;Z z{RE!7C^@bU(6g<7+rTz!pb7VnMZ++anIaxJmD!>b`scW<g;hUuL-Q_!?|NKhRKc=W z-Ef4U&8j>F2x5%)7CTes<~*jZ_w@B8@&3g}bdS+fy4q0V0U-7h?QzB!E<o$<Zj(J= zEetcKO{?>er_f7BY+b>*Ezfk_a+F_KTVXo|1yz@$7*R67R6NrbwZ_cN&3O}epri-B zzU94iI;`tf&ndXFvLm?Ocfz(WS3pXWHE&<D0s=u61bqGdmj%%ty04wnR#&B??}>&X z+!_0TDUbAKPNQBq|79V1PdE%Qeqy4xFHrI%0*AZ71+CuBf8?>D)TK&TY&`!mS(1-< z7Lw02E!Bcj`$rNbyOaoZjm1%p2f_EL^4DDL?7kgUhEg3knc=92WS2Z4qp?^w|55Jl zTA0Dc^`@2<lV*GTTFhMpA`j#!dAp&uVvoF6&TlM;BfqDARN^DnWPxa$U0hsTv@R8N zp=h*6To6h%cWo;buP2?47`_X%E82)2bK&=0op)Rq`WE4Y!SuX24h`J-5vhdIedWAA zQVHA|>e2e@f(bqxhZAc)1_cY8Q&2F>SDW1XoFMrT2G$^m9y^vlO|PUn4Of5q^gdDp za?jV+)+U{=`~LklCvxVidF+0G)a-sD5W~g7VzGH#tSuvie4Hb-)4Y%$i;ImdOF2uW z(*qE9?>?jjG?Ot+y%6L;JCAmEH^@K96ydQJE^nWo_sp8>WH{YfFNT5W?4|M2LScLd zcP(uGMPH0={nw<a<`sJ1N6NXq5HHm+_E@`JPj7IcfZ8c<CvR_W9VtfNXUbJDM(*yu zn-Gq54gn!;Y{cF&znIHfc=eL~{FtEY^oTlU?tNd6F>8D9#_O{xAVIH1Zu#Z&7cV+- zj`4YAI9{c4W0^~Hlh#M4Qc);?fy1}>2`p;jzQ;&sZm9kZ#95D4DB&GE_4FV?0a#wD zU-}<*+S?tk^Vh=Mc^9M~_Z<nGACI}c4QjIkS%_I0FB}e!6xn7i?9<^igH!P);fDIo zwMd^B=7$D6Uc7i=Bp@I_0l}1$|5>&G*ARvn5F3e_4c#F`5*z8ek(``d0)qzJ&K_qz zCX%3<9&gj;)>c#f6!l`_&M-s`<_~BbIXpZ}SzYzbajR>_!t(?GNbIsywAB3;b1D2D zK0e*OP|XqB5i9LYJBixa*+<3Y<xUdZd_>LC8;mgk0EG=`;Jo~lI`HvJv%~fFw9rC< z`Nv78NxAeUW-}%YIAiRu9l<iwn*#Wr#H2GM!nul)5|a{`x#%8r$g%Y_x{K2K?H%`1 z-MBLwjS_W7CEXMC3H-ZiVQt~m;(dY0F7DKRyITgdrgOugiYTCraT`Lc8XVr`^z~y= z(O-LaKmjLCtQ-;+CjVLWVv_t;JyKMwdpqxoy#mmDgb`BVxtwvI5lS@jsTa6W1J-(B zk`+lgBguh8$VhT4Qi443MlK2-a%oHQkLA*q<zKaO@Zmm*n@w^i;bvc)BVnYbxHaL8 z4=Z1ElUv@e<&nnKrho!!5@y~ok_=l^M*9q>-!P88F6J62LjRG@_!=vvPvXq(Kyia3 zdcQ*H1Amg<i)9<MXmPpUme)O=#s<MzF~q#oH9-;rORbQUKN$HKPN-eDAkBF1S+;GU z;$)NLkCN7B`s2k)KpszvmTRL)Mry>fj7;E{XC#{U;?<O?uR9daQQzPLdU_!Mp;N+= z6Lbr!x9@ZC0{bEQ7_U=ynWO3`ugq~KH==k{7Uio@u(Z5f=AukKYURvRlM_{EYippr zLs^6e+-Db=kPV)p`+S!c7qfeM?loV5q!rb+g&|VqvMc$^`78LV_-jO7K)aG-hnYa# zk$4_3reUjtQoAT&j>C`MD;7?z*1dJ>wdB*Rp|M-j^Yfp)xHwbNF~*5^(-Vvn&C&_R zi5B-np;k7Kw@tVmiC>S}Y-)Pp#Z?%(L$iDPDnr(^-2K?mqp$H66D<iaTqkcTky3f& zm_}eOoCh4E;%2!=hKd771Uj>Hq%@ZZ;HgktRMb9Mt^tQ<J_qQ99AaR&te+X}*lFCv zkmH6#&1g0w%OPiOb+sHb2~_zL)?TUL;A_ZgKGNUVcw>s&U8~(fMmHl_Bgm39GZQ~% z=y=Hv39L1hN7!OwZsM^(DjqIUT3V`euq#p<2w4Ux3)`O-({zY>InsUo*WOpE_MGVh zkG-5@UmGPGhVc5}j&_tW8M#JCadrQ@Q4#MGRnDIub=w6F;0Z$WupD^io4%;#<h@zy zJQaG$a<E~HOueT3;u(hf{&Li<uibF4(fEU&_AOhvAhkC3VD7J+N}#kn>m`s6Q|jup zF;RUqTApiP*`V7Fu=4yXqcg7kRfv)Uj0YYV3_+2w4;`W<K*Xpwor^xY)G!^dDn54j z&+3Cf2W`WXH?>>RM*S@^Pagq`?zV>4D|_Ug;DW0lJo?f^S499SA%+Wh)OcyLdhiaM zSLU^r5B$J6JfW4_1k@r+WEgkrySv|3bAk2FO1B4if|n&F;M4bq086b;X+Q%(n}I7n z%2hEoN9|*HYGF0d)K`le*1}~U3b8gvl#^pby_NH0Y($f(z%YaL6Oxl*#&iosb)TQ9 zMnO*ysnlB6D65gf+OF+l01(4Rlrsh~NB5x5aMw7O^4O2r+Ut+`bG#z`p-L*S5DDg3 z+0}qGiA}ZEVPOETn&8GmpE>!iwwwb^LYm3VIEbFA^UWH_cty>s^WB<3x<zWrXyS`* z%5G{R#T)xQK@1?ixVq+!Ubw0zkF>Y1L!IMjOZmuD%)PjUyU|UBO|m+`9d{LCMITQ5 zmE=mosM6w4xwR-cFwgznJ`aU2^6%h-OPzV<CwB=DYp`K7kU@8%Zba#h%&NxwByZn? z=7Je#pX=#d8)=O77)(Tl!-hie%OkP+q}e|^(9a+aNFtN)`_Uozo9CBw%PTp!w-BMe z4bf}q*$!X<R<ITZ|AIeZ2mn0r2Yj{l@%LyL;`iwP>%?L{pcJqfxOzS!IM3Ec*wF9Y zwiW|h{oZwJx8J*N?FK&nv)k`)|Mw?u?eqJ<|GD)O&e8uF`TcQALBFN`FS`0i>i?p) z|LH_bdjI;gH^sY(jhoD|T6bFT4qEaat>%159uEB^2r2}2Vu34UtK?tx8)U1EA#dF+ znZTQxBo{av;q>s~ht)NPhE>3@X#WSg-%RCPe`~-rYIHVbbB)1+KNPgVP9ZNP)%Ycg z!<~KU;`_Ihxd)ATCZw@e7}i(4`Kx;K*66H$(5hk9oaFqNo%IsSYsf}o>*{J@a<f*O z3sxupOfUEAt=?n=Z8)qfE%gU&rVpOAEIofgPd$*;TRc~_GLu6O0ts#f?OrJt1G#_5 zYH3#QSGoRE4rCPqB3Jw|MBpH;P5+Ue3QCw$`@VXpFMSHqZ}`=}x!$k;gc9~GWo<-? z5??i+K36q6Di=gpjow_2?xe0wRc|=Ql;-qj2>!_0x5?JnL`}^uX9lfiwi-pVF@f`G z;>K3XwZdj@OK}DM>DzuTmgZ=f9&7EoUCrvMS}dMis@`1BRHq9CEq~DusPGrkSf9|> z*pIGWXStd7Z*DB<P*e&s%h%;L=j2YVC0kSnEr$m^45+9GxP%mo3i?Iue>3T`aV7;W z$2eE*R}0%hbork%sYVhVFJ!El;+wPLIyM<y$a{KxO;oA-lFao<(`p$9fA(F=7OFoR z+b{cBflJP9DbFn+N0E5bODQ^NHo_`5a1oypcO17Tss67@Uu@029kZJ&DVwLnRo-2Q zE{4A(F-Y}f#?7*gnaz!v$$E{ANBkdpl5sDwr8%MA+-~Y_Rg3-zOs?RhS9kL-$**Ix z{`6JWTxC}ZJVh#cl(p{@``rE(cGbO(T%=6Z%Hf68u~AcF+}__79*<(~ORDL%bkzNM zt2_6Lv)`zKHEeLkcKZcug^+x~RMsCwi<L701*#j^{<Sd$S}NOTqcZ=`l4`moPWPMA z!5&|-`#M1{Fps|xQ;|PC#=3Jv{m3HQ=drh6x2}(Ce|b_Xb_sk4Qk(Mhh(L?@;`&yR zqWCReaGYuRDy-IJqWRG9VqR5NMkm$V@OHCJmQ(VfM19`2SZd&YK|_8u7F+6Tr?uk2 z_KHo%wCH^jR34PNX^BuZlXd42vfzM}CL>_#`HZ6j8gI8UQe7OBd@(8WroUOSs+;MK zpnrpnc;)f^l9f(sY|zh8@z?d6tp1I>ij8oMwZXU<t8iL}$oWb=I_&dLFE>-uNH)Ra z(BcRqyHu#l8m?8c?vLaK7)bQQrHi6|Eg8WVeS1{t{%S0%*uv9)yEkEJsyC`?!EQ5| z<WjP$9`l680r$y2t8V#qH)H7Wm56|n<y`Ah!CB=^>~j~HMz5cFp&vLu-|~t9sjkcO z*&o&UGnKz2#_w0RDv4D7Ovs0-WtozS)h?o_lG|NY*VJ3cCFdB(jpcfcKqvD2z0*WY zbu2z?iWjjU{T?4i^UsqKHNo}OB^4h;Kl$y-m-c<~-l>j!<AV5{+gezat!4a}*~n`w zrC~`^oU~QQGJ4K_G_};4&|5ytZe&p~*flEF1kGMZPxPD1od&*Ssm>bSo-5<<QXg%a z-@3CjT5;dM*M8hOCfU#__UHbFB4cH9>{PZJH{#O$b@d)@iyhy?I=2lO1?@MPy1!CX zXdZoxgz52*st73I&OB#KuMXfv(hOv*6;m<;<_-L=E&$cgA0vV)d{t0>9|B_wvC+4q z;Uq@3hUKsEcdJPDx};0y>>Fj`me~at`e}v0hdp|+aLVqaJI~aR5vc5VezyhcSU^Wx z_Qq0JeFyhLG3osm_V1ip(!cAfVQwCT;Qzo%k&?@N&})fnW;o6G_gTiZbQy$`EA;JI zB|#Pb(fl90y2kwrFex47vMGydCkMuy-8OwD7X6EECbRmz!l!(j_Wo`59$I%IZygSx z9HGa?^~R#?`~PLjK;cRPRzJ0(ItwObix$c%&DQfL&$I=G{||!dzvJNlHKKrE^S=~& zKq&t2xBfl46%YSC@xPDN)?IAL-?6?H2Esr12*Ur?$Nw`E_&o}~{r{Sne--*CO#c&% zHM_m`3T^H7dspz0HW4bM{y}|p{DkmqO~S~^1MmQ4OM&4wT)t(c8Lc{~+Q?CTWn};F zVTllLz)_S3u9q_m!Ff|vnwpx7!26t1FCJu}1`<h&+}^rf6^%+`eX{13mM}RDaO33x zzt9VV;o`ngTgg}_hpzhc$p}>Qjl;vkDKw(DM)B_3-P`G7O|DT|BOgIUAiL7p*_i^K zP7IEfrsDr8;+L(sS$3uF9KRBp{r&rQCoiw!i|XpIL2op=B+R<?8_-w{;rchFI4U4m z?lkINT_VMuE<eX3+#ab+O<;_TWmi^K?(;V_G0ArB%Etuq0u9miTId<px3bHWWBrEf zA{D9&KyLeB-k?OWpr9cBOiT1JHJO>26%n9BpFAUj_QR69A9!#jK0W7nl${}dt$X`L zWe0exF`LaEC2)8>3ZNC}lZ2gM{x}NM57YPF%08(q8ZXf1tt=|V<i_nHvLvOXbflJj zg-PJa#_$3&58LwN9hdKTtLdJ2s~Dyn9esw$EqoA7{UsnPEBjh-)+;E)Giu47b9p=x zk%&pm8^`5Wb#e@~);rzXVHcUn%%j!C#S6VHvp@x!;@3m7Xf)cLZ@R--im8)77~o+- z-bF0-j4E(=oSC-Pm@vSZ7M(3O-(F(}YH=3hIPZfX?I=IbECC$YslQ)qdi0+>KtmU8 zot&~kRn8STsKXN<v9<;tFi7jtH~GyIbP&E=TP7y`_rkeAMjTxFT3eRYd~a^f?!3cZ zbcpM2B1?C5ZbhL0Ua!&~qmJ@lSK~~BeOE`Hp!B&OCO-1_w}2hvvXpXgl>4Q88aLh% zquz>e?2Ff1n2`_M%~85ek4Jo-chBQ^c3ID>_&iJ}?*Q$e2QowX)z+LRE+5UUtmG&! zT`I|kRHwMx5*Sn$q~3U5ikq<?FyhoNaZfp14J1sAm1IP)-gDA-hX!c%X5B%G+CKR@ zX*M~JlYb|De4e8st?3O4YA_VJ!{Rh;Mxj*|)ttARGicBna0`D5CC=r0E$zEByUCD6 z>+O{(Fy|!cyq0y_>?{mmuZqsYY{GH{G-nzu*qj<ea|OHUqW*SJ*Qte_H4wf6Xav}w zP+!9~P^+NFN8o&O%wdmRym;KNaJ-oB9oko0&Xq79KHxt4wihep>f-WHoew<n+(<sp zEt*FDs`J?iIVHqafoHhLX;87s>;*1F)0_P5Cd@2Z6?3Q3XZ9~MV0^;oJ9&d+<(**c z4s5eMe^o+G^2%f<z<fx4Ohl~3`}fbW5pOIiMkMNbA@@U|h)$SX=#O#1EP8W9(;=P+ zn(EB+xc!PVx9o&a4Tibrrb3QyxB;i607ShA6BZ*ZH(b3A(@rYpPTfBr2!VRor4fk} z!lFk+Uq?h+gxwW}F6x>Ffypfhn54(;S!NI3BPJ#y(!vuESg<dRnBR3supi!8QG^0G zD8k!@t5-oS67r0QiHUKtwtjc<;>B!1AtCZsL9!P1vmN<>@UY?AWtno=QD_|9(b17k z!is(pI;JX3v6=$jQWNmDw_$=FF)tMegolMNXnyEB)^BM#4pph_i(<5h?LNS%Sm|yo zx3;#HYO9P4)jZq*tzJ!(nVz10qt}us^SDr8S1`!R<%QruYg@cNpsSn606_C;z;hJW zjjCbhzLu#1xdUHq6(~9MH1I|FCZ?u2py&#!JvHlRT$He*Pu*PCR?Yc<&3y631J84_ zhDN2H_Qo4O;yUcfPgsCuhV_Tt4-y9w`Hm#rDUt4Cyynm|P)(+t3d(gG<EeXzvI7z2 zdSI)72YWSkhb1Q6;ZI8V7jyxuSV-DE)F-WHlhb#hg!7h+Z*b9qF7!LOX&)M`d*pf? zYXV^B9s;Vt*-xH4nf&>)uwhG&H7kv~M|=eXTxGGBg@ACMHOhs=)#tAXL$C=+_V@2G z*e0+Vu2;`%lynf#1o8KQ6Y%nXh(dMD{sE2+j}s($rM>Vp>6GSy%CEVq$^lleHCgR6 z{5|NoFyAdCv?Xr5@uR7|d<l`x+qfam>b{rso*u`@H5~^B&OQC?+SKR^1WtUL#TOP= zDm>j8<!a<$Khu$^p99L6qC7xryOP6tuyD6GppLo!pE@Qq9$h_42w}OYf?~aacfd@4 zb$|JkiiXBaz8utDxt)*LhPAi1Ct;F3-I|)z85rokdlHk(sb0$M0E0yNP&u54LaZEq z#nWjURFsYh2&g>&=nwN`V?R)BPi}jtNMcs{@>+3VSkvg_7NszHw}Z`S&EbG(SdUZp z9hb@K&hYR9rEwWT*0?=y3LvK}9XvdWj-p7Bb4UFWIi+AwPah@qP@8__Y+kVIO!ne} z=!;_<5<_{zs9&}9qqH+9(^zzuq&0!WHO<qw<(3*X3bbvg9|DxY=-mTARtyLsb|#i0 zH*NicpYDS+Ge_?l(SFL;rz=)~(rnAsS{M5vO6Z`%X*mUU?rzBayIz!h(%ZL%oV~G) zOrnc^i_&P*SF%fmi&cpdRAWb;&GK|>@wyphoSuW9I<N;l7}tIu)aFZ#9(DN0?EV0% zoo#t4Z63KYY+n@X)v!szurr|ILiBM@8eb4W^NPozI@)b0HGbr+ag;e|8i+?YDnCsx z<=oYWtgI|2KR+U6^sK@(XQ3$yeH(2XeVf&~_8zpgrmYF$*IIdnOQ0Ck7G0DMQsVu- zcuLQ|_<=qzXZ2<{TW6PLjp^y@1N!#<@ev=Bzss1MG(?e51PGP39r{c_5avHg?&b>C zdNYRg;^OdjNgaUyx+H|`xd);Ef`96a3gF@f+(7e+j$sSP1w1~TZob&@siPOnidW7% za@l^AL!X%fpObzMR5wArc+?Bfnga2%Atu-WDA+qb<9AWhKG|_3VP_$SI}^wq5=j+= z+LRr~?nOUrI%0J~WH0(%=vFba-9<(>v)x}t_XD^DO-4cW;?fc#=nv*&l?c#`lpf$f ztE+p8^Wr1^EOF2V#a!GGK)lLNBouLKsR{BNCmvBKP!OAqr0qUSv7kX*P`RPn?zA44 zk__t?QBh`q-}o@9cYmy6^yu}L(6?+}sLdQ`Q1>$aoAMysJXyCvv)k@IqB^iLX{jN0 zsHH{EYq)MVAm!SIufA|`)>HT{EN5v1nwadUcyJiI`^iv>DrSg(52R@g>dL<6Ep8)6 zuT>VGWT?0xfowsJ@{<iBwXlG$PXnCdTA$>|*wOF|KxBtb*($VWWt{@*(wS-aIlG0h zq^`Coz)Yc!C?tG;#j=rPzXhA5pB_D`-C{GMhiGvaNdkNTr`sblQzs7I_403T4VdI~ zGA1I4*nl7;eQChFNFo=4#(;_muThXkkqGqF^7d&>z{^_zqP3)?gd|o5=5m<UV0Q1h zGC=sRR&}5Ivrwm=f}8iqmx${#^2Fr<THjFqucGPgvESo-KObj$<V#9Ql2)D>Jwi#s z88QHwknl-Eb@}r4*Fs?k`n~D5fToFeB@trZu=h_CaY))SKqm1M`78OW`9Jf2;gG<l zBI4q1Y8X}D`48n7c7_z_uqrRQ5Q}UEO*82iVp%Oci!R78guv%4>LtL!f)+Dl>Lt)_ za>Vg|oVJPAXUX09xe<lrVDV+Et;R6#uO1G!4hloTmidcx0xI(bjKp{1+H4qt_tv!M zXp||9q-GwU2Si=B1#X36>*eQX9&2nJ9~h@%#=2bI;eV3~`Yu)x+IBEm*-v#2V|K#| zpcz1O`u?b%$@Ig~7L#fBd!Rpo_xq0@MpL~$z;hRW1PurMl{>u)K=X)Oz6Ie9r<a4{ zwTZ|6?X^K)1n8DX)p(!M3{XUPs;7bVM3-=y8U{W^p$LYcRu2s@+lM9bz6$uIiH=MP zi(0x+wiiv<HIeG_1~eKa6}%X#z_9HpE=uI$#ope;iIcT3;oIMuW&4`GHoNroVMw_a zAf`YJH&4$`W(dTYE;@fT9*;k{%N(?2Y{qgyn*9fHCMG5aaNv5peqAY%rmBM`C>kos z9k^<*q_bVjowsXY4yuP!Bn=lnFR!d%b_{btsRB8b1e4bDel%&NuDMR_?$NM>gai{Z z`-M>Z+))Vfz5I)>&7wn;ONJ>}0kRAErq%KB4;NKc6`Md)iSOO~QQ<>}NW}s9v#7ij z=RnX1A^76&{umVv@bm!T0BW=9S_AGPf8`17a~V07#QOYMYYNsHciI$KJ~aQ)g55<_ zj@`~2JAnSB-9iW1+o#2ue$W;OItyx`i#?eRzk78m)04l%wYW@VS5#EwDu8YtgSRyj z%*CXSA3uVuL!mUWIU~Uw{6y#E>3=EMTDr+!DZ0WT{jE!#1GO9+9CXT><;Fp)$`&OG znz0mgo?d@*0c0SHi;Fkw3@+?P%Y6g=iloI67qtdCo02nBU(ni=bnV=kBPTwap408F zJnMM27#I+Tvx?(20wx7ra06LjUNe7X&m{Bh`$E6zN%UZAiber&W;#T7V+(Nc694jh z|IC;MEp4p-5*gS@oRJJo0bGrFXsVQy6bG&DjzxGyn}`=m2hsiA|Jj-N=5s4X8Bp~A zS?0ThgyO|AckI}4veZ_}3H^R2F;H3kgfVqh@J2QPq;nim#-E90^*l?I#dDZxVKghi zjTO*}>Dz@aSpv->;}k?T$fMKSvAFD>^u(Qog({lu6c>OEPosQd;z|kt*SK&`mf4ax zNw8CELPPPT_0lJdaYEcw&^91~l^w$gUDz3GSA;K4ks|Lh>efxwE!3^iZPOh%j|IJL zhZTFiC*tyY2FpKwyp68dNmRT04Y{dhzXzqUah%hRmvOudxNaG~mgeRK-QrTWFRp&i z)O9mgE3W{*@H79K8c4aPJ}>~h3a5Ua2OUj8hebtCt31FfC=J3@?EGez9jw9-NRTx^ zEvD!?dvg?;RP{S?pU$eQQWHZP7U%7d%uG~i-~sjkT^#+VD~t2ojueH5(e(NdWqwPp zj&V44nU0PQ1we3(8}uD|-bJ@9-aIyyP)LpN2Br+HQW|k3fbXxJ#!l}Inj5*HKMh!1 zXxw|^-Rr6w6DdYZ1|*x>=~L}P7xVI`rmY-9Xc4q(@I&4kaNYWe#6s*@KkyXT=epmc zW3s%9aS_O~>#wBYO79s<<t{9{Qkj9p5qS=x3qZ-BM9Kl{VP@t)ox3Urgn@7|fjXQf z!4C=Qw<hX;fP!JayNGUjML<mdSuiXtw;n%v$zfIAtGo^K&KjQ1{FI>%SpK-8j`Cii zV-V=58R2sV!>fE#Pr_&%YeXXBWL(V*8D1K;0Qa9e8^^wi2@n?w2R|k2orE8xxjxhY zmZ<5SRo^nrV&SOWJt!gK{{8#Yzj<<A`Pj~mKp(Jk($!Vv^a8`|O3n*^JsEa}DftAv z2S6COG3a;>2O|d>fLRsDmI@R@Z(`~7UTwETh5l1a;M?QBeDxZt!m!5(tOC&O7yLFU z$%S>CPN%DP2oAvoi7XtR(}!a{r03ZJbP$Z5-~kP~ZIip>;;lMGC!4I{;h|ekf#!FE zM~|6&19%^hw<YOkS1kNUF$(IJW{#b8FOhc0@et&9m@0Y###2Q(y}7qGF^kN5%Kg|Z z%>+SDr|#x={YN*N{}`xvl&C-IUigHAZS(ZIU^r_rP=-17(hb4eGT0w$cOM*O9DQm) zuvq+Oq^a0Xuwt;~+1KB-9FR27RR*c;MFVzWbA3N&p48?JJ%4|t45-&1{1>`$Rqsmv IrTdTn0|#irRsaA1 literal 0 HcmV?d00001 diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml new file mode 100644 index 0000000000..6c1bf45ba5 --- /dev/null +++ b/civicrm/ext/eventcart/info.xml @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<extension key="eventcart" type="module"> + <file>eventcart</file> + <name>Event Cart</name> + <description>This feature allows users to register for more than one event at a time. When enabled, users will add event(s) to a "cart" and then pay for them all at once. Enabling this setting will affect online registration for all active events.</description> + <license>AGPL-3.0</license> + <maintainer> + <author>CiviCRM</author> + <email>info@civicrm.org</email> + </maintainer> + <urls> + <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core/tree/master/ext/eventcart</url> + <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> + </urls> + <releaseDate>2020-08-03</releaseDate> + <version>1.0</version> + <tags> + <tag>mgmt:hidden</tag> + </tags> + <develStage>stable</develStage> + <compatibility> + <ver>5.29</ver> + </compatibility> + <classloader> + <psr4 prefix="Civi\" path="Civi"/> + </classloader> + <civix> + <namespace>CRM/Event/Cart</namespace> + </civix> +</extension> diff --git a/civicrm/ext/eventcart/settings/Eventcart.setting.php b/civicrm/ext/eventcart/settings/Eventcart.setting.php new file mode 100644 index 0000000000..d52892d25c --- /dev/null +++ b/civicrm/ext/eventcart/settings/Eventcart.setting.php @@ -0,0 +1,38 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ + +/** + * Settings metadata file + */ +return [ + 'enable_cart' => [ + 'name' => 'enable_cart', + 'group_name' => 'Event Preferences', + 'settings_pages' => ['event' => ['weight' => 10]], + 'group' => 'event', + 'type' => 'Boolean', + 'quick_form_type' => 'CheckBox', + 'default' => '0', + 'add' => '4.1', + 'title' => ts('Use Shopping Cart Style Event Registration'), + 'is_domain' => 1, + 'is_contact' => 0, + 'description' => ts('This feature allows users to register for more than one event at a time. When enabled, users will add event(s) to a "cart" and then pay for them all at once. Enabling this setting will affect online registration for all active events. The code is an alpha state, and you will potentially need to have developer resources to debug and fix sections of the codebase while testing and deploying it'), + 'help_text' => '', + 'documentation_link' => ['page' => 'CiviEvent Cart Checkout', 'resource' => 'wiki'], + ], +]; diff --git a/civicrm/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Form/Checkout/Participant.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Participant.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/Checkout/Participant.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Participant.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Form/viewCartLink.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/viewCartLink.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Form/viewCartLink.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/viewCartLink.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Page/AddToCart.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Page/AddToCart.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Page/AddToCart.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Page/AddToCart.tpl diff --git a/civicrm/templates/CRM/Event/Cart/Page/ViewCart.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Page/ViewCart.tpl similarity index 100% rename from civicrm/templates/CRM/Event/Cart/Page/ViewCart.tpl rename to civicrm/ext/eventcart/templates/CRM/Event/Cart/Page/ViewCart.tpl diff --git a/civicrm/ext/eventcart/templates/CRM/Event/Cart/eventlistpre.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/eventlistpre.tpl new file mode 100644 index 0000000000..a212dc09c2 --- /dev/null +++ b/civicrm/ext/eventcart/templates/CRM/Event/Cart/eventlistpre.tpl @@ -0,0 +1,2 @@ +<a href="{crmURL p='civicrm/event/view_cart'}" class="button crm-shoppingcart-button"><i class="crm-i fa-shopping-cart" aria-hidden="true"></i> {ts}View Cart{/ts}</a> +<a href="{crmURL p='civicrm/event/cart_checkout'}" class="button crm-check-out-button"><i class="crm-i fa-credit-card" aria-hidden="true"></i> {ts}Checkout{/ts}</a> diff --git a/civicrm/ext/eventcart/xml/Menu/Eventcart.xml b/civicrm/ext/eventcart/xml/Menu/Eventcart.xml new file mode 100644 index 0000000000..838014501a --- /dev/null +++ b/civicrm/ext/eventcart/xml/Menu/Eventcart.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> + +<menu> + <item> + <path>civicrm/ajax/event/add_participant_to_cart</path> + <page_callback>CRM_Event_Cart_Page_CheckoutAJAX::add_participant_to_cart</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + </item> + <item> + <path>civicrm/ajax/event/remove_participant_from_cart</path> + <page_callback>CRM_Event_Cart_Page_CheckoutAJAX::remove_participant_from_cart</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + </item> + <item> + <path>civicrm/event/add_to_cart</path> + <title>Add Event To Cart</title> + <page_callback>CRM_Event_Cart_Page_AddToCart</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + <is_ssl>false</is_ssl> + </item> + <item> + <path>civicrm/event/cart_checkout</path> + <title>Cart Checkout</title> + <page_callback>CRM_Event_Cart_Controller_Checkout</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + <is_ssl>true</is_ssl> + </item> + <item> + <path>civicrm/event/remove_from_cart</path> + <title>Remove From Cart</title> + <page_callback>CRM_Event_Cart_Page_RemoveFromCart</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + <is_ssl>false</is_ssl> + </item> + <item> + <path>civicrm/event/view_cart</path> + <title>View Cart</title> + <page_callback>CRM_Event_Cart_Page_ViewCart</page_callback> + <access_callback>1</access_callback> + <is_public>true</is_public> + <is_ssl>false</is_ssl> + </item> +</menu> diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml index f89dbd026e..7317ae5027 100644 --- a/civicrm/ext/flexmailer/info.xml +++ b/civicrm/ext/flexmailer/info.xml @@ -14,16 +14,16 @@ <url desc="Support">http://civicrm.stackexchange.com/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2019-11-26</releaseDate> - <version>1.1.1</version> - <develStage>alpha</develStage> + <releaseDate>2020-08-05</releaseDate> + <version>1.1.2</version> + <develStage>stable</develStage> <comments> FlexMailer is an email delivery engine which replaces the internal guts of CiviMail. It is a drop-in replacement which enables *other* extensions to provide richer email features. </comments> <compatibility> - <ver>5.13</ver> + <ver>5.29</ver> </compatibility> <classloader> <psr4 prefix="Civi\FlexMailer\" path="src"/> diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ConcurrentDeliveryTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ConcurrentDeliveryTest.php index 1daeab0640..b680471225 100644 --- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ConcurrentDeliveryTest.php +++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ConcurrentDeliveryTest.php @@ -12,7 +12,7 @@ namespace Civi\FlexMailer; /** * - * @copyright CiviCRM LLC (c) 2004-2017 + * @copyright CiviCRM LLC https://civicrm.org/licensing * @version $Id: Job.php 30879 2010-11-22 15:45:55Z shot $ * */ diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/FlexMailerSystemTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/FlexMailerSystemTest.php index 876d0637e8..d592787e8d 100644 --- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/FlexMailerSystemTest.php +++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/FlexMailerSystemTest.php @@ -13,7 +13,7 @@ namespace Civi\FlexMailer; /** * Test that content produced by CiviMail looks the way it's expected. * - * @copyright CiviCRM LLC (c) 2004-2017 + * @copyright CiviCRM LLC https://civicrm.org/licensing * @version $Id: Job.php 30879 2010-11-22 15:45:55Z shot $ * */ diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php index 4df278002a..8a0eba8635 100644 --- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php +++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/Listener/SimpleFilterTest.php @@ -12,7 +12,7 @@ namespace Civi\FlexMailer\Listener; /** * - * @copyright CiviCRM LLC (c) 2004-2017 + * @copyright CiviCRM LLC https://civicrm.org/licensing * @version $Id: Job.php 30879 2010-11-22 15:45:55Z shot $ * */ diff --git a/civicrm/ext/sequentialcreditnotes/sequentialcreditnotes.php b/civicrm/ext/sequentialcreditnotes/sequentialcreditnotes.php index 67bfb11ede..4e84a7676c 100644 --- a/civicrm/ext/sequentialcreditnotes/sequentialcreditnotes.php +++ b/civicrm/ext/sequentialcreditnotes/sequentialcreditnotes.php @@ -32,7 +32,7 @@ function sequentialcreditnotes_civicrm_pre($op, $objectName, $id, &$params) { $reversalStatuses = ['Cancelled', 'Chargeback', 'Refunded']; if (empty($params['creditnote_id']) && in_array(CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $params['contribution_status_id']), $reversalStatuses, TRUE)) { if ($id) { - $existing = Contribution::get()->setCheckPermissions(FALSE)->addWhere('id', '=', (int) $id)->setSelect(['creditnote_id'])->execute()->first(); + $existing = Contribution::get(FALSE)->addWhere('id', '=', (int) $id)->setSelect(['creditnote_id'])->execute()->first(); if ($existing['creditnote_id']) { // Since we have it adding it makes is clearer. $params['creditnote_id'] = $existing['creditnote_id']; diff --git a/civicrm/extern/authorizeIPN.php b/civicrm/extern/authorizeIPN.php index f552926fd4..a972cabc1c 100644 --- a/civicrm/extern/authorizeIPN.php +++ b/civicrm/extern/authorizeIPN.php @@ -12,7 +12,6 @@ /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ if (defined('PANTHEON_ENVIRONMENT')) { diff --git a/civicrm/extern/ipn.php b/civicrm/extern/ipn.php index d658dafcec..5f5f6bef15 100644 --- a/civicrm/extern/ipn.php +++ b/civicrm/extern/ipn.php @@ -12,8 +12,6 @@ /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * * This script processes "Instant Payment Notifications" (IPNs). Modern * Payment Processors use the /civicrm/payment/ipn/123 endpoint instead (where * 123 is the payment processor ID), however a quirk in the way PayPal works diff --git a/civicrm/extern/pxIPN.php b/civicrm/extern/pxIPN.php deleted file mode 100644 index 6ef2a57bf8..0000000000 --- a/civicrm/extern/pxIPN.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -/* - * PxPay Functionality Copyright (C) 2008 Lucas Baker, - * Logistic Information Systems Limited (Logis) - * PxAccess Functionality Copyright (C) 2008 Eileen McNaughton - * Licensed to CiviCRM under the Academic Free License version 3.0. - * - * Grateful acknowledgements go to Donald Lobo for invaluable assistance - * in creating this payment processor module - */ - -if (defined('PANTHEON_ENVIRONMENT')) { - ini_set('session.save_handler', 'files'); -} -session_start(); - -require_once '../civicrm.config.php'; -require_once 'CRM/Core/Config.php'; - -CRM_Core_Config::singleton(); -$log = new CRM_Utils_SystemLogger(); -$log->alert('payment_notification processor_name=Payment_Express', $_REQUEST); -/* - * Get the password from the Payment Processor's table based on the DPS user id - * being passed back from the server - */ - -$query = " -SELECT url_site, password, user_name, signature -FROM civicrm_payment_processor -LEFT JOIN civicrm_payment_processor_type ON civicrm_payment_processor_type.id = civicrm_payment_processor.payment_processor_type_id -WHERE civicrm_payment_processor_type.name = 'Payment_Express' -AND user_name = %1 -"; -$params = array(1 => array($_GET['userid'], 'String')); - -$dpsSettings = CRM_Core_DAO::executeQuery($query, $params); -while ($dpsSettings->fetch()) { - $dpsUrl = $dpsSettings->url_site; - $dpsUser = $dpsSettings->user_name; - $dpsKey = $dpsSettings->password; - $dpsMacKey = $dpsSettings->signature; -} - -if ($dpsMacKey) { - $method = "pxaccess"; -} -else { - $method = "pxpay"; -} - -require_once 'CRM/Core/Payment/PaymentExpressIPN.php'; -$rawPostData = $_GET['result']; -CRM_Core_Payment_PaymentExpressIPN::main($method, $rawPostData, $dpsUrl, $dpsUser, $dpsKey, $dpsMacKey); diff --git a/civicrm/extern/widget.php b/civicrm/extern/widget.php index f6bdf073db..0c15e641e4 100644 --- a/civicrm/extern/widget.php +++ b/civicrm/extern/widget.php @@ -13,7 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ */ require_once '../civicrm.config.php'; require_once 'CRM/Core/Config.php'; diff --git a/civicrm/i/crm-button-bg.gif b/civicrm/i/crm-button-bg.gif deleted file mode 100644 index 6aa345ebd2ec75de81c8a841c81227e6eb488be4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1458 zcmdT@`%e=G96!pd7QtE}D4-UGljxklh#QLTO7Hrjw0GCL>-Bo=z1rSgd)L;@Wsa}} z<q;p4p*UxZi%7(oELlLaMK`wbazo=1%r=9`!Z1;1bc>Ie=$@?Xzu4!Ke1G~TpU>y} zusdz9HS$G3J@5<wD2ke!n^RRaK+|3XNu^TBWRm4Lk|b%GCP)&;@pwF*NF<n0i1hm< zSw>LQ?RGmHjz}bGv)M2VOQq70XoTklm&;{owuquA%QDAtbTEh$M6-1f9>mKq42Gd$ zHjE$$1VbKAE9S$UE*I*<G6GsMX|Y(C5F?0UcoA$esVTB7#bR`jrUC&7hEWV_^>`E| zo?#>!^>`6M5YnlXKM>$~j^nvlraLB40SYHcx4T7A6iJe7cAF2!F`q9QjbOOX<MBA0 z8S{~(mLw@Zf?^?tp@WPl2&$^lOwfxWKHQgx$5}S4$VxmBmn7MniH)M9KQjZr*X#8W zM2p+q>S;}Cnjl6(Y}jVAW0=oow?`w9j1`=~RW+fhYAT%yg%}LSGX@1w&@?R+3fY|w zQ4~~7MKF{Xc&oKp)ihoZaNNi9e3)frC8Ox|Q+^clX-Q3%B#QETQIz9_5X-_aY<D<3 z2m-?pieec;5X`b{I-T-(y#YGl!wEJVrWqz0jrs^Y8k0bag{Fg<G?Fa&DN0i{B_7w* zgeZuia5$YxLlDF;AsB+dW{W>Sv0+vaL@6f8aV09nTHGzJ78gMh1VQ?#Krk32NkSAO z(O4{%PJ1(_gLrYAaJihB1pxmaRQ{gxpV^ld>*7xU`UN0cU*YJR@79&RJZquM`pM2b z=Hjeq7U0qb8R4tJj$^OWTL=HRAR*J1O=S&^OXr8K9&Ku?86h^5EL-DhdpdSAd$0G@ zA@eR{w#A*VKbtJ6i%so2H{?F#%(Z1%2}5x^cX{6Wptz`Fc51%%*yQH(LZh+jXk~V_ zb(QYZ_Y0nNguYnwXm0yF-_yJ0m7?!z>z*U!D-Kg%zA+E<Wbf!Lx8Lo&W4*I1_*wh# zPY?R<W(`=@>swFs8!JcCz}U{)#YI2byQbT?yW^c34yfOM^=@#_!;qu>&l@F7))9{k z4k-2c(3{57V2Akz-2GM)@;Qj^`F4N*ZwIM+3p3+`qq*yE|4i*(aeDizjpQ^0M27xu z*FC?KzOtZSIIb7}dNire`DgfwegdhVSSIz>UM(me1#ab)PnjyaH+Px$>dShJd(9O+ zHF`rMSLIySH~_R9_~gvK=G>B6bWeHR#J#+V^mNVToTeu=@Y;U&u()<b@r8-QWw!^% z4P_0N&g3c8%cCX}t_<Z|bQod7wlf1Z1N!TL?F0TS2v+Ssnbu{+O|{onB}@aIx$9;E z%^x0{asINd;OR~HRL7PPu(G=W&C~6xy5BNrFw;FR0FYs9`4Q4ER=9*aq3BM&2pT?m zwGW&qd3y}hE%l$=dVh8G@%jBr>W{zo=yGX&q<*sW!nAqPXf@vYIDhPFU020ByZiEu zfk;-)Ch*>fYiZl_!`*8^j@y*$n|cgYtZaImQ?tX(_ZEKhgK*6R&kj$Sw)7?3`P?qV zTDaP*dpP=}YNDew+%-P-^+H=#dZljWIy$a9huQ4~1;*=TCFn?xtpSe!g}KGU$i`gR N)N8fm>_k9d+rL^b+}Z#D diff --git a/civicrm/install/civicrm.php b/civicrm/install/civicrm.php index c6fdaf10df..e688613403 100644 --- a/civicrm/install/civicrm.php +++ b/civicrm/install/civicrm.php @@ -12,8 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 - * $Id$ + * @copyright CiviCRM LLC https://civicrm.org/licensing * @param $filesDirectory */ function civicrm_setup($filesDirectory) { diff --git a/civicrm/js/Common.js b/civicrm/js/Common.js index e6b0dbc1aa..88c8c44b8e 100644 --- a/civicrm/js/Common.js +++ b/civicrm/js/Common.js @@ -883,7 +883,7 @@ if (!CRM.vars) CRM.vars = {}; var that = this; validator.settings = $.extend({}, validator.settings, CRM.validate._defaults, CRM.validate.params); // Call our custom validation handler. - $(validator.currentForm).on("invalid-form.validate", validator.settings.invalidHandler ); + $(validator.currentForm).on("invalid-form.validate", validator.settings.invalidHandler); // Call any post-initialization callbacks if (CRM.validate.functions && CRM.validate.functions.length) { $.each(CRM.validate.functions, function(i, func) { @@ -967,7 +967,7 @@ if (!CRM.vars) CRM.vars = {}; }); } }); - if ($("input:radio[name=radio_ts]").size() == 1) { + if ($("input:radio[name=radio_ts]").length == 1) { $("input:radio[name=radio_ts]").prop("checked", true); } $('.crm-select2:not(.select2-offscreen, .select2-container)', e.target).crmSelect2(); @@ -1116,7 +1116,7 @@ if (!CRM.vars) CRM.vars = {}; } }; /** - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Notification+Reference + * @see https://docs.civicrm.org/dev/en/latest/framework/ui/#notifications-and-confirmations */ CRM.status = function(options, deferred) { // For simple usage without async operations you can pass in a string. 2nd param is optional string 'error' if this is not a success msg. @@ -1180,7 +1180,7 @@ if (!CRM.vars) CRM.vars = {}; }; /** - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Notification+Reference + * @see https://docs.civicrm.org/dev/en/latest/framework/ui/#notifications-and-confirmations */ CRM.alert = function (text, title, type, options) { type = type || 'alert'; @@ -1228,7 +1228,7 @@ if (!CRM.vars) CRM.vars = {}; }; /** - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Notification+Reference + * @see https://docs.civicrm.org/dev/en/latest/framework/ui/#notifications-and-confirmations */ CRM.confirm = function (options) { var dialog, url, msg, buttons = [], settings = { @@ -1306,7 +1306,7 @@ if (!CRM.vars) CRM.vars = {}; }; /** - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Notification+Reference + * @see https://docs.civicrm.org/dev/en/latest/framework/ui/#notifications-and-confirmations */ $.fn.crmError = function (text, title, options) { title = title || ''; @@ -1615,7 +1615,11 @@ if (!CRM.vars) CRM.vars = {}; return Math.round(n / scale) * scale; }; - // Create a js Date object from a unix timestamp or a yyyy-mm-dd string + /** + * Create a js Date object from a unix timestamp or a yyyy-mm-dd string + * @param input + * @returns {Date} + */ CRM.utils.makeDate = function(input) { switch (typeof input) { case 'object': @@ -1624,10 +1628,16 @@ if (!CRM.vars) CRM.vars = {}; case 'string': // convert iso format with or without dashes - if (input.indexOf('-') > 0) { - return $.datepicker.parseDate('yy-mm-dd', input.substr(0, 10)); + input = input.replace(/[- :]/g, ''); + var output = $.datepicker.parseDate('yymmdd', input.substr(0, 8)); + if (input.length === 14) { + output.setHours( + parseInt(input.substr(8, 2), 10), + parseInt(input.substr(10, 2), 10), + parseInt(input.substr(12, 2), 10) + ); } - return $.datepicker.parseDate('yymmdd', input.substr(0, 8)); + return output; case 'number': // convert unix timestamp @@ -1636,10 +1646,39 @@ if (!CRM.vars) CRM.vars = {}; throw 'Invalid input passed to CRM.utils.makeDate'; }; - // Format a date for output to the user - // Input may be a js Date object, a unix timestamp or a yyyy-mm-dd string - CRM.utils.formatDate = function(input, outputFormat) { - return input ? $.datepicker.formatDate(outputFormat || CRM.config.dateInputFormat, CRM.utils.makeDate(input)) : ''; + /** + * Format a date (and optionally time) for output to the user + * + * @param {string|int|Date} input + * Input may be a js Date object, a unix timestamp or a 'yyyy-mm-dd' string + * @param {string|null} dateFormat + * A string like 'yy-mm-dd' or null to use the system default + * @param {int|bool} timeFormat + * Leave empty to omit time from the output (default) + * Or pass 12, 24, or true to use the system default for 12/24hr format + * @returns {string} + */ + CRM.utils.formatDate = function(input, dateFormat, timeFormat) { + if (!input) { + return ''; + } + var date = CRM.utils.makeDate(input), + output = $.datepicker.formatDate(dateFormat || CRM.config.dateInputFormat, date); + if (timeFormat) { + var hour = date.getHours(), + min = date.getMinutes(), + suf = ''; + if (timeFormat === 12 || (timeFormat === true && !CRM.config.timeIs24Hr)) { + suf = ' ' + (hour < 12 ? ts('AM') : ts('PM')); + if (hour === 0 || hour > 12) { + hour = Math.abs(hour - 12); + } + } else if (hour < 10) { + hour = '0' + hour; + } + output += ' ' + hour + ':' + (min < 10 ? '0' : '') + min + suf; + } + return output; }; // Used to set appropriate text color for a given background diff --git a/civicrm/js/crm.ajax.js b/civicrm/js/crm.ajax.js index 7c73711311..9a3c3f1ce5 100644 --- a/civicrm/js/crm.ajax.js +++ b/civicrm/js/crm.ajax.js @@ -1,7 +1,7 @@ // https://civicrm.org/licensing /** - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/AJAX+Interface - * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Ajax+Pages+and+Forms + * @see https://docs.civicrm.org/dev/en/latest/api/interfaces/#ajax + * @see https://docs.civicrm.org/dev/en/latest/framework/ajax/ */ (function($, CRM, _, undefined) { /** diff --git a/civicrm/js/jquery/jquery.crmEditable.js b/civicrm/js/jquery/jquery.crmEditable.js index 7d0da65ba1..293686ed81 100644 --- a/civicrm/js/jquery/jquery.crmEditable.js +++ b/civicrm/js/jquery/jquery.crmEditable.js @@ -37,7 +37,7 @@ }; /** - * @see http://wiki.civicrm.org/confluence/display/CRMDOC/Structure+convention+for+automagic+edit+in+place + * @see https://docs.civicrm.org/dev/en/latest/framework/ui/#in-place-field-editing */ $.fn.crmEditable = function(options) { function checkable() { diff --git a/civicrm/js/view/crm.designer.js b/civicrm/js/view/crm.designer.js index b00a2964f1..58b0446ecb 100644 --- a/civicrm/js/view/crm.designer.js +++ b/civicrm/js/view/crm.designer.js @@ -2,7 +2,7 @@ if (!CRM.Designer) CRM.Designer = {}; /** - * When rendering a template with Marionette.ItemView, the list of variables is determined by + * When rendering a template with Backbone.Marionette.ItemView, the list of variables is determined by * serializeData(). The normal behavior is to map each property of this.model to a template * variable. * @@ -14,7 +14,7 @@ * @return {*} */ var extendedSerializeData = function() { - var result = Marionette.ItemView.prototype.serializeData.apply(this); + var result = Backbone.Marionette.ItemView.prototype.serializeData.apply(this); result._view = this; result._model = this.model; result._collection = this.collection; diff --git a/civicrm/packages/Net/Curl.php b/civicrm/packages/Net/Curl.php deleted file mode 100644 index 0037b4a195..0000000000 --- a/civicrm/packages/Net/Curl.php +++ /dev/null @@ -1,876 +0,0 @@ -<?php - -/** - * An Object Oriented interface to PHP's cURL extension - * - * PHP version 5.1.0+ - * - * Copyright (c) 2007, The PEAR Group - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - Neither the name of the The PEAR Group nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category Net - * @package Net_Curl - * @author David Costa <gurugeek@php.net> - * @author Sterling Hughes <sterling@php.net> - * @author Joe Stump <joe@joestump.net> - * @author Philippe Jausions <jausions@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Revision: 1.15 $ - * @link http://pear.php.net/package/Net_Curl - */ - -/** - * Include PEAR package for error handling - */ -require_once 'PEAR.php'; - -/** - * Object-oriented implementation of the Curl extension - * - * @category Net - * @package Net_Curl - * @author David Costa <gurugeek@php.net> - * @author Sterling Hughes <sterling@php.net> - * @author Joe Stump <joe@joestump.net> - * @author Philippe Jausions <jausions@php.net> - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @link http://pear.php.net/package/Net_Curl - */ -class Net_Curl -{ - // {{{ Public Properties - /** - * The URL for cURL to work with - * - * @var string $url - * @access public - */ - var $url; - - /** - * The Username for standard HTTP Authentication - * - * @var string $username - * @access public - */ - var $username = ''; - - /** - * The Password for standard HTTP Authentication - * - * @var string $password - * @access public - */ - var $password = ''; - - /** - * The SSL version for the transfer - * - * @var integer $sslVersion - * @access public - */ - var $sslVersion; - - /** - * The filename of the SSL certificate - * - * @var string $sslCert - * @access public - */ - var $sslCert; - - /** - * The password corresponding to the certificate - * in the $sslCert property - * - * @var string $sslCertPasswd - * @access public - */ - var $sslCertPasswd; - - /** - * User Agent string when making an HTTP request - * - * @var string $userAgent - * @access public - */ - var $userAgent; - - /** - * Whether or not to include the header in the results - * of the CURL transfer - * - * @var boolean $header - */ - var $header = false; - - /** - * Whether or not to output debug information while executing a - * curl transfer - * - * @var boolean $verbose - * @access public - */ - var $verbose = false; - - /** - * Whether or not to display a progress meter for the current transfer - * - * @var boolean $progress - * @access public - */ - var $progress = false; - - /** - * Whether or not to suppress error messages - * - * @var boolean $mute - * @access public - */ - var $mute = false; - - /** - * Whether or not to follow HTTP Location headers. - * - * @var boolean $followLocation - * @access public - */ - var $followLocation = true; - - /** - * Whether or not to follow HTTP Location headers. - * - * @var boolean $follow_location - * @access public - * @deprecated - */ - var $follow_location = false; - - /** - * Time allowed for current transfer, in seconds. 0 means no limit - * - * @var int $timeout - * @access public - */ - var $timeout = 0; - - /** - * Whether or not to return the results of the - * current transfer - * - * @var boolean $returnTransfer - * @access public - */ - var $returnTransfer = true; - - /** - * Whether or not to return the results of the - * current transfer - * - * @var boolean $return_transfer - * @access public - * @deprecated - */ - var $return_transfer = false; - - /** - * The type of transfer to perform (ie. 'POST', 'GET', 'PUT', etc) - * - * @var string $type - * @access public - */ - var $type; - - /** - * The file to upload (PUT, or FTP methods) - * - * @var string $file - * @access public - */ - var $file; - - /** - * The file size of the file pointed to by the $file - * property - * - * @var integer $fileSize - * @access public - */ - var $fileSize; - - /** - * The file size of the file pointed to by the $file - * property - * - * @var integer $file_size - * @access public - * @deprecated - */ - var $file_size = false; - - - /** - * The cookies to send to the remote site - * - * @var array $cookies - * @access public - */ - var $cookies = array(); - - /** - * Additional HTTP headers to send to the remote site - * - * @var array $httpHeaders - * @access public - */ - var $httpHeaders = null; - - /** - * Additional HTTP headers to send to the remote site - * - * @var array $http_headers - * @access public - * @deprecated - */ - var $http_headers = false; - - /** - * The fields to send in a 'POST' request - * - * @var array $fields - * @access public - */ - var $fields; - - /** - * The proxy server to go through - * - * @var string $proxy - * @access public - */ - var $proxy; - - /** - * The username for the Proxy server - * - * @var string $proxyUser - * @access public - */ - var $proxyUser; - - /** - * The password for the Proxy server - * - * @var string $proxyPassword - * @access public - */ - var $proxyPassword; - - /** - * $verifyPeer - * - * FALSE to stop CURL from verifying the peer's certificate. - * Alternate certificates to verify against can be specified - * with the CURLOPT_CAINFO option or a certificate directory - * can be specified with the CURLOPT_CAPATH option. - * CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE - * if CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2). - * - * @var boolean $verifyPeer - * @access public - */ - var $verifyPeer = true; - - /** - * $verifyHost - * - * 0 : to stop CURL from verifying the host's certificate. - * 1 : to check the existence of a common name in the SSL peer certificate. - * 2 : to check the existence of a common name and also verify that it - * matches the hostname provided. - * - * @var bool $verifyHost - * @access public - */ - var $verifyHost = 2; - - /** - * $caInfo - * - * Set value for CURLOPT_CAINFO. The name of a file holding one or more - * certificates to verify the peer with. This only makes sense when used - * in combination with CURLOPT_SSL_VERIFYPEER. curl-ca-bundle.crt is - * avaible on the Curl website http://curl.haxx.se/ for download inside - * the packages. - * - * @var string $caInfo - * @access public - */ - var $caInfo = ''; - - /** - * $caPath - * - * Set value for CURLOPT_CAPATH. A directory that holds multiple CA - * certificates. Use this option alongside CURLOPT_SSL_VERIFYPEER. - * - * @var string $caPath - * @access public - */ - var $caPath; - // }}} - // {{{ Private Properties - /** - * The current curl handle - * - * @var resource $_ch - * @access private - * @see Net_Curl::create() - */ - var $_ch = null; - - /** - * The file upload resource - * - * The CURLOPT_INFILE requires a file resource and not just a file name. - * This is used by execute to open the file. - * - * @var resource $_fp - * @access private - * @see Net_Curl::execute() - */ - var $_fp = null; - // }}} - - // {{{ __construct($url = '', $userAgent = '') - /** - * The Net_Curl PHP 5.x constructor, called when a new Net_Curl object - * is initialized (also called via 4.x constructor) - * - * @param string $url The URL to fetch (can be set using the $url - * property as well) - * @param string $userAgent The userAgent string (can be set using the - * $userAgent property as well) - * - * @access public - * @author Joe Stump <joe@joestump.net> - * @return void - */ - function __construct($url = '', $userAgent = '') - { - if (is_string($url) && strlen($url)) { - $this->url = $url; - } - - if (is_string($userAgent) && strlen($userAgent)) { - $this->userAgent = $userAgent; - } - } - // }}} - - // {{{ Net_Curl($url = '', $userAgent = '') - /** - * Net_Curl - * - * PHP 4.x constructor. - * - * @param string $url The URL to fetch (can be set using the $url - * property as well) - * @param string $userAgent The userAgent string (can be set using the - * $userAgent property as well) - * - * @access public - * @return void - * - function Net_Curl($url = '', $userAgent = '') - { - $this->__construct($url, $userAgent); - } - // }}} */ - - // {{{ execute() - /** - * Executes a prepared CURL transfer - * - * Run this function to execute your cURL request. If all goes well you - * should get a string (the output from the remote host regarding your - * request) or true (if you choose to output directly to the browser). If - * something fails then PEAR_Error is returned. - * - * <code> - * <?php - * require_once 'Net/Curl.php'; - * - * $curl = new Net_Curl('http://www.example.com'); - * $curl->fields = array('foo' => '1', 'bar' => 'apple'); - * $result = $curl->execute(); - * if (!PEAR::isError($result)) { - * echo $result; - * } - * ?> - * </code> - * - * @access public - * @author Sterling Hughes <sterling@php.net> - * @author Joe Stump <joe@joestump.net> - * @return PEAR_Error on failure, true/result on success - * @since PHP 4.0.5 - */ - function execute() - { - // Create cURL handle if it hasn't already been created - if (!is_resource($this->_ch)) { - $result = $this->create(); - if (PEAR::isError($result)) { - return $result; - } - } - - // Map the deprecated variables and throw a bunch of errors - $this->_mapDeprecatedVariables(); - - // Default return value is true. - $ret = true; - - // Basic stuff - $ret = curl_setopt($this->_ch, CURLOPT_URL, $this->url); - $ret = curl_setopt($this->_ch, CURLOPT_HEADER, $this->header); - - // Whether or not to return the transfer contents - if ($this->returnTransfer === true || $this->mute === true) { - $ret = curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, true); - } - - // HTTP Authentication - if ($this->username != '') { - $ret = curl_setopt($this->_ch, - CURLOPT_USERPWD, - $this->username . ':' . $this->password); - } - - // SSL Checks - if (isset($this->sslVersion)) { - $ret = curl_setopt($this->_ch, - CURLOPT_SSLVERSION, - $this->sslVersion); - } - - if (isset($this->sslCert)) { - $ret = curl_setopt($this->_ch, CURLOPT_SSLCERT, $this->sslCert); - } - - if (isset($this->sslCertPasswd)) { - $ret = curl_setopt($this->_ch, - CURLOPT_SSLCERTPASSWD, - $this->sslCertPasswd); - } - - // Proxy Related checks - if (isset($this->proxy)) { - $ret = curl_setopt($this->_ch, CURLOPT_PROXY, $this->proxy); - } - - if (isset($this->proxyUser) || isset($this->proxyPassword)) { - $ret = curl_setopt($this->_ch, - CURLOPT_PROXYUSERPWD, - $this->proxyUser . ':' . $this->proxyPassword); - } - - if (is_bool($this->verifyPeer)) { - if (!$this->setOption(CURLOPT_SSL_VERIFYPEER, $this->verifyPeer)) { - return PEAR::raiseError('Error setting CURLOPT_SSL_VERIFYPEER'); - } - } - - if (is_numeric($this->verifyHost) && $this->verifyHost >= 0 && - $this->verifyHost <= 2) { - if (!$this->setOption(CURLOPT_SSL_VERIFYHOST, $this->verifyHost)) { - return PEAR::raiseError('Error setting CURLOPT_SSL_VERIFYPEER'); - } - } - - if (is_bool($this->verifyPeer) && $this->verifyPeer == true) { - if (isset($this->caInfo) && strlen($this->caInfo)) { - if (file_exists($this->caInfo)) { - if (!$this->setOption(CURLOPT_CAINFO, $this->caInfo)) { - return PEAR::raiseError('Error setting CURLOPT_CAINFO'); - } - } else { - return PEAR::raiseError('Could not find CA info: '. - $this->caInfo); - } - } - - if (isset($this->caPath) && is_string($this->caPath)) { - if (!$this->setOption(CURLOPT_CAPATH, $this->caPath)) { - return PEAR::raiseError('Error setting CURLOPT_CAPATH'); - } - } - } - - // Transfer type - if (isset($this->type)) { - switch (strtolower($this->type)) { - case 'post': - $ret = curl_setopt($this->_ch, CURLOPT_POST, true); - break; - case 'put': - $ret = curl_setopt($this->_ch, CURLOPT_PUT, true); - break; - } - } - - // Transfer upload, etc. related - if (isset($this->file)) { - if (!file_exists($this->file)) { - return PEAR::raiseError('File does not exist: '.$this->file); - } - - $this->_fp = fopen($this->file, 'r'); - if (!is_resource($this->_fp)) { - return PEAR::raiseError('Could not open file: '.$this->file); - } - - if (!isset($this->fileSize)) { - $this->fileSize = filesize($this->file); - } - - $ret = curl_setopt($this->_ch, CURLOPT_INFILE, $this->_fp); - $ret = curl_setopt($this->_ch, CURLOPT_INFILESIZE, $this->fileSize); - $ret = curl_setopt($this->_ch, CURLOPT_UPLOAD, true); - } - - if (isset($this->fields)) { - $sets = null; - if (!isset($this->type)) { - $this->type = 'post'; - $ret = curl_setopt($this->_ch, CURLOPT_POST, true); - } - - // If fields is an array then turn it into a string. Sometimes - // cURL doesn't like fields as an array. - // Exception: if a value is prefixed with "@" and the rest of the - // value resolves to an existing file, then pass - // the values as the original array. - if (is_array($this->fields)) { - $sets = array(); - foreach ($this->fields as $key => $val) { - if (strlen($val) > 1 && $val{0} == '@') { - $file = substr($val, 1); - if (is_file($file) && is_readable($file)) { - $sets = null; - break; - } - } - $sets[] = urlencode($key) . '=' . urlencode($val); - } - } - - if (!is_null($sets)) { - $fields = implode('&', $sets); - } else { - $fields = $this->fields; - } - $ret = curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $fields); - } - - // Error related - if ($this->progress === true) { - $ret = curl_setopt($this->_ch, CURLOPT_PROGRESS, true); - } - - if ($this->verbose === true) { - $ret = curl_setopt($this->_ch, CURLOPT_VERBOSE, true); - } - - // If a Location: header is passed then follow it - $ret = curl_setopt($this->_ch, - CURLOPT_FOLLOWLOCATION, - $this->followLocation); - - // If a timeout is set and is greater then zero then set it - if (is_numeric($this->timeout) && $this->timeout > 0) { - $ret = curl_setopt($this->_ch, CURLOPT_TIMEOUT, $this->timeout); - } - - if (isset($this->userAgent)) { - $ret = curl_setopt($this->_ch, CURLOPT_USERAGENT, $this->userAgent); - } - - // Cookies - if (is_array($this->cookies) && count($this->cookies)) { - $cookieData = ''; - foreach ($this->cookies as $name => $value) { - $cookieData .= $name . '=' . $value . ';'; - } - - $ret = curl_setopt($this->_ch, CURLOPT_COOKIE, $cookieData); - } - - // Other HTTP headers - if ($this->httpHeaders !== null) { - if (is_array($this->httpHeaders)) { - $ret = curl_setopt($this->_ch, - CURLOPT_HTTPHEADER, - $this->httpHeaders); - } else { - return PEAR::raiseError('Net_Curl::$httpHeaders must be an array'); - } - } - - $ret = curl_exec($this->_ch); - - // Close the file before we return anything - if (is_resource($this->_fp)) { - fclose($this->_fp); - } - - if (curl_errno($this->_ch)) { - return PEAR::raiseError(curl_error($this->_ch), curl_errno($this->_ch)); - } - - // Check to make sure we get a 2XX/3XX code and not a 404 or something. - $info = $this->getInfo(); - if (!isset($info['http_code'])) { - return PEAR::raiseError('Unknown or invalid HTTP response'); - } else { - $type = substr($info['http_code'], 0, 1); - if ($type != 2 && $type != 3) { - return PEAR::raiseError('Unexpected HTTP code: ' . - $info['http_code']); - } - } - - return $ret; - } - // }}} - - // {{{ setOption($option, $value) - /** - * Sets an option for your cURL session. Please note that the cURL handler - * is NOT created before execute(). This is for error checking purposes. - * You should use setOption() in the following manner: - * - * <code> - * <?php - * - * require_once 'Net/Curl.php'; - * $curl = new Net_Curl('http://www.example.com'); - * $check = $curl->create(); - * if (!PEAR::isError($check)) { - * $curl->setOption(CURLOPT_FOO, 'bar'); - * $result = $curl->execute(); - * if (!PEAR::isError($result)) { - * echo $result; - * } - * } - * - * ?> - * </code> - * - * @param int $option cURL constant (ie. CURLOPT_URL) - * @param mixed $value The option's value - * - * @author Joe Stump <joe@joestump.net> - * @access public - * @return boolean - */ - function setOption($option, $value) - { - if (is_resource($this->_ch)) { - return curl_setopt($this->_ch, $option, $value); - } - - return false; - } - // }}} - - // {{{ getInfo() - /** - * Returns the info from the cURL session. PEAR_Error if you try and run - * this before you execute the session. - * - * @author Joe Stump <joe@joestump.net> - * @access public - * @return mixed PEAR_Error if there is no resource, info on success - */ - function getInfo() - { - if (is_resource($this->_ch)) { - return curl_getinfo($this->_ch); - } - - return PEAR::isError('cURL handler does not exist!'); - } - // }}} - - // {{{ create() - /** - * Creates a cURL resource. If curl_init() doesn't exist or we could not - * create a resource it will error out. - * - * @author Joe Stump <joe@joestump.net> - * @return boolean TRUE on success, PEAR_Error on failure - */ - function create() - { - if (!PEAR::loadExtension('curl')) { - return PEAR::raiseError('CURL extension is not available'); - } - if (!function_exists('curl_init')) { - return PEAR::raiseError('Function curl_init() not found'); - } - - $this->_ch = curl_init(); - if (!is_resource($this->_ch)) { - return PEAR::raiseError('Could not initialize cURL handler'); - } - - return true; - } - // }}} - - // {{{ verboseAll() - /** - * Sets verbose output - * - * Turns on super debugging mode by not suppressing errors, turning on - * verbose mode, showing headers and displaying progress. - * - * @access public - * @author David Costa <gurugeek@php.net> - * @return void - */ - function verboseAll() - { - $this->verbose = true; - $this->mute = false; - $this->header = true; - $this->progress = true; - } - // }}} - - // {{{ verbose_all() - /** - * Sets verbose output - * - * @access public - * @author David Costa <gurugeek@php.net> - * @return void - * @deprecated - */ - function verbose_all() - { - $this->verboseAll(); - PEAR::raiseError('Net_Curl::verbose_all() is deprecated! Please use Net_Curl::verboseAll()'." <br />\n", null, PEAR_ERROR_PRINT); - } - // }}} - - // {{{ close() - /** - * Closes the curl transfer and finishes the object (kinda ;) - * - * @access public - * @author Sterling Hughes <sterling@php.net> - * @return void - * @since PHP 4.0.5 - */ - function close() - { - if (is_resource($this->_ch)) { - curl_close($this->_ch); - } - } - // }}} - - // {{{ _mapDeprecatedVariables() - /** - * Maps deprecated variables into the appropriate places. It also throws - * the necessary notices. - * - * @author Joe Stump <joe@joestump.net> - * @access private - * @return void - */ - function _mapDeprecatedVariables() - { - $bad = array(); - if ($this->follow_location !== false) { - if ($this->follow_location > 0) { - $this->followLocation = true; - } else { - $this->followLocation = false; - } - - $bad[] = array('follow_location', 'followLocation'); - } - - if ($this->return_transfer !== false) { - if ($this->return_transfer > 0) { - $this->returnTransfer = true; - } else { - $this->returnTransfer = false; - } - - $bad[] = array('return_transfer', 'returnTransfer'); - } - - if ($this->file_size !== false) { - $this->fileSize = $this->file_size; - $bad[] = array('file_size', 'fileSize'); - } - - if ($this->http_headers !== false) { - $this->httpHeaders = $this->http_headers; - $bad[] = array('http_headers', 'httpHeaders'); - } - - foreach ($bad as $map) { - PEAR::raiseError('Net_Curl::$'. $map[0]. ' is deprecated! Please use Net_Curl::$'.$map[1]." instead! <br />\n", null, PEAR_ERROR_PRINT); - } - } - // }}} - - // {{{ __destruct() - /** - * PHP 5.x destructor. - * - * Runs Net_Curl::close() to make sure we close our cURL connection. - * - * @author Joe Stump <joe@joestump.net> - * @see Net_Curl::close() - */ - function __destruct() - { - $this->close(); - } - // }}} -} - -?> diff --git a/civicrm/packages/Net/DIME.php b/civicrm/packages/Net/DIME.php deleted file mode 100644 index ba32783594..0000000000 --- a/civicrm/packages/Net/DIME.php +++ /dev/null @@ -1,693 +0,0 @@ -<?php -/** - * This file holds the Net_DIME_Message and Net_DIME_Record classes and all - * constants defined for the Net_DIME package. - * - * PHP versions 4 and 5 - * - * Copyright (c) 2002-2007 The PHP Group - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the authors may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @category Networking - * @package Net_DIME - * @author Shane Caraveo <shane@caraveo.com> - * @author Ralf Hofmann <ralf.hofmann@verdisoft.com> - * @author Jan Schneider <jan@horde.org> - * @copyright 2002-2007 The PHP Group - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @link http://pear.php.net/package/Net_DIME - * @example test/dime_record_test.php For example of usage. - */ - -/** PEAR */ -require_once 'PEAR.php'; - -define('NET_DIME_TYPE_UNCHANGED', 0x00); -define('NET_DIME_TYPE_MEDIA', 0x01); -define('NET_DIME_TYPE_URI', 0x02); -define('NET_DIME_TYPE_UNKNOWN', 0x03); -define('NET_DIME_TYPE_NONE', 0x04); - -define('NET_DIME_VERSION', 0x0001); - -define('NET_DIME_RECORD_HEADER', 12); - -define('NET_DIME_FLAGS', 0); -define('NET_DIME_OPTS_LEN', 1); -define('NET_DIME_ID_LEN', 2); -define('NET_DIME_TYPE_LEN', 3); -define('NET_DIME_DATA_LEN', 4); -define('NET_DIME_OPTS', 5); -define('NET_DIME_ID', 6); -define('NET_DIME_TYPE', 7); -define('NET_DIME_DATA', 8); - -/** - * Net_DIME_Record encodes and decodes single DIME records. - * - * @category Networking - * @package Net_DIME - * @author Shane Caraveo <shane@caraveo.com> - * @author Ralf Hofmann <ralf.hofmann@verdisoft.com> - * @author Jan Schneider <jan@horde.org> - * @copyright 2002-2007 The PHP Group - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @see Net_DIME_Message - * @link http://pear.php.net/package/Net_DIME - * @link http://www.ietf.org/internet-drafts/draft-nielsen-dime-02.txt - */ -class Net_DIME_Record { - - // these are used to hold the padded length - var $OPTS_LENGTH = 0; - var $ID_LENGTH = 0; - var $TYPE_LENGTH = 0; - var $DATA_LENGTH = 0; - var $_haveOpts = false; - var $_haveID = false; - var $_haveType = false; - var $_haveData = false; - var $debug = false; - var $padstr = "\0"; - - /** - * Elements - * [NET_DIME_FLAGS], 16 bits: VERSION:MB:ME:CF:TYPE_T - * [NET_DIME_OPTS_LEN], 16 bits: OPTIONS_LENGTH - * [NET_DIME_ID_LEN], 16 bits: ID_LENGTH - * [NET_DIME_TYPE_LEN], 16 bits: TYPE_LENGTH - * [NET_DIME_DATA_LEN], 32 bits: DATA_LENGTH - * [NET_DIME_OPTS] : OPTIONS - * [NET_DIME_ID] : ID - * [NET_DIME_TYPE] : TYPE - * [NET_DIME_DATA] : DATA - */ - var $Elements = array(NET_DIME_FLAGS => 0, NET_DIME_OPTS_LEN => 0, - NET_DIME_ID_LEN => 0, NET_DIME_TYPE_LEN => 0, - NET_DIME_DATA_LEN => 0, - NET_DIME_OPTS => '', - NET_DIME_ID => '', - NET_DIME_TYPE => '', - NET_DIME_DATA => ''); - - function __construct($debug = false) - { - $this->debug = $debug; - if ($debug) { - $this->padstr = '*'; - } - } - - function setMB() - { - $this->Elements[NET_DIME_FLAGS] |= 0x0400; - } - - function setME() - { - $this->Elements[NET_DIME_FLAGS] |= 0x0200; - } - - function setCF() - { - $this->Elements[NET_DIME_FLAGS] |= 0x0100; - } - - function isChunk() - { - return $this->Elements[NET_DIME_FLAGS] & 0x0100; - } - - function isEnd() - { - return $this->Elements[NET_DIME_FLAGS] & 0x0200; - } - - function isStart() - { - return $this->Elements[NET_DIME_FLAGS] & 0x0400; - } - - function getID() - { - return $this->Elements[NET_DIME_ID]; - } - - function getType() - { - return $this->Elements[NET_DIME_TYPE]; - } - - function getData() - { - return $this->Elements[NET_DIME_DATA]; - } - - function getDataLength() - { - return $this->Elements[NET_DIME_DATA_LEN]; - } - - function setType($typestring, $type = NET_DIME_TYPE_UNKNOWN) - { - $typelen = strlen($typestring) & 0xFFFF; - $type = $type << 4; - $this->Elements[NET_DIME_FLAGS] = ($this->Elements[NET_DIME_FLAGS] & 0xFF0F) | $type; - $this->Elements[NET_DIME_TYPE_LEN] = $typelen; - $this->TYPE_LENGTH = $this->_getPadLength($typelen); - $this->Elements[NET_DIME_TYPE] = $typestring; - } - - function generateID() - { - $id = md5(time()); - $this->setID($id); - return $id; - } - - function setID($id) - { - $idlen = strlen($id) & 0xFFFF; - $this->Elements[NET_DIME_ID_LEN] = $idlen; - $this->ID_LENGTH = $this->_getPadLength($idlen); - $this->Elements[NET_DIME_ID] = $id; - } - - function setData($data, $size = 0) - { - $datalen = $size ? $size : strlen($data); - $this->Elements[NET_DIME_DATA_LEN] = $datalen; - $this->DATA_LENGTH = $this->_getPadLength($datalen); - $this->Elements[NET_DIME_DATA] = $data; - } - - function encode() - { - // Insert version. - $this->Elements[NET_DIME_FLAGS] = ($this->Elements[NET_DIME_FLAGS] & 0x07FF) | (NET_DIME_VERSION << 11); - - // The real DIME encoding. - $format = '%c%c%c%c%c%c%c%c%c%c%c%c' - . '%' . $this->OPTS_LENGTH . 's' - . '%' . $this->ID_LENGTH . 's' - . '%' . $this->TYPE_LENGTH . 's' - . '%' . $this->DATA_LENGTH . 's'; - - return sprintf($format, - ($this->Elements[NET_DIME_FLAGS] & 0x0000FF00) >> 8, - ($this->Elements[NET_DIME_FLAGS] & 0x000000FF), - ($this->Elements[NET_DIME_OPTS_LEN] & 0x0000FF00) >> 8, - ($this->Elements[NET_DIME_OPTS_LEN] & 0x000000FF), - ($this->Elements[NET_DIME_ID_LEN] & 0x0000FF00) >> 8, - ($this->Elements[NET_DIME_ID_LEN] & 0x000000FF), - ($this->Elements[NET_DIME_TYPE_LEN] & 0x0000FF00) >> 8, - ($this->Elements[NET_DIME_TYPE_LEN] & 0x000000FF), - ($this->Elements[NET_DIME_DATA_LEN] & 0xFF000000) >> 24, - ($this->Elements[NET_DIME_DATA_LEN] & 0x00FF0000) >> 16, - ($this->Elements[NET_DIME_DATA_LEN] & 0x0000FF00) >> 8, - ($this->Elements[NET_DIME_DATA_LEN] & 0x000000FF), - str_pad($this->Elements[NET_DIME_OPTS], $this->OPTS_LENGTH, $this->padstr), - str_pad($this->Elements[NET_DIME_ID], $this->ID_LENGTH, $this->padstr), - str_pad($this->Elements[NET_DIME_TYPE], $this->TYPE_LENGTH, $this->padstr), - str_pad($this->Elements[NET_DIME_DATA], $this->DATA_LENGTH, $this->padstr)); - } - - function _getPadLength($len) - { - $pad = 0; - if ($len) { - $pad = $len % 4; - if ($pad) $pad = 4 - $pad; - } - return $len + $pad; - } - - function decode($data) - { - // Real DIME decoding. - $this->Elements[NET_DIME_FLAGS] = (hexdec(bin2hex($data[0])) << 8) - + hexdec(bin2hex($data[1])); - $this->Elements[NET_DIME_OPTS_LEN] = (hexdec(bin2hex($data[2])) << 8) - + hexdec(bin2hex($data[3])); - $this->Elements[NET_DIME_ID_LEN] = (hexdec(bin2hex($data[4])) << 8) - + hexdec(bin2hex($data[5])); - $this->Elements[NET_DIME_TYPE_LEN] = (hexdec(bin2hex($data[6])) << 8) - + hexdec(bin2hex($data[7])); - $this->Elements[NET_DIME_DATA_LEN] = (hexdec(bin2hex($data[8])) << 24) - + (hexdec(bin2hex($data[9])) << 16) - + (hexdec(bin2hex($data[10])) << 8) - + hexdec(bin2hex($data[11])); - $p = 12; - - $version = (($this->Elements[NET_DIME_FLAGS] >> 11) & 0x001F); - - if ($version == NET_DIME_VERSION) { - $this->OPTS_LENGTH = $this->_getPadLength($this->Elements[NET_DIME_OPTS_LEN]); - $this->ID_LENGTH = $this->_getPadLength($this->Elements[NET_DIME_ID_LEN]); - $this->TYPE_LENGTH = $this->_getPadLength($this->Elements[NET_DIME_TYPE_LEN]); - $this->DATA_LENGTH = $this->_getPadLength($this->Elements[NET_DIME_DATA_LEN]); - - $datalen = strlen($data); - $this->Elements[NET_DIME_OPTS] = substr($data, $p, $this->Elements[NET_DIME_OPTS_LEN]); - $this->_haveOpts = (strlen($this->Elements[NET_DIME_OPTS]) == $this->Elements[NET_DIME_OPTS_LEN]); - if ($this->_haveOpts) { - $p += $this->OPTS_LENGTH; - $this->Elements[NET_DIME_ID] = substr($data, $p, $this->Elements[NET_DIME_ID_LEN]); - $this->_haveID = (strlen($this->Elements[NET_DIME_ID]) == $this->Elements[NET_DIME_ID_LEN]); - if ($this->_haveID) { - $p += $this->ID_LENGTH; - $this->Elements[NET_DIME_TYPE] = substr($data, $p, $this->Elements[NET_DIME_TYPE_LEN]); - $this->_haveType = (strlen($this->Elements[NET_DIME_TYPE]) == $this->Elements[NET_DIME_TYPE_LEN]); - if ($this->_haveType) { - $p += $this->TYPE_LENGTH; - $this->Elements[NET_DIME_DATA] = substr($data, $p, $this->Elements[NET_DIME_DATA_LEN]); - $this->_haveData = (strlen($this->Elements[NET_DIME_DATA]) == $this->Elements[NET_DIME_DATA_LEN]); - if ($this->_haveData) { - $p += $this->DATA_LENGTH; - } else { - $p += strlen($this->Elements[NET_DIME_DATA]); - } - } else { - $p += strlen($this->Elements[NET_DIME_TYPE]); - } - } else { - $p += strlen($this->Elements[NET_DIME_ID]); - } - } else { - $p += strlen($this->Elements[NET_DIME_OPTS]); - } - } - return substr($data, $p); - } - - function addData($data) - { - $datalen = strlen($data); - $p = 0; - if (!$this->_haveOpts) { - $have = strlen($this->Elements[NET_DIME_OPTS]); - $this->Elements[NET_DIME_OPTS] .= substr($data, $p, $this->Elements[NET_DIME_OPTS_LEN] - $have); - $this->_haveOpts = strlen($this->Elements[NET_DIME_OPTS]) == $this->Elements[NET_DIME_OPTS_LEN]; - if (!$this->_haveOpts) { - return null; - } - $p += $this->OPTS_LENGTH - $have; - } - if (!$this->_haveID) { - $have = strlen($this->Elements[NET_DIME_ID]); - $this->Elements[NET_DIME_ID] .= substr($data, $p, $this->Elements[NET_DIME_ID_LEN] - $have); - $this->_haveID = strlen($this->Elements[NET_DIME_ID]) == $this->Elements[NET_DIME_ID_LEN]; - if (!$this->_haveID) { - return null; - } - $p += $this->ID_LENGTH - $have; - } - if (!$this->_haveType && $p < $datalen) { - $have = strlen($this->Elements[NET_DIME_TYPE]); - $this->Elements[NET_DIME_TYPE] .= substr($data, $p, $this->Elements[NET_DIME_TYPE_LEN] - $have); - $this->_haveType = strlen($this->Elements[NET_DIME_TYPE]) == $this->Elements[NET_DIME_TYPE_LEN]; - if (!$this->_haveType) { - return null; - } - $p += $this->TYPE_LENGTH - $have; - } - if (!$this->_haveData && $p < $datalen) { - $have = strlen($this->Elements[NET_DIME_DATA]); - $this->Elements[NET_DIME_DATA] .= substr($data, $p, $this->Elements[NET_DIME_DATA_LEN] - $have); - $this->_haveData = strlen($this->Elements[NET_DIME_DATA]) == $this->Elements[NET_DIME_DATA_LEN]; - if (!$this->_haveData) { - return null; - } - $p += $this->DATA_LENGTH - $have; - } - return substr($data, $p); - } -} - -/** - * Net_DIME_Message enables you to manipulate and build a DIME encapsulated - * message. - * - * @category Networking - * @package Net_DIME - * @author Shane Caraveo <shane@caraveo.com> - * @author Ralf Hofmann <ralf.hofmann@verdisoft.com> - * @author Jan Schneider <jan@horde.org> - * @copyright 2002-2007 The PHP Group - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @see Net_DIME_Message - * @link http://pear.php.net/package/Net_DIME - * @link http://www.ietf.org/internet-drafts/draft-nielsen-dime-02.txt - * @example test/dime_message_test.php For example of usage. - * @todo - Lots of stuff needs to be tested. - * - Definitely have to go through DIME spec and make things work - * right, most importantly, sec 3.3. - * - Make examples, document. - */ -class Net_DIME_Message { - - var $record_size = 4096; - var $parts = array(); - var $currentPart = -1; - var $stream = null; - var $_currentRecord; - var $_proc = array(); - var $type; - var $typestr; - var $mb = 1; - var $me = 0; - var $cf = 0; - var $id = null; - var $debug = false; - - /** - * Constructor. - * - * @todo Integrate with PHP streams. - * - * @param resource $stream A file pointer. - * @param integer $record_size - * @param boolean $debug - */ - function __construct($stream = null, $record_size = 4096, - $debug = false) - { - $this->stream = $stream; - $this->record_size = $record_size; - $this->debug = $debug; - } - - function _makeRecord($data, $typestr = '', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $record = new Net_DIME_Record($this->debug); - if ($this->mb) { - $record->setMB(); - // all subsequent records are not message begin! - $this->mb = 0; - } - if ($this->me) { - $record->setME(); - } - if ($this->cf) { - $record->setCF(); - } - $record->setData($data); - $record->setType($typestr,$type); - if ($id) { - $record->setID($id); - } - - return $record->encode(); - } - - function startChunk($data, $typestr = '', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $this->me = 0; - $this->cf = 1; - $this->type = $type; - $this->typestr = $typestr; - if ($id) { - $this->id = $id; - } else { - $this->id = md5(time()); - } - - return $this->_makeRecord($data, $this->typestr, $this->id, $this->type); - } - - function doChunk($data) - { - $this->me = 0; - $this->cf = 1; - - return $this->_makeRecord($data, null, null, NET_DIME_TYPE_UNCHANGED); - } - - function endChunk() - { - $this->cf = 0; - $data = null; - $rec = $this->_makeRecord($data, null, null, NET_DIME_TYPE_UNCHANGED); - $this->id = 0; - $this->cf = 0; - $this->id = 0; - $this->type = NET_DIME_TYPE_UNKNOWN; - $this->typestr = null; - - return $rec; - } - - function endMessage() - { - $this->me = 1; - $data = null; - $rec = $this->_makeRecord($data, null, null, NET_DIME_TYPE_NONE); - $this->me = 0; - $this->mb = 1; - $this->id = 0; - - return $rec; - } - - /** - * Creates DIME records from a chunk of data and writes them to the stream - * provided in the constructor. - * - * @param string $data - * @param string $typestr - * @param string $id - * @param integer $type One of the NET_DIME_TYPE_* constants. - */ - function sendData($data, $typestr='', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $len = strlen($data); - if ($len > $this->record_size) { - $chunk = substr($data, 0, $this->record_size); - $p = $this->record_size; - $rec = $this->startChunk($chunk, $typestr, $id, $type); - fwrite($this->stream, $rec); - while ($p < $len) { - $chunk = substr($data, $p, $this->record_size); - $p += $this->record_size; - $rec = $this->doChunk($chunk); - fwrite($this->stream, $rec); - } - $rec = $this->endChunk(); - fwrite($this->stream, $rec); - return; - } - $rec = $this->_makeRecord($data, $typestr, $id, $type); - fwrite($this->stream, $rec); - } - - function sendEndMessage() - { - $rec = $this->endMessage(); - fwrite($this->stream, $rec); - } - - /** - * Reads a file, creates records and writes them to the stream provided in - * the constructor. - * - * @param string $filename A file name. - * @param string $typestr - * @param string $id - * @param integer $type One of the NET_DIME_TYPE_* constants. - */ - function sendFile($filename, $typestr='', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $f = fopen($filename, 'rb'); - if ($f) { - if ($data = fread($f, $this->record_size)) { - $this->startChunk($data, $typestr, $id, $type); - } - while ($data = fread($f, $this->record_size)) { - $this->doChunk($data, $typestr, $id, $type); - } - $this->endChunk(); - fclose($f); - } - } - - /** - * Encodes data in DIME. - * - * @param string $data - * @param string $typestr - * @param string $id - * @param integer $type One of the NET_DIME_TYPE_* constants. - */ - function encodeData($data, $typestr = '', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $len = strlen($data); - $resp = ''; - - if ($len > $this->record_size) { - $chunk = substr($data, 0, $this->record_size); - $p = $this->record_size; - $resp .= $this->startChunk($chunk, $typestr, $id, $type); - while ($p < $len) { - $chunk = substr($data, $p, $this->record_size); - $p += $this->record_size; - $resp .= $this->doChunk($chunk); - } - $resp .= $this->endChunk(); - } else { - $resp .= $this->_makeRecord($data, $typestr, $id, $type); - } - - return $resp; - } - - /** - * Reads a file, creates records and writes them to the stream provided in - * the constructor. - * - */ - function encodeFile($filename, $typestr = '', $id = null, - $type = NET_DIME_TYPE_UNKNOWN) - { - $f = fopen($filename, 'rb'); - if ($f) { - if ($data = fread($f, $this->record_size)) { - $resp = $this->startChunk($data, $typestr, $id, $type); - } - while ($data = fread($f, $this->record_size)) { - $resp = $this->doChunk($data, $typestr, $id, $type); - } - $resp = $this->endChunk(); - fclose($f); - } - - return $resp; - } - - /** - * Creates Net_DIME_Records from provided data. - */ - function _processData(&$data) - { - $leftover = null; - if (!$this->_currentRecord) { - $this->_currentRecord = new Net_DIME_Record($this->debug); - $data = $this->_currentRecord->decode($data); - } else { - $data = $this->_currentRecord->addData($data); - } - - if ($this->_currentRecord->_haveData) { - if (count($this->parts) == 0 && - !$this->_currentRecord->isStart()) { - return PEAR::raiseError('First Message is not a DIME begin record!'); - } - - if ($this->_currentRecord->isEnd() && - $this->_currentRecord->getDataLength() == 0) { - return; - } - - if ($this->currentPart < 0 && !$this->_currentRecord->isChunk()) { - $this->parts[] = array(); - $this->currentPart = count($this->parts) - 1; - $this->parts[$this->currentPart]['id'] = $this->_currentRecord->getID(); - $this->parts[$this->currentPart]['type'] = $this->_currentRecord->getType(); - $this->parts[$this->currentPart]['data'] = $this->_currentRecord->getData(); - $this->currentPart = -1; - } else { - if ($this->currentPart < 0) { - $this->parts[] = array(); - $this->currentPart = count($this->parts) - 1; - $this->parts[$this->currentPart]['id'] = $this->_currentRecord->getID(); - $this->parts[$this->currentPart]['type'] = $this->_currentRecord->getType(); - $this->parts[$this->currentPart]['data'] = $this->_currentRecord->getData(); - } else { - $this->parts[$this->currentPart]['data'] .= $this->_currentRecord->getData(); - if (!$this->_currentRecord->isChunk()) { - // We reached the end of the chunk. - $this->currentPart = -1; - } - } - } - if (!$this->_currentRecord->isEnd()) { - $this->_currentRecord = null; - } - } - - return; - } - - /** - * Decodes a DIME encode string of data. - */ - function decodeData(&$data) - { - while (strlen($data) >= NET_DIME_RECORD_HEADER) { - $err = $this->_processData($data); - if (PEAR::isError($err)) { - return $err; - } - } - } - - /** - * Reads the stream and creates an array of records. - * - * The method can accept the start of a previously read buffer. This is - * useful in situations where you need to read headers before discovering - * that the data is DIME encoded, such as in the case of reading an HTTP - * response. - */ - function read($buf = null) - { - while ($data = fread($this->stream, 8192)) { - if ($buf) { - $data = $buf . $data; - $buf = null; - } - if ($this->debug) { - echo 'read: ' . strlen($data) . " bytes\n"; - } - $err = $this->decodeData($data); - if (PEAR::isError($err)) { - return $err; - } - - // Store any leftover data to be used again. - // Should be < NET_DIME_RECORD_HEADER bytes. - $buf = $data; - } - - if (!$this->_currentRecord || !$this->_currentRecord->isEnd()) { - return PEAR::raiseError('reached stream end without end record'); - } - } -} diff --git a/civicrm/packages/VERSIONS.php b/civicrm/packages/VERSIONS.php index bb33761e99..13510eb9e3 100644 --- a/civicrm/packages/VERSIONS.php +++ b/civicrm/packages/VERSIONS.php @@ -115,11 +115,7 @@ * HTML_QuickForm_Controller 1.0.9 PHP 3 local changes * HTML_Template_IT 1.2.1 BSD 3-cl. * Log 1.11.5 X11 - * Mail 1.2.0 PHP 2 local changes - * Mail_Mime 1.8.0 BSD 3-cl. local changes * Mail_mimeDecode 1.5.1 BSD 3-cl. - * Net_Curl 1.2.5 BSD 3-cl. - * Net_DIME 1.0.1 BSD 3-cl. * Net_URL 1.0.15 BSD 3-cl. * Pager 2.4.8 BSD 3-cl. * PEAR 1.9.0 PHP 3.0 diff --git a/civicrm/packages/jquery/plugins/jquery.tableHeader.js b/civicrm/packages/jquery/plugins/jquery.tableHeader.js index fa63076ae2..71eb1b7290 100644 --- a/civicrm/packages/jquery/plugins/jquery.tableHeader.js +++ b/civicrm/packages/jquery/plugins/jquery.tableHeader.js @@ -18,7 +18,7 @@ $(document).ready(function() { if (html == ' ') { html = ' '; } - if ($(this).children().size() == 0) { + if ($(this).children().length == 0) { html = '<span>'+ html +'</span>'; } diff --git a/civicrm/packages/jquery/plugins/jstree/jquery.jstree.js b/civicrm/packages/jquery/plugins/jstree/jquery.jstree.js index 2e42cc13d0..d8d93ac10e 100755 --- a/civicrm/packages/jquery/plugins/jstree/jquery.jstree.js +++ b/civicrm/packages/jquery/plugins/jstree/jquery.jstree.js @@ -580,10 +580,10 @@ obj = this._get_node(obj); if(obj === -1) { return this.get_container().find("> ul > li:first-child"); } if(!obj.length) { return false; } - if(strict) { return (obj.nextAll("li").size() > 0) ? obj.nextAll("li:eq(0)") : false; } + if(strict) { return (obj.nextAll("li").length > 0) ? obj.nextAll("li:eq(0)") : false; } if(obj.hasClass("jstree-open")) { return obj.find("li:eq(0)"); } - else if(obj.nextAll("li").size() > 0) { return obj.nextAll("li:eq(0)"); } + else if(obj.nextAll("li").length > 0) { return obj.nextAll("li:eq(0)"); } else { return obj.parentsUntil(".jstree","li").next("li").eq(0); } }, _get_prev : function (obj, strict) { @@ -1976,7 +1976,7 @@ }, get_text : function (obj, lang) { obj = this._get_node(obj) || this.data.ui.last_selected; - if(!obj.size()) { return false; } + if(!obj.length) { return false; } var langs = this._get_settings().languages, s = this._get_settings().core.html_titles; if($.isArray(langs) && langs.length) { @@ -1996,7 +1996,7 @@ }, set_text : function (obj, val, lang) { obj = this._get_node(obj) || this.data.ui.last_selected; - if(!obj.size()) { return false; } + if(!obj.length) { return false; } var langs = this._get_settings().languages, s = this._get_settings().core.html_titles, tmp; @@ -3201,7 +3201,7 @@ _is_loaded : function (obj) { var s = this._get_settings().xml_data; obj = this._get_node(obj); - return obj == -1 || !obj || (!s.ajax && !$.isFunction(s.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").size() > 0; + return obj == -1 || !obj || (!s.ajax && !$.isFunction(s.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").length > 0; }, load_node_xml : function (obj, s_call, e_call) { var s = this.get_settings().xml_data, @@ -4028,7 +4028,7 @@ load_node : function (obj, s_call, e_call) { var _this = this; this.load_node_html(obj, function () { _this.__callback({ "obj" : _this._get_node(obj) }); s_call.call(this); }, e_call); }, _is_loaded : function (obj) { obj = this._get_node(obj); - return obj == -1 || !obj || (!this._get_settings().html_data.ajax && !$.isFunction(this._get_settings().html_data.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").size() > 0; + return obj == -1 || !obj || (!this._get_settings().html_data.ajax && !$.isFunction(this._get_settings().html_data.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").length > 0; }, load_node_html : function (obj, s_call, e_call) { var d, diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md index 83524742a3..d2d501d26a 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.29.0 + +Released September 2, 2020 + +- **[Synopsis](release-notes/5.29.0.md#synopsis)** +- **[Features](release-notes/5.29.0.md#features)** +- **[Bugs resolved](release-notes/5.29.0.md#bugs)** +- **[Miscellany](release-notes/5.29.0.md#misc)** +- **[Credits](release-notes/5.29.0.md#credits)** +- **[Feedback](release-notes/5.29.0.md#feedback)** + ## CiviCRM 5.28.4 Released September 1, 2020 diff --git a/civicrm/release-notes/5.28.3.md b/civicrm/release-notes/5.28.3.md index ceac9f06d6..4f83984cda 100644 --- a/civicrm/release-notes/5.28.3.md +++ b/civicrm/release-notes/5.28.3.md @@ -21,14 +21,8 @@ Released August 22, 2020 ## <a name="bugs"></a>Bugs resolved * **_CiviContribute_: Re-enable "Cancel" button in backend UI for recurring contributions ([dev/core#1961](https://lab.civicrm.org/dev/core/-/issues/1961): [#18204](https://github.com/civicrm/civicrm-core/pull/18204))** - - Only affects some payment-processors - * **_CiviContribute_: Contributions sometimes display "RoundingNecessaryException" ([dev/core#1959](https://lab.civicrm.org/dev/core/-/issues/1959): [#18206](https://github.com/civicrm/civicrm-core/pull/18206))** * **_Dedupe_: Merging certain contacts raises DB error ([dev/core#1964](https://lab.civicrm.org/dev/core/-/issues/1964): [#18223](https://github.com/civicrm/civicrm-core/pull/18223))** - - Only affects contacts with dedupe exception records - * **_Dedupe_: Deleted contacts are incorrectly displayed ([#18214](https://github.com/civicrm/civicrm-core/pull/18214))** * **_Drupal Views_: Filtering on multi-select custom fields ([dev/core#1966](https://lab.civicrm.org/dev/core/-/issues/1966): [drupal#615](https://github.com/civicrm/civicrm-drupal/pull/615), [drupal#618](https://github.com/civicrm/civicrm-drupal/pull/618))** * **_Quick Search_: Deleted contacts are incorrectly displayed ([#18213](https://github.com/civicrm/civicrm-core/pull/18213))** diff --git a/civicrm/release-notes/5.29.0.md b/civicrm/release-notes/5.29.0.md new file mode 100644 index 0000000000..5548efbe97 --- /dev/null +++ b/civicrm/release-notes/5.29.0.md @@ -0,0 +1,1139 @@ +# CiviCRM 5.29.0 + +Released September 2, 2020 + +- **[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?** | **yes** | +| **Fix problems installing or upgrading to a previous version?** | **yes** | +| **Introduce features?** | **yes** | +| **Fix bugs?** | **yes** | + +## <a name="features"></a>Features + +### Core CiviCRM + +- **Contact export is very slow, creates huge temporary tables + ([dev/core#1725](https://lab.civicrm.org/dev/core/-/issues/1725): + [17458](https://github.com/civicrm/civicrm-core/pull/17458))** + + Improves performance when exporting contacts by only exporting primary address + fields. + +- **Allow different output formats for CiviReport results, like native excel + format, and untangle code + ([dev/core#1855](https://lab.civicrm.org/dev/core/-/issues/1855): + [17901](https://github.com/civicrm/civicrm-core/pull/17901))** + + This makes it possible to extend CiviReport by reworking the PDF and CSV + generation code as new output handlers, and allowing for extension developers + to add new ones. + +- **Icon in status message after saving a civireport is misleading + ([dev/report#43](https://lab.civicrm.org/dev/report/-/issues/43): + [17863](https://github.com/civicrm/civicrm-core/pull/17863))** + + Improves icons in Status Messages for reports. + +- **Show cron warning on Scheduled Jobs admin page + ([18065](https://github.com/civicrm/civicrm-core/pull/18065))** + + A pop-up message will appear on the Scheduled Jobs page if cron has not been + running. + +- **Add APIv4 and pseudoconstants for RelationshipCache + ()** + +- **RelationshipCache - Add a high-level index to facilitate relationship + queries (more fields) + ([17781](https://github.com/civicrm/civicrm-core/pull/17781) and + [17879](https://github.com/civicrm/civicrm-core/pull/17879))** + + A new table caches relationships to provide a single resource for tracking + relationships from a specified contact's perspective. The RelationshipCache + records the "near" and "far" contacts and relationship names along with the + orientation and relationship type. Each record from `civicrm_relationship` + will have two records in `civicrm_relationship_cache`, one for each + orientation. + +- **Remove ORDER BY and GROUP BY from alphabetQuery to improve performance + ([16877](https://github.com/civicrm/civicrm-core/pull/16877))** + +- **Differentiate smart group from regular group using icon in select2 field + ([dev/core#785](https://lab.civicrm.org/dev/core/-/issues/785): + [17927](https://github.com/civicrm/civicrm-core/pull/17927))** + + Improves Group's select2 by adding icon next to smart groups. + +- **Feature: Ability to enable SSL for database connection. + ([dev/core#1137](https://lab.civicrm.org/dev/core/-/issues/1137): + [17706](https://github.com/civicrm/civicrm-core/pull/17706))** + + Makes it so sites can use ssl to connect to mysql. + +- **Add in hook to allow for altering of Profile Schemas + ([dev/core#1913](https://lab.civicrm.org/dev/core/-/issues/1913): + [17986](https://github.com/civicrm/civicrm-core/pull/17986))** + + Extensions that allow additional fields to be added to profiles can now add + schemas so that fields can be added from new entities. + +- **Why not make the buttons flat? + ([18054](https://github.com/civicrm/civicrm-core/pull/18054))** + + Buttons no longer have a gradient background. + +- **SystemCheck: add ability to efficiently run only specified checks + ([17824](https://github.com/civicrm/civicrm-core/pull/17824))** + + The APIv4 system check action can now filter on name, running just the + specified check(s). + +- **Change inform-icon to fa-info-circle + ([18001](https://github.com/civicrm/civicrm-core/pull/18001))** + + The information icon is now produced with Font Awesome rather than a sprite. + +- **APIv4 - Add keyword to select all custom fields + ([17955](https://github.com/civicrm/civicrm-core/pull/17955))** + + You can now use a wildcard to select all custom fields on an entity without + specifying each individually. + +- **Improve caching of current domain + ([17916](https://github.com/civicrm/civicrm-core/pull/17916))** + + Domain information is now cached in one central place, making it more + straightforward to use and flush. + +- **APIv4 - Specify BridgeEntities to assist with joins + ([17808](https://github.com/civicrm/civicrm-core/pull/17808))** + + Minor entities that intermediate many-to-many relationships are now specified + as bridge entities and extend from a new base class. This will allow them to + be distinguished better in the future. + +- **APIv4 - Add shorthand for setCheckPermissions() + ([17834](https://github.com/civicrm/civicrm-core/pull/17834) and + [17874](https://github.com/civicrm/civicrm-core/pull/17874))** + + The CRUD functions of APIv4 now accept a boolean argument that corresponds to + the value sent to `setCheckPermissions()`. This provides a shorthand for a + very common use case. + +- **Add search extension + ([17775](https://github.com/civicrm/civicrm-core/pull/17775), + [17789](https://github.com/civicrm/civicrm-core/pull/17789), and + [17864](https://github.com/civicrm/civicrm-core/pull/17864))** + + An extension that replaces Search Builder is now shipped with core, though it + is hidden from the extensions user interface because it is currently + incompatible with the default theming framework. + +### CiviContribute + +- **Add configure and priceset url icons on public contribution & event pages + ([dev/core#1905](https://lab.civicrm.org/dev/core/-/issues/1905): + [17942](https://github.com/civicrm/civicrm-core/pull/17942), + [18088](https://github.com/civicrm/civicrm-core/pull/18088) and + [18064](https://github.com/civicrm/civicrm-core/pull/18064))** + + A "Configure" button now appears to administrators when viewing a contribution + page or event, or a priceset within either, from the frontend. This links to + the corresponding form to administer the contribution page, event, or + priceset. + +### CiviEvent + +- **Move Event Cart to extension + ([17741](https://github.com/civicrm/civicrm-core/pull/17741), + [17743](https://github.com/civicrm/civicrm-core/pull/17743), + [17861](https://github.com/civicrm/civicrm-core/pull/17861), + [17884](https://github.com/civicrm/civicrm-core/pull/17884), + [17885](https://github.com/civicrm/civicrm-core/pull/17885), and + [17891](https://github.com/civicrm/civicrm-core/pull/17891))** + + The event cart features have been moved to a separate extension that is + shipped with core. + +### CiviMember + +- **Option to update expired memberships as part of the job.process_membership + ([dev/membership#18](https://lab.civicrm.org/dev/membership/-/issues/18): + [16298](https://github.com/civicrm/civicrm-core/pull/16298))** + + Improves the Job.process_membership API/Scheduled job by adding some new + parameters, specifically: + + - exclude_test_memberships: Exclude test memberships from calculations + (default = TRUE) + - only_active_membership_types: Exclude disabled membership types from + calculations (default = TRUE) + - exclude_membership_status_ids: Default: Exclude Pending, Cancelled, + Expired. + + Deceased will always be excluded + +- **Add auto-renew status to membership detail report + ([17683](https://github.com/civicrm/civicrm-core/pull/17683) and + [17911](https://github.com/civicrm/civicrm-core/pull/17911))** + + The membership detail report can now display and filter on the auto-renew + status of each membership. + +### Backdrop Integration + +- **Support for installing CiviCRM-Backdrop via "setup" UI + ([17749](https://github.com/civicrm/civicrm-core/pull/17749) and + [121](https://github.com/civicrm/civicrm-backdrop/pull/121))** + + Improves the installation and Setup process for Backdrop integration's so that + one enables the CiviCRM module like any other module and then is directed to + the setup screen to complete installation as opposed to having to navigate to + a specific link. + +### Drupal Integration + +- **Upgrading a site that still has "mysql" in the dsn string breaks in latest + master ([dev/core#1937](https://lab.civicrm.org/dev/core/-/issues/1937): + [18174](https://github.com/civicrm/civicrm-core/pull/18174))** + + This adds an upgrade message for 5.29.0 warning that Composer patching will + need to be enabled before upgrading to 5.30.0 or higher. + + The "mysql" in the DSN (as opposed to "mysqli") will not be a problem, but the + solution for this is in a package patch that appears in 5.30. + +- **Installation - Support "activate first" w/setup UI + ([606](https://github.com/civicrm/civicrm-drupal/pull/606))** + + The new setup user interface for Backdrop and WordPress installations is now + available for Drupal 7. + +### WordPress Integration + +- **Add system check to ensure WP base page exists + ([17698](https://github.com/civicrm/civicrm-core/pull/17698))** + + A new system check will display a message if the base page, as set in CiviCRM, + doesn't match an existing page in WordPress. No message will display if + WordPress multisite is enabled. + +## <a name="bugs"></a>Bugs resolved + +### Core CiviCRM + +- **CRM_Dedupe_Finder parses phone key incorrectly + ([dev/core#1767](https://lab.civicrm.org/dev/core/-/issues/1767): + [17361](https://github.com/civicrm/civicrm-core/pull/17361) and + [17882](https://github.com/civicrm/civicrm-core/pull/17882))** + + The process to match duplicate contacts was not accurately identifying phone + fields, causing contacts with matching phone numbers to be treated as if they + didn't match. + +- **Dedupe: Location type is treated inconsistently + ([dev/core#1826](https://lab.civicrm.org/dev/core/-/issues/1826): + [17645](https://github.com/civicrm/civicrm-core/pull/17645))** + + Duplicate matching now ignores location type for postal address fields, now + consistent with how it has ignored phone and email location types. + +- **Installing Drupal 8 using civicrm-setup leads to "incorrect resource url" + system status check errors + ([dev/drupal#114](https://lab.civicrm.org/dev/drupal/-/issues/114) and + [dev/core#1647](https://lab.civicrm.org/dev/core/-/issues/1647): + [17754](https://github.com/civicrm/civicrm-core/pull/17754))** + + Removes the resource URL status check. + +- **API4: 500 error on chain with custom field + ([dev/core#1578](https://lab.civicrm.org/dev/core/-/issues/1578): + [17866](https://github.com/civicrm/civicrm-core/pull/17866))** + +- **MySQL uses filesort index when building the query which can cause + performance issues + ([dev/core#1665](https://lab.civicrm.org/dev/core/-/issues/1665): + [18052](https://github.com/civicrm/civicrm-core/pull/18052))** + +- **Custom fields not copied on shared address + ([dev/core#1670](https://lab.civicrm.org/dev/core/-/issues/1670): + [17580](https://github.com/civicrm/civicrm-core/pull/17580))** + +- **Email template permissions + ([dev/core#1751](https://lab.civicrm.org/dev/core/-/issues/1751): + [17480](https://github.com/civicrm/civicrm-core/pull/17480))** + + Users sending an email are no longer able to save or modify a template if they + lack the "edit message templates" permission. + +- **Using Parent tag in search form doesn't pull contacts marked with child tag + in search form result + ([dev/core#1795](https://lab.civicrm.org/dev/core/-/issues/1795): + [17513](https://github.com/civicrm/civicrm-core/pull/17513))** + +- **Activity Search : Tags are not working + ([dev/core#1827](https://lab.civicrm.org/dev/core/-/issues/1827): + [17655](https://github.com/civicrm/civicrm-core/pull/17655) and + [17755](https://github.com/civicrm/civicrm-core/pull/17755))** + +- **Autocomplete-select custom field is not searchable + ([dev/core#1805](https://lab.civicrm.org/dev/core/-/issues/1805): + [17569](https://github.com/civicrm/civicrm-core/pull/17569))** + +- **Do not allow enabling database logging when using multilingual + ([dev/core#1812](https://lab.civicrm.org/dev/core/-/issues/1812): + [17815](https://github.com/civicrm/civicrm-core/pull/17815))** + + This has never worked, with network errors as the result. This prevents it + from being set. + +- **Can't remove subtype if any required custom field is based on it + ([dev/core#1853](https://lab.civicrm.org/dev/core/-/issues/1853): + [17765](https://github.com/civicrm/civicrm-core/pull/17765))** + +- **User account form action not passing along contact id correctly possibly + leading to duplicate contacts + ([dev/core#1858](https://lab.civicrm.org/dev/core/-/issues/1858): + [17769](https://github.com/civicrm/civicrm-core/pull/17769))** + + When creating a user account from a contact record, the contact ID was not + properly passed along. Depending upon your unsupervised duplicate matching + rule, it would potentially create a duplicate contact record. + +- **Cannot edit a profile field of "Email" to use the Location Type "Primary" + ([dev/core#1861](https://lab.civicrm.org/dev/core/-/issues/1861): + [17812](https://github.com/civicrm/civicrm-core/pull/17812))** + + The location type would get reset to your default location type rather than + staying as "primary". + +- **Downgrade checkEnvironment level and skip non-prod checks (part of + [dev/core#1863](https://lab.civicrm.org/dev/core/-/issues/1863): + [17807](https://github.com/civicrm/civicrm-core/pull/17807))** + + In non-production environments, a system check produces a message saying so. + This downgrades it from an "Alert" to a more appropriate level of "Notice", + and it also suppresses cron and CiviMail system checks in this situation. + +- **Slew of E_NOTICES on Profiles admin page and description field is always + blank ([dev/core#1868](https://lab.civicrm.org/dev/core/-/issues/1868): + [17786](https://github.com/civicrm/civicrm-core/pull/17786))** + +- **CiviReport sent as email via mail_report job with a CSV attachment doesn't + show UTF8 characters properly in Excel + ([dev/core#1869](https://lab.civicrm.org/dev/core/-/issues/1869): + [17806](https://github.com/civicrm/civicrm-core/pull/17806))** + +- **References to packages path in security status checks are assumed to be + under civicrm root + ([dev/core#1872](https://lab.civicrm.org/dev/core/-/issues/1872): + [17844](https://github.com/civicrm/civicrm-core/pull/17844))** + + This changes how package and vendor paths are calculated in system checks + since (in Drupal 8 and potentially elsewhere) they may not be within the + CiviCRM root folder. + +- **Custom data insert/update error if using reserved words + ([dev/core#1880](https://lab.civicrm.org/dev/core/-/issues/1880): + [17848](https://github.com/civicrm/civicrm-core/pull/17848))** + +- **Advanced Search (search by complete or partial name) returns all contacts + ([dev/core#1895](https://lab.civicrm.org/dev/core/-/issues/1895): + [17950](https://github.com/civicrm/civicrm-core/pull/17950))** + + The ability to search first/last name was recently added to core. The primary + intent was to properly handle advanced searches that originate from + quicksearch first/last name filters. While that was working, a first/last name + search that originated directly from an advanced search was not working. This + fixes the issue. + +- **Miscellaneous E_NOTICES + ([dev/core#1909](https://lab.civicrm.org/dev/core/-/issues/1909): + [18006](https://github.com/civicrm/civicrm-core/pull/18006), + [17962](https://github.com/civicrm/civicrm-core/pull/17962), + [17964](https://github.com/civicrm/civicrm-core/pull/17964), + [17959](https://github.com/civicrm/civicrm-core/pull/17959), and + [17985](https://github.com/civicrm/civicrm-core/pull/17985))** + +- **CRM_Core_Key::valid() does backwards comparison + ([dev/core#1918](https://lab.civicrm.org/dev/core/-/issues/1918): + [18007](https://github.com/civicrm/civicrm-core/pull/18007))** + + This removes legacy code that appeared to attempt to check for a valid + quickForm key but wasn't effectively doing so. + +- **Upgrade fails for 4.6 => 5.29 during status-check + ([dev/core#1932](https://lab.civicrm.org/dev/core/-/issues/1932): + [18085](https://github.com/civicrm/civicrm-core/pull/18085))** + +- **Installation doclinks not getting url-rewritten + ([18175](https://github.com/civicrm/civicrm-core/pull/18175))** + + Links to the new installation documentation are now handled in the same way as + other documentation sites. + +- **Wrap multi record custom field inside a div + ([17966](https://github.com/civicrm/civicrm-core/pull/17966))** + +- **Fixed filling default values for tagssets in the advanced search form + ([17978](https://github.com/civicrm/civicrm-core/pull/17978))** + +- **Simplify caching of status checks + ([17817](https://github.com/civicrm/civicrm-core/pull/17817))** + +- **Ensure custom field checkboxes are populated in profiles + ([17977](https://github.com/civicrm/civicrm-core/pull/17977))** + +- **Upgrade PEAR/mail_mime package to be compliant with PHP7.4 and deploy it + using composer ([17948](https://github.com/civicrm/civicrm-core/pull/17948))** + +- **Setup UI - Validate that at least one "Component" is enabled + ([17778](https://github.com/civicrm/civicrm-core/pull/17778))** + + This prevents you from proceeding with installation without enabling at least + one component. Not enabling any components causes a messy failed + installation. + +- **Call apiv4 from Contribution create rather than fugly addActivity function + ([17881](https://github.com/civicrm/civicrm-core/pull/17881))** + +- **Search debug ([17887](https://github.com/civicrm/civicrm-core/pull/17887))** + +- **Simplify flushing group contact cache query to reduce table locking and + improve performance + ([17846](https://github.com/civicrm/civicrm-core/pull/17846))** + +- **Make api get upgrade-safe + ([17729](https://github.com/civicrm/civicrm-core/pull/17729))** + + This avoids database errors when the code and database versions don't match by + preventing the API from accessing fields that are unsupported in the database. + +- **CheckEnv - Give new installs a grace period before 'Cron Not Running' msg + ([17800](https://github.com/civicrm/civicrm-core/pull/17800))** + + The system check will lower the severity of the "cron not running" check for + the first 24 hours after a site has been installed. + +- **Sort permittedActivityTypes + ([17794](https://github.com/civicrm/civicrm-core/pull/17794))** + + This improves performance on filtering activity types by making it possible to + compare a list of permitted types with the overall list of activity type IDs. + +- **APIv4 - Fix saving custom fields with same name + ([17791](https://github.com/civicrm/civicrm-core/pull/17791))** + +- **Status Checks - Use more specific label regarding "Domain"/"Organization" + check ([17776](https://github.com/civicrm/civicrm-core/pull/17776))** + +- **SQL temp table not using utf8mb4 if server default already set to utf8mb4 + ([18012](https://github.com/civicrm/civicrm-core/pull/18012))** + +- **Wrong link to admin page in error message about FROM address on PCP page + ([17996](https://github.com/civicrm/civicrm-core/pull/17996))** + +- **Fix sticky table header on "Find Activities" page + ([17917](https://github.com/civicrm/civicrm-core/pull/17917))** + +- **Fixed DB Error: syntax error if line item refers to civicrm_case + ([16626](https://github.com/civicrm/civicrm-core/pull/16626))** + +- **Fix potential js error on summary screen when reloading blocks + ([17865](https://github.com/civicrm/civicrm-core/pull/17865))** + +- **Fix 'Undefined variable: jsSet in CRM_Core_BAO_Mapping::loadSavedMapping()' + ([17816](https://github.com/civicrm/civicrm-core/pull/17816))** + +- **Fixed notice error on Relationships report + ([17787](https://github.com/civicrm/civicrm-core/pull/17787))** + +- **Fix obscure dedupe scenario where 'bad' location data can overwrite good + data ([17993](https://github.com/civicrm/civicrm-core/pull/17993))** + +- **Fix JQuery Validation for radios + ([17937](https://github.com/civicrm/civicrm-core/pull/17937))** + +### CiviCase + +- **Fix case activity field set to allow long details to be exported + ([17970](https://github.com/civicrm/civicrm-core/pull/17970))** + +- **Case export has two fields that are not what they say they are + ([dev/core#1916](https://lab.civicrm.org/dev/core/-/issues/1916): + [18043](https://github.com/civicrm/civicrm-core/pull/18043))** + +- **Collapsed custom field set for activities with a required radio makes case + activity buttons seem disabled + ([dev/core#1928](https://lab.civicrm.org/dev/core/-/issues/1928): + [18080](https://github.com/civicrm/civicrm-core/pull/18080))** + +- **CRM_Utils_Check_Component_Case - Guard against post-upgrade crash + ([17944](https://github.com/civicrm/civicrm-core/pull/17944))** + +### CiviContribute + +- **Define the logic that sets (or not) contribution receive_date in relation to + payments + ([dev/financial#139](https://lab.civicrm.org/dev/financial/-/issues/139): + [17777](https://github.com/civicrm/civicrm-core/pull/17777) and + [18000](https://github.com/civicrm/civicrm-core/pull/18000))** + + This undoes a regression where the contribution date of a pay-later + contribution would change when a payment completes the contribution. The + contribution date is the accrual date and is distinct from the date the + contribution is entered and the date when all payments have been received. + + In the process, this changes the "Update pending contribution status" search + action to be "Record payments for contributions". The result is generally the + same, but the status change comes about because the payments complete the + contributions. You can modify contribution statuses in bulk with a profile by + using the "Update multiple contributions" action. + +- **Disable frequency/interval fields if not required. Mark required if they are + so they are validated before submit + ([17526](https://github.com/civicrm/civicrm-core/pull/17526))** + + The frequency and interval fields for recurring contributions now use jQuery + validation to disable or require them as appropriate. + +- **Paypal IPN sometimes fails to update the next scheduled payment date when + recording the latest recurring payment + ([dev/core#1679](https://lab.civicrm.org/dev/core/-/issues/1679): + [17744](https://github.com/civicrm/civicrm-core/pull/17744))** + +- **Contribution Details Statistics are multiplied under many circumstances + ([dev/report#21](https://lab.civicrm.org/dev/report/-/issues/21): + [15435](https://github.com/civicrm/civicrm-core/pull/15435) and + [17809](https://github.com/civicrm/civicrm-core/pull/17809))** + +- **Contribution Summary Report: The "general total" row does not take the + currency filtered + ([dev/report#27](https://lab.civicrm.org/dev/report/-/issues/27): + [16736](https://github.com/civicrm/civicrm-core/pull/16736))** + + When the contribution summary report is used by filtering for a currency other + than the site's default currency, the "grand total" row shows the sign of the + default currency instead of the filtered currency. + +- **Fix PaypalIPN single function to not receive-by-reference + ([18044](https://github.com/civicrm/civicrm-core/pull/18044))** + +- **Allow Failed -> Completed status for contributions + ([dev/core#1906](https://lab.civicrm.org/dev/core/-/issues/1906): + [17943](https://github.com/civicrm/civicrm-core/pull/17943))** + +- **Fix currency symbol for Total Amount on contribution page + ([17703](https://github.com/civicrm/civicrm-core/pull/17703))** + + This resolves a but where the total amount would show the default system + currency symbol regardless of the currency configured on the contribution + page. + +- **On behalf label / Honoree Title / Honoree Description not translatable on + contribution page + ([dev/core#1280](https://lab.civicrm.org/dev/core/-/issues/1280): + [16838](https://github.com/civicrm/civicrm-core/pull/16838))** + +- **Load contribution page if live payment processor is disabled but test is + available ([17828](https://github.com/civicrm/civicrm-core/pull/17828))** + +- **Remove requirement to pass 'contribution_status_id' => Pending from + order.create ([18018](https://github.com/civicrm/civicrm-core/pull/18018))** + +- **Use saved contribution's line items rather than the primaryContributionID + ([18033](https://github.com/civicrm/civicrm-core/pull/18033))** + +- **Do not overwrite values saved from the repeatContribution routine + ([17972](https://github.com/civicrm/civicrm-core/pull/17972))** + +- **"Contribution Source" profile field has no effect on new contribution + ([dev/core#1902](https://lab.civicrm.org/dev/core/-/issues/1902): + [17930](https://github.com/civicrm/civicrm-core/pull/17930))** + +- **Incorrect check for "soft_credit" after making pcp donation + ([dev/core#1915](https://lab.civicrm.org/dev/core/-/issues/1915): + [18002](https://github.com/civicrm/civicrm-core/pull/18002))** + +- **Total Tax Amount on the Contribution (generated in backoffice/offline) no + longer adds up to sum of the Tax Amount for the individual line items + ([dev/core#1983](https://lab.civicrm.org/dev/core/-/issues/1983): + [18290](https://github.com/civicrm/civicrm-core/pull/18290))** + +- **Downloaded Invoice activity attaches non wkhtmltopdf invoice + ([dev/core#1922](https://lab.civicrm.org/dev/core/-/issues/1922): + [18056](https://github.com/civicrm/civicrm-core/pull/18056))** + + Downloading an invoice would ignore whether wkhtmltopdf was configured and + always use dompdf. + +- **Fix repeattransaction api to use custom data from the template contribution + ([17975](https://github.com/civicrm/civicrm-core/pull/17975))** + + The Contribution.repeattransaction API will now copy custom data from the + template rather than the earliest related contribution. + +### CiviEvent + +- **Can't meaningfully disable self-service transfer/cancellation once enabled + ([dev/event#35](https://lab.civicrm.org/dev/event/-/issues/35): + [18040](https://github.com/civicrm/civicrm-core/pull/18040))** + +- **Event registration form has inconsistent labeling + ([dev/event#38](https://lab.civicrm.org/dev/event/-/issues/38): + [17695](https://github.com/civicrm/civicrm-core/pull/17695))** + +- **Event cart hidden/enabled in buildkit 5.29 RC + ([dev/event#40](https://lab.civicrm.org/dev/event/-/issues/40): + [18101](https://github.com/civicrm/civicrm-core/pull/18101))** + + Ensures that the Event Cart functionality defaults to off. + +### CiviMail + +- **Remove URL-tracking in mass SMS + ([dev/core#1843](https://lab.civicrm.org/dev/core/-/issues/1843): + [17700](https://github.com/civicrm/civicrm-core/pull/17700))** + + Rewritten URLs were confusing and made SMS messages unnecessarily long. There + also have never been SMS tracking reports to use them anyway. + +- **Test mailings create new contacts even when "Add Contacts" permission is not + present. ([dev/mail#70](https://lab.civicrm.org/dev/mail/-/issues/70): + [17867](https://github.com/civicrm/civicrm-core/pull/17867))** + + Ensures contacts are not created when a user without permissions to create + contacts sends a test email. + +- **Mailing Subscription form does not validate reCAPTCHA + ([dev/core#1755](https://lab.civicrm.org/dev/core/-/issues/1755): + [17305](https://github.com/civicrm/civicrm-core/pull/17305))** + +- **Text version of unsubscribed email is missing the link to resubscribe + ([dev/core#1919](https://lab.civicrm.org/dev/core/-/issues/1919): + [18015](https://github.com/civicrm/civicrm-core/pull/18015))** + +- **Add CiviMail synchronisation frequency setting + (in support of [dev/core#1768](https://lab.civicrm.org/dev/core/-/issues/1768): + [17709](https://github.com/civicrm/civicrm-core/pull/17709))** + + This adds a setting for updating how frequently the database should be updated + with the status of emails that have been sent. Updating the database more + frequently can slow the process down, but it reduces the likelihood that a + recipient will be re-emailed when recovering from a stalled mailing. + +- **Mark the new routes for "open.php" and "url.php" as public + ([17813](https://github.com/civicrm/civicrm-core/pull/17813))** + + This denotes the paths for open and URL tracking as "public" pages as they are + meant to be used by unauthenticated email clients and recipients. + +### CiviMember + +- **Decimal Separator - Invalid value "total_amount" (NaN,N) creating or editing + a membership ([dev/core#1113](https://lab.civicrm.org/dev/core/-/issues/1113): + [16429](https://github.com/civicrm/civicrm-core/pull/16429))** + +- **Offline Membership Renewal Tax Calculation is incorrect [regression] + ([dev/core#1972](https://lab.civicrm.org/dev/core/-/issues/1972): + [18271](https://github.com/civicrm/civicrm-core/pull/18271))** + +### Drupal Integration + +- **Drupal 8 - Using Create User Record action on a contact with no email is too + quiet. Also CRM_Core_Session::setStatus is sometimes ignored. + ([dev/drupal#127](https://lab.civicrm.org/dev/drupal/-/issues/127): + [17914](https://github.com/civicrm/civicrm-core/pull/17914) and + [17915](https://github.com/civicrm/civicrm-core/pull/17915))** + + Require email when adding a user and ensure that errors show. + +- **The following PHP variables are not set: $_SERVER[HTTP_HOST] + ([dev/core#750](https://lab.civicrm.org/dev/core/-/issues/750): + [17636](https://github.com/civicrm/civicrm-core/pull/17636))** + + Skip the server variable checks if running in a CLI environment, removing an + error when running Drush commands against Drupal 8 and Drupal 9 based sites. + +- **Can't find reCAPTCHA in Drupal 8 + ([dev/core#1871](https://lab.civicrm.org/dev/core/-/issues/1871): + [17822](https://github.com/civicrm/civicrm-core/pull/17822))** + +- **Fixed for multi-select filter + ([615](https://github.com/civicrm/civicrm-drupal/pull/615))** + + This fixes filters for multi-select fields in Views. + +- **Fix URL for file field + ([608](https://github.com/civicrm/civicrm-drupal/pull/608))** + + This fixes the generated URL for file fields in Views. + +### Wordpress Integration + +- **[civicrm.files] token doesn't work in some cases since 5.27 + ([dev/wordpress#66](https://lab.civicrm.org/dev/wordpress/-/issues/66): + [18068](https://github.com/civicrm/civicrm-core/pull/18068))** + + Ensures the [civicrm.files] token plays nice for sites with older WordPress + file directory set ups. + +- **CiviCRM and the WordPress Pods plugin (since version 2.7.13) is incompatible + due to Pods including marionette v3.3.1 for backbone, newer than CiviCRM's + bundled marionette v1.0.3 + ([dev/core#1090](https://lab.civicrm.org/dev/core/-/issues/1090): + [17855](https://github.com/civicrm/civicrm-core/pull/17855))** + + Ensures CiviCRM plays nicely with recent versions of Elementor Plugin. + +- **Fix PHP notice on WordPress permissions form + ([17758](https://github.com/civicrm/civicrm-core/pull/17758))** + +- **Slow down the frequency of WordPress "heartbeat" calls in CiviCRM admin + ([dev/wordpress#67](https://lab.civicrm.org/dev/wordpress/-/issues/67): + [214](https://github.com/civicrm/civicrm-wordpress/pull/214))** + +- **Be more forgiving about slash in wpBasePage ([dev/wordpress#73](https://lab.civicrm.org/dev/wordpress/issues/73): + [18332](https://github.com/civicrm/civicrm-core/pull/18332))** + +## <a name="misc"></a>Miscellany + +- **APIv4 - Add BasicEntity helper class + ([17899](https://github.com/civicrm/civicrm-core/pull/17899))** + +- **Bump minimum upgradable version to 4.4.7 + ([17750](https://github.com/civicrm/civicrm-core/pull/17750))** + +- **Update version in the test_data_second_domain file and also update the + setVersion script to update the file version as necessary + ([17897](https://github.com/civicrm/civicrm-core/pull/17897))** + +- **Be a little less supportive to cvs + ([17896](https://github.com/civicrm/civicrm-core/pull/17896))** + +- **Replace a load of references to the wiki with docs links + ([17900](https://github.com/civicrm/civicrm-core/pull/17900))** + +- **Remove unneccessary isoToDate function + ([dev/core#1921](https://lab.civicrm.org/dev/core/-/issues/1921): + [18025](https://github.com/civicrm/civicrm-core/pull/18025))** + +- **CRM_Activity_Form_SearchTest::testQill can fail semi-randomly + ([dev/core#1894](https://lab.civicrm.org/dev/core/-/issues/1894): + [17902](https://github.com/civicrm/civicrm-core/pull/17902))** + +- **Test for fatal error on new individual form + ([dev/core#1874](https://lab.civicrm.org/dev/core/-/issues/1874): + [17835](https://github.com/civicrm/civicrm-core/pull/17835))** + +- **Bump lodash from 4.17.15 to 4.17.19 + ([17858](https://github.com/civicrm/civicrm-core/pull/17858))** + +- **Update regen.sh with new & upcoming core extensions + ([17839](https://github.com/civicrm/civicrm-core/pull/17839))** + +- **APIv4 - Add activity contacts to APIv4 field spec + ([17766](https://github.com/civicrm/civicrm-core/pull/17766))** + +- **Adjust mysql SET NAMES in remaining places as we agreed this was the go + ([17825](https://github.com/civicrm/civicrm-core/pull/17825))** + +- **CRM_Utils_SQL - Add "onDuplicate()" and "syncInto()" helpers + ([17780](https://github.com/civicrm/civicrm-core/pull/17780))** + +- **Improve efficiency of findFiles + ([17745](https://github.com/civicrm/civicrm-core/pull/17745))** + +- **APIv4 Explorer: Improve selection of fields for HAVING + ([17746](https://github.com/civicrm/civicrm-core/pull/17746))** + +- **Convert CRM.utils.formatDate tests to karma + ([17757](https://github.com/civicrm/civicrm-core/pull/17757))** + +- **Teach CRM.utils.formatDate to also show time + ([17684](https://github.com/civicrm/civicrm-core/pull/17684))** + +- **CRM_Utils_Hook: deprecation warning and short array syntax + ([17995](https://github.com/civicrm/civicrm-core/pull/17995))** + +- **Remove check for valid email in synchronizeUFMatch + ([17771](https://github.com/civicrm/civicrm-core/pull/17771))** + +- **Remove unused "ufUniqID" session variable + ([17904](https://github.com/civicrm/civicrm-core/pull/17904))** + +- **Remove duplicate cache flush + ([17988](https://github.com/civicrm/civicrm-core/pull/17988))** + +- **Remove extraneous opportunistic cache flush. + ([17936](https://github.com/civicrm/civicrm-core/pull/17936))** + +- **Hooks/Dispatcher - Close loopholes that occur around "preboot" hooks + ([17831](https://github.com/civicrm/civicrm-core/pull/17831))** + +- **Use PrematureExit exception instead of weird hack in tests + ([17870](https://github.com/civicrm/civicrm-core/pull/17870))** + +- **Remove unnecessary try/catch per #17729 + ([17823](https://github.com/civicrm/civicrm-core/pull/17823))** + +- **handlePaymentNotification() should not be declared as a static method + ([17849](https://github.com/civicrm/civicrm-core/pull/17849))** + +- **MembershipRenewalTest - Fix failure + ([17830](https://github.com/civicrm/civicrm-core/pull/17830))** + +- **Remove hard coded charset. + ([17826](https://github.com/civicrm/civicrm-core/pull/17826))** + +- **getLoggedInContactID() is a static function + ([17783](https://github.com/civicrm/civicrm-core/pull/17783))** + +- **Remove PaymentExpress ipn class + ([17763](https://github.com/civicrm/civicrm-core/pull/17763))** + +- **Remove unused, deprecated functions + ([17761](https://github.com/civicrm/civicrm-core/pull/17761))** + +- **CIVICRM_BAO_CACHE_ADAPTER - Remove obsolete option + ([17990](https://github.com/civicrm/civicrm-core/pull/17990))** + +- **More unused functions in GenCode + ([17756](https://github.com/civicrm/civicrm-core/pull/17756))** + +- **Temporary tables should follow consistent naming convention + ([dev/core#183](https://lab.civicrm.org/dev/core/-/issues/183): + [17827](https://github.com/civicrm/civicrm-core/pull/17827))** + +- **CRM_Core_BAO_Cache - Remove functions deprecated a year ago + ([17989](https://github.com/civicrm/civicrm-core/pull/17989))** + +- **Fix all core processors to implement doPayment and not doTransferPayment or + doDirectPayment + ([https://lab.civicrm.org/dev/financial/-/issues/135](https://lab.civicrm.org/dev/financial/-/issues/135): + [18078](https://github.com/civicrm/civicrm-core/pull/18078) and + [18072](https://github.com/civicrm/civicrm-core/pull/18072))** + +- **[REF] Extract setUserContext on contribution form & cleanup on backend add + membership form + ([17968](https://github.com/civicrm/civicrm-core/pull/17968))** + +- **[REF] remove unnecessary variable variables + ([17903](https://github.com/civicrm/civicrm-core/pull/17903))** + +- **[REF] - Add helper function for the repetitive task of fetching multilingual + ([17650](https://github.com/civicrm/civicrm-core/pull/17650))** + +- **[REF] Unit test attempt to create reported bugs , minor cleanup + ([17560](https://github.com/civicrm/civicrm-core/pull/17560))** + +- **[REF] Extract addToRecentItems from membership create + ([17524](https://github.com/civicrm/civicrm-core/pull/17524))** + +- **[REF] Fix a couple of jQuery errors that have cropped up + ([17871](https://github.com/civicrm/civicrm-core/pull/17871))** + +- **[REF] regen.sh - Remove unusual handling of `zipcodes.mysql` + ([17869](https://github.com/civicrm/civicrm-core/pull/17869))** + +- **[REF] ScheduledJob cleanup, remove unused var + ([17862](https://github.com/civicrm/civicrm-core/pull/17862))** + +- **[REF] Migrate Event Cart Setting into the Extension + ([17841](https://github.com/civicrm/civicrm-core/pull/17841))** + +- **[REF] Only printOnly once + ([17850](https://github.com/civicrm/civicrm-core/pull/17850))** + +- **[REF] APIv4 ConformanceTest - Split apart into per-entity sub-tests + ([17845](https://github.com/civicrm/civicrm-core/pull/17845))** + +- **[REF] WebsiteTest - Mitigate flaky failures + ([17833](https://github.com/civicrm/civicrm-core/pull/17833))** + +- **[REF] Follow up cleanup + ([17788](https://github.com/civicrm/civicrm-core/pull/17788))** + +- **[REF] Remove ACL join on temp table creation in Member ContributionDetail + report ([17723](https://github.com/civicrm/civicrm-core/pull/17723))** + +- **[REF] Do or do not - there is no try + ([17795](https://github.com/civicrm/civicrm-core/pull/17795))** + +- **[REF] Unused interface CRM_Report_Interface + ([17767](https://github.com/civicrm/civicrm-core/pull/17767))** + +- **[REF] - Cleanup StatusPreference BAO to be more standard + ([17801](https://github.com/civicrm/civicrm-core/pull/17801))** + +- **[REF] Reduce interaction between dedupe code and createProfileContact + ([17920](https://github.com/civicrm/civicrm-core/pull/17920))** + +- **[REF] Simplify field reference + ([17941](https://github.com/civicrm/civicrm-core/pull/17941))** + +- **[REF] [Test] Minor simplification on test + ([18019](https://github.com/civicrm/civicrm-core/pull/18019))** + +- **[REF] Simplify is_email_receipt in sendMail + ([18029](https://github.com/civicrm/civicrm-core/pull/18029))** + +- **[REF] Remove transaction from BaseIPN completeTransaction call + ([18042](https://github.com/civicrm/civicrm-core/pull/18042))** + +- **[REF] Simplify membership status date handling + ([18030](https://github.com/civicrm/civicrm-core/pull/18030))** + +- **[REF] Clean up handling of financial_type_id override + ([18032](https://github.com/civicrm/civicrm-core/pull/18032))** + +- **[REF] Remove transaction from completeOrder signature + ([18046](https://github.com/civicrm/civicrm-core/pull/18046))** + +- **[REF] Remove transaction instantiation in PaypalPro + ([18026](https://github.com/civicrm/civicrm-core/pull/18026))** + +- **[REF] Stop instantiating transaction in PaypalIPN + ([18020](https://github.com/civicrm/civicrm-core/pull/18020))** + +- **[REF] Remove pass-by-reference & always empty param + ([17984](https://github.com/civicrm/civicrm-core/pull/17984))** + +- **[REF] Tighten up function signature for dedupePair + ([17923](https://github.com/civicrm/civicrm-core/pull/17923))** + +- **[REF] Move noisily deprecate BaseIPN->sendMail, call api from it rather + than BAO function + ([17982](https://github.com/civicrm/civicrm-core/pull/17982))** + +- **[REF] Use CRM_Utils_Mail::send for sending emails for confirming unsubscribe + resubscribe auto replies and subscribing + ([17396](https://github.com/civicrm/civicrm-core/pull/17396))** + +- **[REF] Reduce calls to CRM_Member_PseudoConstant::membershipType + ([17987](https://github.com/civicrm/civicrm-core/pull/17987))** + +- **[REF] Use Standard function cacheClause to re-use contact acl cache table + ([17707](https://github.com/civicrm/civicrm-core/pull/17707))** + +- **[REF] Make explicit what we are doing with 'values' in this code + ([17979](https://github.com/civicrm/civicrm-core/pull/17979))** + +- **[REF] Minor code clean up + ([17974](https://github.com/civicrm/civicrm-core/pull/17974))** + +- **[REF] Grant cleanup + ([17967](https://github.com/civicrm/civicrm-core/pull/17967))** + +- **[REF] Refactor to use the standard CRM_Core_Form::addRadio function for a + number of radio elements + ([17932](https://github.com/civicrm/civicrm-core/pull/17932))** + +- **[REF] Fix the default to_financial_account_id for generated transactions + ([17938](https://github.com/civicrm/civicrm-core/pull/17938))** + +- **[REF] Upgrade dompdf version to be more compatible with PHP7.4 + ([17946](https://github.com/civicrm/civicrm-core/pull/17946))** + +- **[REF] [Tests] Cleanup test declaration to take advantage of mapping + improvements ([17939](https://github.com/civicrm/civicrm-core/pull/17939))** + +- **[REF] Remove unnecessary complexity on im export + ([17949](https://github.com/civicrm/civicrm-core/pull/17949))** + +- **[REF] GroupContact BAO - Minor code cleanup + ([17928](https://github.com/civicrm/civicrm-core/pull/17928))** + +- **[REF] Minor function signuture cleanup + ([17922](https://github.com/civicrm/civicrm-core/pull/17922))** + +- **[REF] Do not pass variable by reference + ([17921](https://github.com/civicrm/civicrm-core/pull/17921))** + +- **[REF] remove first attempt to set currency in repeattransaction flow + ([18055](https://github.com/civicrm/civicrm-core/pull/18055))** + +- **[REF] Even less variable variables + ([18058](https://github.com/civicrm/civicrm-core/pull/18058))** + +- **[REF] Move handling of form elements back to the Form + ([17981](https://github.com/civicrm/civicrm-core/pull/17981))** + +- **[REF] Simplify location metadata handling in Export class + ([17951](https://github.com/civicrm/civicrm-core/pull/17951))** + +- **[REF] Do not pass by reference to the recur function + ([18057](https://github.com/civicrm/civicrm-core/pull/18057))** + +- **[REF] Simplify getMembershipStatusByDate more + ([18051](https://github.com/civicrm/civicrm-core/pull/18051))** + +- **[REF] Remove mail_mime package as now supplied by composer + ([300](https://github.com/civicrm/civicrm-packages/pull/300))** + +- **[REF] Remove some deprecated size function calls replaced with length + ([299](https://github.com/civicrm/civicrm-packages/pull/299))** + +- **Refactor "applyLocale" and remove references to "language" column in UFMatch + table ([18049](https://github.com/civicrm/civicrm-core/pull/18049))** + +- **[NFC] Fix provider unit test on PHP7.4 + ([18073](https://github.com/civicrm/civicrm-core/pull/18073))** + +- **[NFC] Docblock cleanup + ([610](https://github.com/civicrm/civicrm-drupal/pull/610))** + +- **[NFC] Update versions file to remove reference to Mail_mime and Mail + ([301](https://github.com/civicrm/civicrm-packages/pull/301))** + +- **[NFC] Re run regen after recent merges + ([17842](https://github.com/civicrm/civicrm-core/pull/17842))** + +- **[NFC] Fix nonstandard header comments + ([17880](https://github.com/civicrm/civicrm-core/pull/17880))** + +- **[NFC] Add in a unit test of calling the contribution page widget endpoint + and remove unneeded file + ([17965](https://github.com/civicrm/civicrm-core/pull/17965))** + +- **[NFC] Improve docs for APIv4 Save action + ([18004](https://github.com/civicrm/civicrm-core/pull/18004))** + +- **[NFC] Docblock cleanup + ([17945](https://github.com/civicrm/civicrm-core/pull/17945))** + +- **[NFC] Update a few doc/wiki links in code comments + ([17918](https://github.com/civicrm/civicrm-core/pull/17918))** + +- **[NFC] Comment block cleanup + ([17872](https://github.com/civicrm/civicrm-core/pull/17872))** + +- **[Test] Update hook signature in test + ([609](https://github.com/civicrm/civicrm-drupal/pull/609))** + +- **[Test] Attempt to replicate #17852 + ([18038](https://github.com/civicrm/civicrm-core/pull/18038))** + +- **[Test fix] We might need this to ensure really quick test runs don't fail + ([18045](https://github.com/civicrm/civicrm-core/pull/18045))** + +- **Add testing to Authorize.net and remove the lines that are repeated + ([18028](https://github.com/civicrm/civicrm-core/pull/18028))** + +- **Add test on status calculation + ([18037](https://github.com/civicrm/civicrm-core/pull/18037))** + +- **Fix for failing test + ([18036](https://github.com/civicrm/civicrm-core/pull/18036))** + +- **[Test framework] re-re-fix test and add test for test + ([18013](https://github.com/civicrm/civicrm-core/pull/18013))** + +- **Re-fix test ([18009](https://github.com/civicrm/civicrm-core/pull/18009))** + +- **[Test framework] - Update failing test + ([18003](https://github.com/civicrm/civicrm-core/pull/18003))** + +- **[Test framework] - Combine triplicate createCase functions + ([17957](https://github.com/civicrm/civicrm-core/pull/17957))** + +- **Remove error checking by-pass in tests + ([17940](https://github.com/civicrm/civicrm-core/pull/17940))** + +- **[Test Framework] - Tests for report downloads + ([17892](https://github.com/civicrm/civicrm-core/pull/17892))** + +- **api_v3_TaxContributionPageTest - Remove hard coded processor id + ([17860](https://github.com/civicrm/civicrm-core/pull/17860))** + +- **API tests - label versions in dataprovider versionThreeAndFour + ([17847](https://github.com/civicrm/civicrm-core/pull/17847))** + +- **Extract code to set isEmailReceipt in Contribution.completeOrder + ([18039](https://github.com/civicrm/civicrm-core/pull/18039))** + +- **Do not pass-by-reference to recur function + ([18071](https://github.com/civicrm/civicrm-core/pull/18071))** + +- **Unused functions in GenCode + ([17753](https://github.com/civicrm/civicrm-core/pull/17753))** + +- **Fix typo in templates/CRM/Report/Form/Tabs/GroupBy.tpl + ([17747](https://github.com/civicrm/civicrm-core/pull/17747))** + +- **Remove unused "ufUniqID" session variable + ([213](https://github.com/civicrm/civicrm-wordpress/pull/213))** + +- **Remove Net packages Net_Curl Net_DIME as they do not appear to be used + ([294](https://github.com/civicrm/civicrm-packages/pull/294))** + +- **Update contributor key for Andrew + ([18230](https://github.com/civicrm/civicrm-core/pull/18230))** + +- **Fix qill typo + ([18041](https://github.com/civicrm/civicrm-core/pull/18041))** + +- **Update flexmailer release information + ([17912](https://github.com/civicrm/civicrm-core/pull/17912))** + +- **Remove invalid use of crmMoney formatter + ([18031](https://github.com/civicrm/civicrm-core/pull/18031))** + +- **Remove main PaymentExpress class + ([18010](https://github.com/civicrm/civicrm-core/pull/18010))** + +- **Remove unused parameter ids['billing'] + ([18021](https://github.com/civicrm/civicrm-core/pull/18021))** + +- **Cache loader - remove legacy handling, handle null result from setting + ([17999](https://github.com/civicrm/civicrm-core/pull/17999))** + +- **Use case id to get relationship for activity creation + ([17256](https://github.com/civicrm/civicrm-core/pull/17256) and + [17764](https://github.com/civicrm/civicrm-core/pull/17764))** + +## <a name="credits"></a>Credits + +This release was developed by the following code authors: + +AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Justin Freeman; +Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma, +Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; +Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Fuzion - Jitendra +Purohit; iXiam - César Ramos, Diego Muñio; JMA Consulting - Monish Deb, Seamus +Lee; John Kingsnorth; Joinery - Allen Shaw; Lighthouse Consulting and Design - +Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MillerTech - +Chamil Wijesooriya; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire; +Progressive Technology Project - Jamie McClelland; Squiffle Consulting - Aidan +Saunders; Stephen Palmstrom; Tadpole Collective - Kevin Cristiano; Timbsoft +Technologies - Tunbola Ogunwande; Wikimedia Foundation - Eileen McNaughton + +Most authors also reviewed code for this release; in addition, the following +reviewers contributed their comments: + +Agileware - Pengyi Zhang; Andrew Thompson; Artful Robot - Rich Lott; Australian +Greens - Andrew Cormick-Dockery, John Twyman; Bastien Ho; Blackfly Solutions - +Alan Dixon; Carlos Capote; CompuCorp - Jamie Novick; DevApp - Adam Kwiatkowski; +Francesc Bassas i Bullich; Freeform Solutions - Herb van den Dool; Greenpeace +Central and Eastern Europe - Patrick Figel; Irene Meisel; JMA Consulting - Joe +Murray; Korlon - Stuart Gaston; Nicol Wistreich; Rar9; Ray Wright; Semper IT - +Karin Gerritsen; Third Sector Design - Michael McAndrew + +## <a name="feedback"></a>Feedback + +These release notes are edited by Alice Frumin and Andrew 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/Address.setting.php b/civicrm/settings/Address.setting.php index 36264f540a..ab63ea5799 100644 --- a/civicrm/settings/Address.setting.php +++ b/civicrm/settings/Address.setting.php @@ -12,7 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 + * @copyright CiviCRM LLC https://civicrm.org/licensing */ /** diff --git a/civicrm/settings/Campaign.setting.php b/civicrm/settings/Campaign.setting.php index c1cf5273d3..d7efe6ec24 100644 --- a/civicrm/settings/Campaign.setting.php +++ b/civicrm/settings/Campaign.setting.php @@ -12,7 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 + * @copyright CiviCRM LLC https://civicrm.org/licensing */ /** diff --git a/civicrm/settings/Case.setting.php b/civicrm/settings/Case.setting.php index 44dc605569..7b26c26e8a 100644 --- a/civicrm/settings/Case.setting.php +++ b/civicrm/settings/Case.setting.php @@ -12,9 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 - * $Id$ - * + * @copyright CiviCRM LLC https://civicrm.org/licensing */ /** diff --git a/civicrm/settings/Contribute.setting.php b/civicrm/settings/Contribute.setting.php index be0c94a8ef..28874f830c 100644 --- a/civicrm/settings/Contribute.setting.php +++ b/civicrm/settings/Contribute.setting.php @@ -12,8 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 - * + * @copyright CiviCRM LLC https://civicrm.org/licensing * Settings metadata file */ diff --git a/civicrm/settings/Core.setting.php b/civicrm/settings/Core.setting.php index 0f1f8aab13..20b7d50b24 100644 --- a/civicrm/settings/Core.setting.php +++ b/civicrm/settings/Core.setting.php @@ -12,7 +12,7 @@ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2020 + * @copyright CiviCRM LLC https://civicrm.org/licensing */ /** diff --git a/civicrm/settings/Developer.setting.php b/civicrm/settings/Developer.setting.php index 6c18173403..ced086397d 100644 --- a/civicrm/settings/Developer.setting.php +++ b/civicrm/settings/Developer.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Directory.setting.php b/civicrm/settings/Directory.setting.php index 0fb6485db9..51fa9d6bfb 100644 --- a/civicrm/settings/Directory.setting.php +++ b/civicrm/settings/Directory.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Event.setting.php b/civicrm/settings/Event.setting.php index 50477d9136..c7481cb2f2 100644 --- a/civicrm/settings/Event.setting.php +++ b/civicrm/settings/Event.setting.php @@ -19,22 +19,6 @@ * Settings metadata file */ return [ - 'enable_cart' => [ - 'name' => 'enable_cart', - 'group_name' => 'Event Preferences', - 'settings_pages' => ['event' => ['weight' => 10]], - 'group' => 'event', - 'type' => 'Boolean', - 'quick_form_type' => 'CheckBox', - 'default' => '0', - 'add' => '4.1', - 'title' => ts('Use Shopping Cart Style Event Registration'), - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => ts('This feature allows users to register for more than one event at a time. When enabled, users will add event(s) to a "cart" and then pay for them all at once. Enabling this setting will affect online registration for all active events. The code is an alpha state, and you will potentially need to have developer resources to debug and fix sections of the codebase while testing and deploying it'), - 'help_text' => '', - 'documentation_link' => ['page' => 'CiviEvent Cart Checkout', 'resource' => 'wiki'], - ], 'show_events' => [ 'name' => 'show_events', 'group_name' => 'Event Preferences', diff --git a/civicrm/settings/Extension.setting.php b/civicrm/settings/Extension.setting.php index 195de44bd0..180eff4564 100644 --- a/civicrm/settings/Extension.setting.php +++ b/civicrm/settings/Extension.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Localization.setting.php b/civicrm/settings/Localization.setting.php index 9fc65ef10d..dbfbaa38a0 100644 --- a/civicrm/settings/Localization.setting.php +++ b/civicrm/settings/Localization.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Mailing.setting.php b/civicrm/settings/Mailing.setting.php index 2e2640956a..cb0b5ec0b6 100644 --- a/civicrm/settings/Mailing.setting.php +++ b/civicrm/settings/Mailing.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file @@ -369,4 +367,25 @@ return [ 'description' => ts('If checked, mailings will have open tracking enabled by default.'), 'help_text' => NULL, ], + // dev/cor#1768 Allow mailer sync interval to be configured by the + // adminstrator. + 'civimail_sync_interval' => [ + 'group_name' => 'Mailing Preferences', + 'group' => 'mailing', + 'name' => 'civimail_sync_interval', + 'type' => 'Integer', + 'quick_form_type' => 'Element', + 'html_type' => 'text', + 'html_attributes' => [ + 'size' => 4, + 'maxlength' => 8, + ], + 'default' => 10, + 'title' => ts('Database Update Frequency'), + 'add' => '5.28', + 'is_domain' => 1, + 'is_contact' => 0, + 'description' => ts('The frequency that CiviMail updates its sent mail database.'), + 'help_text' => 'CiviMail records email sent at the frequency you specify. If you set it to 1, it will update the database every time it sends an email. This ensures that emails are not resent if the batch job fails, but this may cause a performance hit, particularly for large jobs.', + ], ]; diff --git a/civicrm/settings/Map.setting.php b/civicrm/settings/Map.setting.php index dd474c53cd..5dee60b777 100644 --- a/civicrm/settings/Map.setting.php +++ b/civicrm/settings/Map.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * * Settings metadata file */ return [ diff --git a/civicrm/settings/Member.setting.php b/civicrm/settings/Member.setting.php index c45fd19664..7e5b27b89f 100644 --- a/civicrm/settings/Member.setting.php +++ b/civicrm/settings/Member.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Search.setting.php b/civicrm/settings/Search.setting.php index c9a02e963e..876eafa43b 100644 --- a/civicrm/settings/Search.setting.php +++ b/civicrm/settings/Search.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/settings/Url.setting.php b/civicrm/settings/Url.setting.php index f41f8363ae..6c250b1ee9 100644 --- a/civicrm/settings/Url.setting.php +++ b/civicrm/settings/Url.setting.php @@ -13,8 +13,6 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * */ /* * Settings metadata file diff --git a/civicrm/setup/plugins/blocks/components.tpl.php b/civicrm/setup/plugins/blocks/components.tpl.php index 0c129709b4..2949a48c22 100644 --- a/civicrm/setup/plugins/blocks/components.tpl.php +++ b/civicrm/setup/plugins/blocks/components.tpl.php @@ -2,6 +2,8 @@ endif; ?> <h2 id="components"><?php echo ts('Components'); ?></h2> +<p class="comp-error-required"><?php echo ts('At least one component must be enabled.'); ?></p> + <div> <?php foreach ($model->getField('components', 'options') as $comp => $label): ?> <input class="comp-cb sr-only" style="display: none;" type="checkbox" name="civisetup[components][<?php echo $comp; ?>]" id="civisetup[components][<?php echo $comp; ?>]" <?php echo in_array($comp, $model->components) ? 'checked' : '' ?>> @@ -16,3 +18,11 @@ endif; ?> <strong><?php echo ts('Tip'); ?></strong>: <?php echo ts('Not sure? That\'s OK. After installing, you can enable and disable components at any time.'); ?> </p> + +<script type="text/javascript"> + csj$(function($){ + $('.comp-cb').useValidator(function(){ + $('.comp-error-required').toggleError($('.comp-cb:checked').length == 0); + }); + }); +</script> diff --git a/civicrm/setup/plugins/init/Drupal.civi-setup.php b/civicrm/setup/plugins/init/Drupal.civi-setup.php index 75e7c5a3d4..b24d7c164c 100644 --- a/civicrm/setup/plugins/init/Drupal.civi-setup.php +++ b/civicrm/setup/plugins/init/Drupal.civi-setup.php @@ -59,7 +59,7 @@ if (!defined('CIVI_SETUP')) { // Compute default locale. global $language; - $model->lang = \Civi\Setup\LocaleUtil::pickClosest($language->langcode, $model->getField('lang', 'options')); + $model->lang = \Civi\Setup\LocaleUtil::pickClosest($language->langcode ?? NULL, $model->getField('lang', 'options')); }); function _drupal_civisetup_getPublicFiles() { diff --git a/civicrm/setup/plugins/installDatabase/FlushBackdrop.civi-setup.php b/civicrm/setup/plugins/installDatabase/FlushBackdrop.civi-setup.php index 90a6df7174..1d2f862a50 100644 --- a/civicrm/setup/plugins/installDatabase/FlushBackdrop.civi-setup.php +++ b/civicrm/setup/plugins/installDatabase/FlushBackdrop.civi-setup.php @@ -16,6 +16,13 @@ if (!defined('CIVI_SETUP')) { } \Civi\Setup::log()->info(sprintf('[%s] Flush CMS metadata', basename(__FILE__))); + // If the admin activated the module first, and then ran web-based installer, + // then some hooks (eg hook_menu) may not fire until we fix this flag. + $initialized = &backdrop_static('civicrm_initialize', FALSE); + $failure = &backdrop_static('civicrm_initialize_failure', FALSE); + $initialized = TRUE; + $failure = FALSE; + system_rebuild_module_data(); module_enable(array('civicrm', 'civicrmtheme')); backdrop_flush_all_caches(); diff --git a/civicrm/setup/plugins/installDatabase/FlushDrupal.civi-setup.php b/civicrm/setup/plugins/installDatabase/FlushDrupal.civi-setup.php index d761cb7a33..ef2bb25cc2 100644 --- a/civicrm/setup/plugins/installDatabase/FlushDrupal.civi-setup.php +++ b/civicrm/setup/plugins/installDatabase/FlushDrupal.civi-setup.php @@ -16,6 +16,13 @@ if (!defined('CIVI_SETUP')) { } \Civi\Setup::log()->info(sprintf('[%s] Flush CMS metadata', basename(__FILE__))); + // If the admin activated the module first, and then ran web-based installer, + // then some hooks (eg hook_menu) may not fire until we fix this flag. + $initialized = &drupal_static('civicrm_initialize', FALSE); + $failure = &drupal_static('civicrm_initialize_failure', FALSE); + $initialized = TRUE; + $failure = FALSE; + system_rebuild_module_data(); module_enable(array('civicrm', 'civicrmtheme')); drupal_flush_all_caches(); diff --git a/civicrm/setup/plugins/installDatabase/InstallComponents.civi-setup.php b/civicrm/setup/plugins/installDatabase/InstallComponents.civi-setup.php index e5a6b0b5d6..88170571b5 100644 --- a/civicrm/setup/plugins/installDatabase/InstallComponents.civi-setup.php +++ b/civicrm/setup/plugins/installDatabase/InstallComponents.civi-setup.php @@ -9,6 +9,17 @@ if (!defined('CIVI_SETUP')) { exit("Installation plugins must only be loaded by the installer.\n"); } +Civi\Setup::dispatcher() + ->addListener('civi.setup.checkRequirements', function (\Civi\Setup\Event\CheckRequirementsEvent $e) { + \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'checkRequirements')); + $model = $e->getModel(); + + if (empty($model->components)) { + $e->addError('system', 'components', "System must have at least one active component."); + return; + } + }); + \Civi\Setup::dispatcher() ->addListener('civi.setup.installDatabase', function (\Civi\Setup\Event\InstallDatabaseEvent $e) { \Civi\Setup::log()->info('[InstallComponents.civi-setup.php] Activate components: ' . implode(" ", $e->getModel()->components)); diff --git a/civicrm/setup/plugins/installDatabase/SetLanguage.civi-setup.php b/civicrm/setup/plugins/installDatabase/SetLanguage.civi-setup.php index 62543fd29c..0da89b6b89 100644 --- a/civicrm/setup/plugins/installDatabase/SetLanguage.civi-setup.php +++ b/civicrm/setup/plugins/installDatabase/SetLanguage.civi-setup.php @@ -14,5 +14,11 @@ if (!defined('CIVI_SETUP')) { if ($e->getModel()->lang) { \Civi\Setup::log()->info('[SetLanguage.civi-setup.php] Set default language to ' . $e->getModel()->lang); \Civi::settings()->set('lcMessages', $e->getModel()->lang); + + // Ensure that post-install messages are displayed in the new locale. + // Note: This arguably shouldn't be necessary since `$tsLocale` is generally setup before installation, + // but it may get trampled during bootstrap. + $domain = CRM_Core_BAO_Domain::getDomain(); + \CRM_Core_BAO_ConfigSetting::applyLocale(\Civi::settings($domain->id), $domain->locales); } }, \Civi\Setup::PRIORITY_LATE + 400); diff --git a/civicrm/setup/res/error.html b/civicrm/setup/res/error.html deleted file mode 100644 index 9bfe8e56de..0000000000 --- a/civicrm/setup/res/error.html +++ /dev/null @@ -1,17 +0,0 @@ -<?php \Civi\Setup::assertRunning(); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title><?php echo $errorTitle ?></title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="stylesheet" type="text/css" href=<?php echo $installURLPath . "template.css"?> /> -</head> - -<body> -<div id="All"> - <h1><?php echo $errorTitle ?></h1> - - <?php echo $errorMsg ?> - -</div> -</body> -</html> diff --git a/civicrm/setup/res/finished.Backdrop.php b/civicrm/setup/res/finished.Backdrop.php index 51db493792..68ed482e91 100644 --- a/civicrm/setup/res/finished.Backdrop.php +++ b/civicrm/setup/res/finished.Backdrop.php @@ -1,39 +1,19 @@ <?php \Civi\Setup::assertRunning(); ?> <?php -throw new \Exception("A draft copy of this file is available but has not been tested. Please edit " . __FILE__); - -// FIXME: Compute URL's with backdrop functions (e.g. 'url(...)') -// FIXME: Just echo instead of doing $output silliness. -// FIXME: Use finished.Common.php instead of $commonOutputMessage. - -$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("We have integrated KCFinder with CKEditor and TinyMCE. This allows a user to upload images. All uploaded images are public.") . "</li>"; - -$output = NULL; -$output .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'; -$output .= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'; -$output .= '<head>'; -$output .= '<title>' . ts('CiviCRM Installed') . '</title>'; -$output .= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; -$output .= '<link rel="stylesheet" type="text/css" href="template.css" />'; -$output .= '</head>'; -$output .= '<body>'; -$output .= '<div style="padding: 1em;"><p class="good">' . ts('CiviCRM has been successfully installed') . '</p>'; -$output .= '<ul>'; - -$backdropURL = civicrm_cms_base(); -$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 .= $commonOutputMessage; -$output .= '</ul>'; -$output .= '</div>'; -$output .= '</body>'; -$output .= '</html>'; -echo $output; +$backdropPermissionsURL = url('admin/config/people/permissions'); +$backdropURL = url('civicrm/admin/configtask', [ + 'query' => ['reset' => 1], +]); +?> +<div style="padding: 1em;"> + <h1><?php echo ts('CiviCRM Installed'); ?></h1> + <p class="good"><?php echo ts('CiviCRM has been successfully installed'); ?></p> + <ul> + <li><?php echo 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> + <li><?php echo ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", array(1 => "target='_blank' href='$backdropURL'")); ?></li> + <?php include 'finished.Common.php'; ?> + </ul> +</div> diff --git a/civicrm/setup/res/finished.Drupal.php b/civicrm/setup/res/finished.Drupal.php index 1785f7ad41..2b64ec6bd2 100644 --- a/civicrm/setup/res/finished.Drupal.php +++ b/civicrm/setup/res/finished.Drupal.php @@ -1,22 +1,12 @@ <?php \Civi\Setup::assertRunning(); ?> <?php -throw new \Exception("A draft copy of this file is available but has not been tested. Please edit " . __FILE__); - $drupalPermissionsURL = url('admin/people/permissions'); $drupalURL = url('civicrm/admin/configtask', array( 'query' => array( 'reset' => 1, ), )); -?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <title><?php echo ts('CiviCRM Installed'); ?></title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> - <link rel="stylesheet" type="text/css" href="template.css"/> -</head> -<body> +?> <div style="padding: 1em;"> <h1><?php echo ts('CiviCRM Installed'); ?></h1> <p class="good"><?php echo ts('CiviCRM has been successfully installed'); ?></p> @@ -29,5 +19,3 @@ $drupalURL = url('civicrm/admin/configtask', array( <?php include 'finished.Common.php'; ?> </ul> </div> -</body> -</html> diff --git a/civicrm/setup/res/installer.tpl.php b/civicrm/setup/res/installer.tpl.php new file mode 100644 index 0000000000..e335447270 --- /dev/null +++ b/civicrm/setup/res/installer.tpl.php @@ -0,0 +1,21 @@ +<?php \Civi\Setup::assertRunning(); ?> +<?php +$mainClasses = array( + 'civicrm-setup-body', + count($reqs->getErrors()) ? 'has-errors' : '', + count($reqs->getWarnings()) ? 'has-warnings' : '', + (count($reqs->getErrors()) + count($reqs->getWarnings()) > 0) ? 'has-problems' : '', + (count($reqs->getErrors()) + count($reqs->getWarnings()) === 0) ? 'has-no-problems' : '', +); +?> + +<div class="<?php echo implode(' ', $mainClasses); ?>"> +<div id="All"> + +<form name="civicrm_form" method="post" action="<?php echo str_replace('%7E', '~', $_SERVER['REQUEST_URI']); ?>"> + + <?php echo $ctrl->renderBlocks($_tpl_params); ?> + +</form> +</div> +</div> diff --git a/civicrm/setup/res/jquery.setupui.js b/civicrm/setup/res/jquery.setupui.js new file mode 100644 index 0000000000..e000da4cd0 --- /dev/null +++ b/civicrm/setup/res/jquery.setupui.js @@ -0,0 +1,34 @@ +/** + * This is a jQuery plugin which adds some helpers for the setup UI. + */ +(function($){ + /** + * Enable or disable an error message. + * + * <p id="my-error-message">The world is one fire.</p> + * Ex: $('#my-error-message').toggleError(false) + * + * @param bool isError + */ + $.fn.toggleError = function (isError) { + this.toggleClass('install-validate-ok', !isError) + .toggleClass('install-validate-bad', isError) + .toggleClass('error', isError); + + var errors = $('.install-validate-bad'); + $('#install_button').prop('disabled', errors.length > 0); + return this; + }; + + /** + * Ex: $('.watch-these').useValidator(function(){ + * $('#some-error-message').toggleError(booleanExpression); + * }) + * @param cb + */ + $.fn.useValidator = function(cb) { + cb(); + this.on('change', cb); + return this; + }; +})(jQuery); \ No newline at end of file diff --git a/civicrm/setup/res/page.tpl.php b/civicrm/setup/res/page.tpl.php new file mode 100644 index 0000000000..3b3281cf67 --- /dev/null +++ b/civicrm/setup/res/page.tpl.php @@ -0,0 +1,31 @@ +<?php \Civi\Setup::assertRunning(); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $shortLangCode; ?>" lang="<?php echo $shortLangCode; ?>" dir="<?php echo $textDirection; ?>"> +<head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <title><?php echo htmlentities($pageTitle); ?></title> + <?php foreach ($pageAssets as $pageAsset) { + switch ($pageAsset['type']) { + case 'script-url': + printf("<script type=\"text/javascript\" src=\"%s\"></script>", htmlentities($pageAsset['url'])); + break; + + case 'script-code': + printf("<script type=\"text/javascript\">\n%s\n</script>", $pageAsset['code']); + break; + + case 'style-url': + printf("<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\" />", htmlentities($pageAsset['url'])); + break; + + default: + throw new \Exception("Unrecognized page asset: " . $pageAsset['type']); + + } + } ?> +</head> +<body> + +<?php echo $pageBody; ?> + +</body> +</html> diff --git a/civicrm/setup/res/template.css b/civicrm/setup/res/template.css index 4d05aba3f5..5a2b3ea106 100644 --- a/civicrm/setup/res/template.css +++ b/civicrm/setup/res/template.css @@ -84,7 +84,7 @@ body { padding-bottom: 1.5em; } -.civicrm-setup-body label span { +.civicrm-setup-block-components label span { float: left; width: 120px; } @@ -130,6 +130,13 @@ body { font-size: 80%; } +.civicrm-setup-body .install-validate-ok { + display: none; +} + +.civicrm-setup-body .install-validate-bad { +} + .civicrm-setup-body .reqTable { border-collapse: collapse; width: 100%; @@ -156,7 +163,7 @@ body { .civicrm-setup-body .comp-box { height: 3.5em; - width: 31%; + width: 30%; display: inline-block; padding: 0.5em; padding-top: 15px; @@ -223,6 +230,10 @@ body { .civicrm-setup-body input[type=submit]:hover { background: #60A237; } +.civicrm-setup-body input[type=submit]:disabled { + background: #888; + cursor: not-allowed; +} .civicrm-setup-body .settingsTable input[type=text] { width: 80%; } diff --git a/civicrm/setup/res/template.php b/civicrm/setup/res/template.php deleted file mode 100644 index 4af55b0d3c..0000000000 --- a/civicrm/setup/res/template.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php \Civi\Setup::assertRunning(); ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $short_lang_code; ?>" lang="<?php echo $short_lang_code; ?>" dir="<?php echo $text_direction; ?>"> -<head> - <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> - <title><?php echo ts('CiviCRM Installer'); ?></title> - <script type="text/javascript" src="<?php echo $ctrl->getUrl('jquery.js'); ?>"></script> - <script type="text/javascript"> - window.csj$ = jQuery.noConflict(); - </script> - <link rel="stylesheet" type="text/css" href=<?php echo $installURLPath . "template.css"?> /> - <link rel="stylesheet" type="text/css" href=<?php echo $ctrl->getUrl('font-awesome.css') ?> /> -<?php -if ($text_direction == 'rtl') { - echo " <link rel='stylesheet' type='text/css' href='{$installURLPath}template-rtl.css' />\n"; -} -?> -</head> -<body> - -<?php -$mainClasses = array( - 'civicrm-setup-body', - count($reqs->getErrors()) ? 'has-errors' : '', - count($reqs->getWarnings()) ? 'has-warnings' : '', - (count($reqs->getErrors()) + count($reqs->getWarnings()) > 0) ? 'has-problems' : '', - (count($reqs->getErrors()) + count($reqs->getWarnings()) === 0) ? 'has-no-problems' : '', -); -?> - -<div class="<?php echo implode(' ', $mainClasses); ?>"> -<div id="All"> - -<form name="civicrm_form" method="post" action="<?php echo str_replace('%7E', '~', $_SERVER['REQUEST_URI']); ?>"> - - <?php echo $ctrl->renderBlocks($_tpl_params); ?> - -</form> -</div> -</div> -</body> -</html> diff --git a/civicrm/setup/src/Setup.php b/civicrm/setup/src/Setup.php index fb225ddb25..04dd426b2b 100644 --- a/civicrm/setup/src/Setup.php +++ b/civicrm/setup/src/Setup.php @@ -16,7 +16,7 @@ use Symfony\Component\EventDispatcher\EventDispatcher; class Setup { - const PROTOCOL = '1.0'; + const PROTOCOL = '1.1'; const PRIORITY_START = 2000; const PRIORITY_PREPARE = 1000; diff --git a/civicrm/setup/src/Setup/BasicRunner.php b/civicrm/setup/src/Setup/BasicRunner.php index f0aaaefb16..783f50dee9 100644 --- a/civicrm/setup/src/Setup/BasicRunner.php +++ b/civicrm/setup/src/Setup/BasicRunner.php @@ -11,16 +11,45 @@ class BasicRunner { * it may be easier to work directly with `getCtrl()->run(...)` which * handles inputs/outputs in a more abstract fashion. * - * @param object $ctrl + * @param \Civi\Setup\UI\SetupController $ctrl * A web controller. */ public static function run($ctrl) { $method = $_SERVER['REQUEST_METHOD']; - list ($headers, $body) = $ctrl->run($method, ($method === 'GET' ? $_GET : $_POST)); - foreach ($headers as $k => $v) { + + /** @var \Civi\Setup\UI\SetupResponse $response */ + $response = $ctrl->run($method, ($method === 'GET' ? $_GET : $_POST)); + + self::send($ctrl, $response); + } + + /** + * @param \Civi\Setup\UI\SetupController $ctrl + * @param \Civi\Setup\UI\SetupResponse $response + */ + public static function send($ctrl, $response) { + http_response_code($response->code); + foreach ($response->headers as $k => $v) { header("$k: $v"); } - echo $body; + + /** @var \Civi\Setup\Model $model */ + $model = \Civi\Setup::instance()->getModel(); + + if ($response->isComplete) { + echo $response->body; + } + else { + $pageVars = [ + 'pageAssets' => $response->assets, + 'pageTitle' => $response->title, + 'pageBody' => $response->body, + 'shortLangCode' => \CRM_Core_I18n_PseudoConstant::shortForLong($model->lang), + 'textDirection' => (\CRM_Core_I18n::isLanguageRTL($model->lang) ? 'rtl' : 'ltr'), + ]; + + echo $ctrl->render($ctrl->getResourcePath('page.tpl.php'), $pageVars); + } } } diff --git a/civicrm/setup/src/Setup/LocaleUtil.php b/civicrm/setup/src/Setup/LocaleUtil.php index fe0c9f0e60..f996eb9a66 100644 --- a/civicrm/setup/src/Setup/LocaleUtil.php +++ b/civicrm/setup/src/Setup/LocaleUtil.php @@ -19,6 +19,10 @@ class LocaleUtil { * Ex: 'en_US'. */ public static function pickClosest($preferredLang, $availLangs, $default = 'en_US') { + if ($preferredLang === NULL || $preferredLang === '') { + return $default; + } + // Perhaps we have this exact language? if (isset($availLangs[$preferredLang])) { return $preferredLang; diff --git a/civicrm/setup/src/Setup/UI/SetupController.php b/civicrm/setup/src/Setup/UI/SetupController.php index 0d1d1a0d4a..c7e685f9ff 100644 --- a/civicrm/setup/src/Setup/UI/SetupController.php +++ b/civicrm/setup/src/Setup/UI/SetupController.php @@ -48,9 +48,7 @@ class SetupController implements SetupControllerInterface { * Ex: 'GET' or 'POST'. * @param array $fields * List of any HTTP GET/POST fields. - * @return array - * The HTTP headers and response text. - * [0 => array $headers, 1 => string $body]. + * @return SetupResponse */ public function run($method, $fields = array()) { $this->setup->getDispatcher()->dispatch('civi.setupui.run', new UIBootEvent($this, $method, $fields)); @@ -74,14 +72,12 @@ class SetupController implements SetupControllerInterface { * Ex: 'GET' or 'POST'. * @param array $fields * List of any HTTP GET/POST fields. - * @return array - * The HTTP headers and response text. - * [0 => array $headers, 1 => string $body]. + * @return SetupResponse */ public function runStart($method, $fields) { $checkInstalled = $this->setup->checkInstalled(); if ($checkInstalled->isDatabaseInstalled() || $checkInstalled->isSettingInstalled()) { - return $this->createError("CiviCRM is already installed"); + return $this->renderAlreadyInstalled(); } /** @@ -89,21 +85,14 @@ class SetupController implements SetupControllerInterface { */ $model = $this->setup->getModel(); - $tplFile = $this->getResourcePath('template.php'); + $tplFile = $this->getResourcePath('installer.tpl.php'); $tplVars = [ - 'ctrl' => $this, - 'civicrm_version' => \CRM_Utils_System::version(), - 'installURLPath' => $this->urls['res'], - 'short_lang_code' => \CRM_Core_I18n_PseudoConstant::shortForLong($GLOBALS['tsLocale']), - 'text_direction' => (\CRM_Core_I18n::isLanguageRTL($GLOBALS['tsLocale']) ? 'rtl' : 'ltr'), 'model' => $model, 'reqs' => $this->setup->checkRequirements(), ]; // $body = "<pre>" . htmlentities(print_r(['method' => $method, 'urls' => $this->urls, 'data' => $fields], 1)) . "</pre>"; - $body = $this->render($tplFile, $tplVars); - - return array(array(), $body); + return $this->createPage(ts('CiviCRM Installer'), $this->render($tplFile, $tplVars)); } /** @@ -113,14 +102,12 @@ class SetupController implements SetupControllerInterface { * Ex: 'GET' or 'POST'. * @param array $fields * List of any HTTP GET/POST fields. - * @return array - * The HTTP headers and response text. - * [0 => array $headers, 1 => string $body]. + * @return SetupResponse */ public function runInstall($method, $fields) { $checkInstalled = $this->setup->checkInstalled(); if ($checkInstalled->isDatabaseInstalled() || $checkInstalled->isSettingInstalled()) { - return $this->createError("CiviCRM is already installed"); + return $this->renderAlreadyInstalled(); } $reqs = $this->setup->checkRequirements(); @@ -130,30 +117,34 @@ class SetupController implements SetupControllerInterface { $this->setup->installFiles(); $this->setup->installDatabase(); - - $m = $this->setup->getModel(); - $tplFile = $this->getResourcePath('finished.' . $m->cms . '.php'); - if (file_exists($tplFile)) { - $tplVars = array(); - return array(array(), $this->render($tplFile, $tplVars)); - } - else { - return $this->createError("Installation succeeded. However, the final page ($tplFile) was not available."); - } + return $this->renderFinished(); } /** * Partially bootstrap Civi services (such as localization). */ protected function boot($method, $fields) { + /** @var \Civi\Setup\Model $model */ $model = $this->setup->getModel(); define('CIVICRM_UF', $model->cms); + define('CIVICRM_TEMPLATE_COMPILEDIR', $model->templateCompilePath); + define('CIVICRM_UF_BASEURL', $model->cmsBaseUrl); + + global $civicrm_root; + $civicrm_root = $model->srcPath; // Set the Locale (required by CRM_Core_Config) global $tsLocale; $tsLocale = 'en_US'; + global $civicrm_paths; + foreach ($model->paths as $pathVar => $pathValues) { + foreach (['url', 'path'] as $aspectName => $aspectValue) { + $civicrm_paths[$pathVar][$aspectName] = $aspectValue; + } + } + // CRM-16801 This validates that lang is valid by looking in $langs. // NB: the variable is initial a $_REQUEST for the initial page reload, // then becomes a $_POST when the installation form is submitted. @@ -174,15 +165,43 @@ class SetupController implements SetupControllerInterface { $this->setup->getDispatcher()->dispatch('civi.setupui.boot', new UIBootEvent($this, $method, $fields)); } + /** + * @param string $message + * @param string $title + * @return SetupResponse + */ public function createError($message, $title = 'Error') { - return [ - [], - $this->render($this->getResourcePath('error.html'), [ - 'errorTitle' => htmlentities($title), - 'errorMsg' => htmlentities($message), - 'installURLPath' => $this->urls['res'], - ]), + return $this->createPage($title, sprintf('<h1>%s</h1>\n%s', htmlentities($title), htmlentities($message))); + } + + /** + * @param string $title + * @param string $body + * @return SetupResponse + */ + public function createPage($title, $body) { + /** @var \Civi\Setup\Model $model */ + $model = $this->setup->getModel(); + + $r = new SetupResponse(); + $r->code = 200; + $r->headers = []; + $r->isComplete = FALSE; + $r->title = $title; + $r->body = $body; + $r->assets = [ + ['type' => 'script-url', 'url' => $this->getUrl('jquery.js')], + ['type' => 'script-url', 'url' => $this->urls['res'] . "jquery.setupui.js"], + ['type' => 'script-code', 'code' => 'window.csj$ = jQuery.noConflict();'], + ['type' => 'style-url', 'url' => $this->urls['res'] . "template.css"], + ['type' => 'style-url', 'url' => $this->getUrl('font-awesome.css')], ]; + + if (\CRM_Core_I18n::isLanguageRTL($model->lang)) { + $r->assets[] = ['type' => 'style-url', 'url' => $this->urls['res'] . "template-rtl.css"]; + } + + return $r; } /** @@ -195,6 +214,7 @@ class SetupController implements SetupControllerInterface { * @return string */ public function render($_tpl_file, $_tpl_params = array()) { + $_tpl_params = array_merge($this->getCommonTplVars(), $_tpl_params); extract($_tpl_params); ob_start(); require $_tpl_file; @@ -290,4 +310,34 @@ class SetupController implements SetupControllerInterface { return $this->setup; } + private function renderAlreadyInstalled() { + // return $this->createError("CiviCRM is already installed"); + return $this->renderFinished(); + } + + /** + * @return SetupResponse + */ + private function renderFinished() { + $m = $this->setup->getModel(); + $tplFile = $this->getResourcePath('finished.' . $m->cms . '.php'); + if (file_exists($tplFile)) { + return $this->createPage(ts('CiviCRM Installed'), $this->render($tplFile)); + } + else { + return $this->createError("Installation succeeded. However, the final page ($tplFile) was not available."); + } + } + + /** + * @return array + */ + private function getCommonTplVars() { + return [ + 'ctrl' => $this, + 'civicrm_version' => \CRM_Utils_System::version(), + 'installURLPath' => $this->urls['res'], + ]; + } + } diff --git a/civicrm/setup/src/Setup/UI/SetupResponse.php b/civicrm/setup/src/Setup/UI/SetupResponse.php new file mode 100644 index 0000000000..43c42451f2 --- /dev/null +++ b/civicrm/setup/src/Setup/UI/SetupResponse.php @@ -0,0 +1,95 @@ +<?php +namespace Civi\Setup\UI; + +/** + * This represents a response from the Setup UI. + * + * Previously, responses where an array of the form: + * [0 => array $headers, 1 => string $body]. + * + * This implements \ArrayAccess for backward compatibility. + */ +class SetupResponse implements \ArrayAccess { + + /** + * @var bool + * + * TRUE if the body represents a fully formed HTML page. + * FALSE if the body is a fragment of an HTML page. + */ + public $isComplete = TRUE; + + /** + * @var array + * Ex: ['Content-Type': 'text/html'] + */ + public $headers = []; + + /** + * @var array + * Ex: $assets[0] = ['type' => 'script-url', 'url' => 'http://foobar']; + */ + public $assets = []; + + /** + * @var string + * Ex: '<h1>Hello world</h1>' + */ + public $body = ''; + + /** + * @var string|null + * The title of the response page (if it's an HTML response). + */ + public $title = NULL; + + /** + * @var int + */ + public $code = 200; + + /** + * @var array + * Array(int $oldPos => string $newName). + */ + protected $oldFieldMap; + + /** + * SetupResponse constructor. + */ + public function __construct() { + $this->oldFieldMap = [ + 0 => 'headers', + 1 => 'body', + ]; + } + + public function offsetExists($offset) { + return isset($this->oldFieldMap[$offset]); + } + + public function &offsetGet($offset) { + if (isset($this->oldFieldMap[$offset])) { + $field = $this->oldFieldMap[$offset]; + return $this->{$field}; + } + else { + return NULL; + } + } + + public function offsetSet($offset, $value) { + if (isset($this->oldFieldMap[$offset])) { + $field = $this->oldFieldMap[$offset]; + $this->{$field} = $value; + } + } + + public function offsetUnset($offset) { + if (isset($this->oldFieldMap[$offset])) { + $field = $this->oldFieldMap[$offset]; + unset($this->{$field}); + } + } + +} diff --git a/civicrm/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql index b181200c68..48d11ec0e3 100644 --- a/civicrm/sql/civicrm.mysql +++ b/civicrm/sql/civicrm.mysql @@ -68,6 +68,7 @@ DROP TABLE IF EXISTS `civicrm_mailing_job`; DROP TABLE IF EXISTS `civicrm_mailing_trackable_url`; DROP TABLE IF EXISTS `civicrm_mailing_group`; DROP TABLE IF EXISTS `civicrm_mailing`; +DROP TABLE IF EXISTS `civicrm_relationship_cache`; DROP TABLE IF EXISTS `civicrm_relationship`; DROP TABLE IF EXISTS `civicrm_dashboard_contact`; DROP TABLE IF EXISTS `civicrm_action_log`; @@ -3681,6 +3682,49 @@ CREATE TABLE `civicrm_relationship` ( , CONSTRAINT FK_civicrm_relationship_contact_id_a FOREIGN KEY (`contact_id_a`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_contact_id_b FOREIGN KEY (`contact_id_b`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_relationship_type_id FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_case_id FOREIGN KEY (`case_id`) REFERENCES `civicrm_case`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +-- /******************************************************* +-- * +-- * civicrm_relationship_cache +-- * +-- * The cache permutes information from the relationship table to facilitate querying. Every relationship is mapped to multiple records in the cache. Joins should begin on the near side and extract info from the far side. +-- * +-- *******************************************************/ +CREATE TABLE `civicrm_relationship_cache` ( + + + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship Cache ID', + `relationship_id` int unsigned NOT NULL COMMENT 'id of the relationship (FK to civicrm_relationship.id)', + `relationship_type_id` int unsigned NOT NULL COMMENT 'id of the relationship type', + `orientation` char(3) NOT NULL COMMENT 'The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.', + `near_contact_id` int unsigned NOT NULL COMMENT 'id of the first contact', + `near_relation` varchar(64) COMMENT 'name for relationship of near_contact to far_contact.', + `far_contact_id` int unsigned NOT NULL COMMENT 'id of the second contact', + `far_relation` varchar(64) COMMENT 'name for relationship of far_contact to near_contact.', + `is_active` tinyint DEFAULT 1 COMMENT 'is the relationship active ?', + `start_date` date COMMENT 'date when the relationship started', + `end_date` date COMMENT 'date when the relationship ended' +, + PRIMARY KEY (`id`) + + , UNIQUE INDEX `UI_relationship`( + relationship_id + , orientation + ) + , INDEX `index_nearid_nearrelation`( + near_contact_id + , near_relation + ) + , INDEX `index_nearid_farrelation`( + near_contact_id + , far_relation + ) + , INDEX `index_near_relation`( + near_relation + ) + +, CONSTRAINT FK_civicrm_relationship_cache_relationship_id FOREIGN KEY (`relationship_id`) REFERENCES `civicrm_relationship`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_cache_relationship_type_id FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_cache_near_contact_id FOREIGN KEY (`near_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_relationship_cache_far_contact_id FOREIGN KEY (`far_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + -- /******************************************************* -- * -- * civicrm_mailing diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql index 1d59ea7c90..5082547f7c 100644 --- a/civicrm/sql/civicrm_data.mysql +++ b/civicrm/sql/civicrm_data.mysql @@ -9,7 +9,7 @@ -- Generated from civicrm_country.tpl -- DO NOT EDIT. Generated by CRM_Core_CodeGen -- -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES utf8mb4 */; /******************************************************* * @@ -289,7 +289,7 @@ INSERT INTO civicrm_country (id, name,iso_code,region_id,is_province_abbreviated -- Generated from civicrm_state_province.tpl -- DO NOT EDIT. Generated by CRM_Core_CodeGen -- -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES utf8mb4 */; INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES (1000, 1228, "AL", "Alabama"), @@ -4673,7 +4673,7 @@ VALUES ('Mailing Footer','Footer','Descriptive Title for this Footer.','Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a> <br/> {domain.address}','to unsubscribe: {action.optOutUrl}\n{domain.address}',1,1), ('Subscribe Message','Subscribe','Subscription Confirmation Request','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click <a href=\"{subscribe.url}\">here</a>.','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click on this link: {subscribe.url}',1,1), ('Welcome Message','Welcome','Your Subscription has been Activated','Welcome. Your subscription to the {welcome.group} mailing list has been activated.','Welcome. Your subscription to the {welcome.group} mailing list has been activated.',1,1), - ('Unsubscribe Message','Unsubscribe','Un-subscribe Confirmation','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking ',1,1), + ('Unsubscribe Message','Unsubscribe','Un-subscribe Confirmation','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking {action.resubscribeUrl}',1,1), ('Resubscribe Message','Resubscribe','Re-subscribe Confirmation','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking <a href=\"{action.unsubscribeUrl}\">here</a>.','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking {action.unsubscribeUrl}',1,1), ('Opt-out Message','OptOut','Opt-out Confirmation','Your email address has been removed from {domain.name} mailing lists.','Your email address has been removed from {domain.name} mailing lists.',1,1), ('Auto-responder','Reply','Please Send Inquiries to Our Contact Email Address','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.',1,1); @@ -5946,7 +5946,6 @@ VALUES ('AuthNet', 'Authorize.Net', NULL,1,0,'API Login','Payment Key','MD5 Hash',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1), ('PayJunction', 'PayJunction', NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1), ('eWAY', 'eWAY (Single Currency)', NULL,0,0,'Customer ID',NULL,NULL,NULL,'Payment_eWAY','https://www.eway.com.au/gateway_cvn/xmlpayment.asp',NULL,NULL,NULL,'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp',NULL,NULL,NULL,1,0), - ('Payment_Express', 'DPS Payment Express', NULL,0,0,'User ID','Key','Mac Key - pxaccess only',NULL,'Payment_PaymentExpress','https://www.paymentexpress.com/pleaseenteraurl',NULL,NULL,NULL,'https://www.paymentexpress.com/pleaseenteratesturl',NULL,NULL,NULL,4,0), ('Dummy', 'Dummy Payment Processor',NULL,1,1,'User Name',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1), ('Elavon', 'Elavon Payment Processor','Elavon / Nova Virtual Merchant',0,0,'SSL Merchant ID ','SSL User ID','SSL PIN',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0), ('Realex', 'Realex Payment', NULL,0,0,'Merchant ID', 'Password', NULL, 'Account', 'Payment_Realex', 'https://epage.payandshop.com/epage.cgi', NULL, NULL, NULL, 'https://epage.payandshop.com/epage-remote.cgi', NULL, NULL, NULL, 1, 0), @@ -23093,6 +23092,7 @@ VALUES -- in the setup routine based on their tags & using the standard extension install api. -- do not try this at home folks. INSERT IGNORE INTO civicrm_extension (type, full_name, name, label, file, is_active) VALUES ('module', 'sequentialcreditnotes', 'Sequential credit notes', 'Sequential credit notes', 'sequentialcreditnotes', 1); +INSERT IGNORE INTO civicrm_extension (type, full_name, name, label, file, is_active) VALUES ('module', 'eventcart', 'Event cart', 'Event cart', 'eventcart', 1); -- +--------------------------------------------------------------------+ -- | Copyright CiviCRM LLC. All rights reserved. | -- | | @@ -23897,4 +23897,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.28.4'; +UPDATE civicrm_domain SET version = '5.29.0'; diff --git a/civicrm/sql/civicrm_drop.mysql b/civicrm/sql/civicrm_drop.mysql index 02eed15d01..f8c3b79a5f 100644 --- a/civicrm/sql/civicrm_drop.mysql +++ b/civicrm/sql/civicrm_drop.mysql @@ -55,6 +55,7 @@ DROP TABLE IF EXISTS `civicrm_mailing_job`; DROP TABLE IF EXISTS `civicrm_mailing_trackable_url`; DROP TABLE IF EXISTS `civicrm_mailing_group`; DROP TABLE IF EXISTS `civicrm_mailing`; +DROP TABLE IF EXISTS `civicrm_relationship_cache`; DROP TABLE IF EXISTS `civicrm_relationship`; DROP TABLE IF EXISTS `civicrm_dashboard_contact`; DROP TABLE IF EXISTS `civicrm_action_log`; diff --git a/civicrm/sql/civicrm_dummy_processor.mysql b/civicrm/sql/civicrm_dummy_processor.mysql index 70ede786c6..30e2b1ef0b 100644 --- a/civicrm/sql/civicrm_dummy_processor.mysql +++ b/civicrm/sql/civicrm_dummy_processor.mysql @@ -1,5 +1,5 @@ -INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 8, 1, 1, 0, 'dummy', NULL, NULL, 'http://dummy.com', NULL, 'http://dummyrecur.com', NULL, NULL, 'Payment_Dummy', 1, 1, 1); -INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 8, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Payment_Dummy', 1, 1, 1); +INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 7, 1, 1, 0, 'dummy', NULL, NULL, 'http://dummy.com', NULL, 'http://dummyrecur.com', NULL, NULL, 'Payment_Dummy', 1, 1, 1); +INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 7, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Payment_Dummy', 1, 1, 1); SELECT @dp := max(id) from civicrm_payment_processor where name = 'Test Processor' AND is_test = 0; SELECT @dpTest := max(id) from civicrm_payment_processor where name = 'Test Processor' AND is_test = 1; diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql index 563d1c5583..d1972c9448 100644 --- a/civicrm/sql/civicrm_generated.mysql +++ b/civicrm/sql/civicrm_generated.mysql @@ -1,8 +1,8 @@ --- MySQL dump 10.13 Distrib 5.7.26, for osx10.10 (x86_64) +-- MySQL dump 10.13 Distrib 5.7.30, for Linux (x86_64) -- --- Host: 127.0.0.1 Database: dmasterciv_tdjht +-- Host: 127.0.0.1 Database: 47testcivi_yg7kx -- ------------------------------------------------------ --- Server version 5.7.26 +-- Server version 5.7.30-0ubuntu0.18.04.1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -87,7 +87,7 @@ 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,10,'Subject for Pledge Acknowledgment','2019-12-23 00:52:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(2,NULL,10,'Subject for Pledge Acknowledgment','2020-04-16 02:44:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(3,NULL,10,'Subject for Pledge Acknowledgment','2019-11-08 01:59:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(4,NULL,9,'Subject for Tell a Friend','2019-10-06 17:52:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(5,NULL,10,'Subject for Pledge Acknowledgment','2020-02-19 07:55:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(6,NULL,10,'Subject for Pledge Acknowledgment','2020-01-08 15:52:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(7,NULL,10,'Subject for Pledge Acknowledgment','2019-11-01 05:05:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(8,NULL,10,'Subject for Pledge Acknowledgment','2020-01-01 18:35:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(9,NULL,10,'Subject for Pledge Acknowledgment','2019-12-24 23:18:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(10,NULL,10,'Subject for Pledge Acknowledgment','2019-10-17 18:29:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(11,NULL,10,'Subject for Pledge Acknowledgment','2019-07-30 21:54:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(12,NULL,9,'Subject for Tell a Friend','2020-03-16 22:59:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(13,NULL,9,'Subject for Tell a Friend','2019-12-16 02:48:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(14,NULL,10,'Subject for Pledge Acknowledgment','2019-12-24 12:10:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(15,NULL,10,'Subject for Pledge Acknowledgment','2020-04-24 01:17:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(16,NULL,9,'Subject for Tell a Friend','2020-05-24 17:31:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(17,NULL,9,'Subject for Tell a Friend','2019-07-31 12:30:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(18,NULL,10,'Subject for Pledge Acknowledgment','2019-06-15 23:09:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(19,NULL,9,'Subject for Tell a Friend','2019-12-22 21:08:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(20,NULL,9,'Subject for Tell a Friend','2019-10-19 22:51:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(21,NULL,10,'Subject for Pledge Acknowledgment','2020-03-28 08:18:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(22,NULL,9,'Subject for Tell a Friend','2020-04-23 14:31:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(23,NULL,9,'Subject for Tell a Friend','2019-12-17 03:28:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(24,NULL,10,'Subject for Pledge Acknowledgment','2020-04-24 14:49:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(25,NULL,10,'Subject for Pledge Acknowledgment','2019-06-26 17:20:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(26,NULL,9,'Subject for Tell a Friend','2019-09-02 07:38:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(27,NULL,9,'Subject for Tell a Friend','2020-01-03 06:23:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(28,NULL,9,'Subject for Tell a Friend','2019-12-03 17:05:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(29,NULL,10,'Subject for Pledge Acknowledgment','2020-05-20 23:57:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(30,NULL,9,'Subject for Tell a Friend','2019-11-19 23:48:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(31,NULL,10,'Subject for Pledge Acknowledgment','2020-05-25 17:06:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(32,NULL,10,'Subject for Pledge Acknowledgment','2020-05-20 10:23:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(33,NULL,10,'Subject for Pledge Acknowledgment','2019-10-18 03:17:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(34,NULL,9,'Subject for Tell a Friend','2019-08-06 23:11:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(35,NULL,10,'Subject for Pledge Acknowledgment','2019-12-16 20:27:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(36,NULL,10,'Subject for Pledge Acknowledgment','2020-05-24 12:18:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(37,NULL,9,'Subject for Tell a Friend','2019-09-20 04:40:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(38,NULL,9,'Subject for Tell a Friend','2020-04-06 02:45:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(39,NULL,9,'Subject for Tell a Friend','2020-01-12 20:17:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(40,NULL,9,'Subject for Tell a Friend','2019-08-01 06:36:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(41,NULL,10,'Subject for Pledge Acknowledgment','2020-05-26 19:32:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(42,NULL,9,'Subject for Tell a Friend','2019-09-20 13:23:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(43,NULL,9,'Subject for Tell a Friend','2019-10-26 04:36:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(44,NULL,10,'Subject for Pledge Acknowledgment','2019-06-18 17:35:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(45,NULL,9,'Subject for Tell a Friend','2019-08-01 23:09:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(46,NULL,10,'Subject for Pledge Acknowledgment','2020-04-24 17:14:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(47,NULL,10,'Subject for Pledge Acknowledgment','2020-02-19 15:24:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(48,NULL,10,'Subject for Pledge Acknowledgment','2020-03-04 01:11:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(49,NULL,10,'Subject for Pledge Acknowledgment','2020-03-06 09:42:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(50,NULL,10,'Subject for Pledge Acknowledgment','2019-07-19 06:05:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(51,NULL,10,'Subject for Pledge Acknowledgment','2020-04-03 23:12:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(52,NULL,9,'Subject for Tell a Friend','2019-11-26 10:32:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(53,NULL,9,'Subject for Tell a Friend','2020-04-26 23:14:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(54,NULL,9,'Subject for Tell a Friend','2019-08-21 22:50:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(55,NULL,10,'Subject for Pledge Acknowledgment','2019-11-26 10:48:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(56,NULL,9,'Subject for Tell a Friend','2020-02-11 13:34:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(57,NULL,10,'Subject for Pledge Acknowledgment','2019-07-06 06:22:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(58,NULL,9,'Subject for Tell a Friend','2019-12-16 12:59:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(59,NULL,10,'Subject for Pledge Acknowledgment','2019-09-02 20:22:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(60,NULL,10,'Subject for Pledge Acknowledgment','2020-03-29 16:48:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(61,NULL,10,'Subject for Pledge Acknowledgment','2019-11-19 08:10:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(62,NULL,10,'Subject for Pledge Acknowledgment','2019-09-02 04:36:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(63,NULL,10,'Subject for Pledge Acknowledgment','2019-06-25 19:55:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(64,NULL,10,'Subject for Pledge Acknowledgment','2020-03-20 19:49:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(65,NULL,9,'Subject for Tell a Friend','2019-06-27 14:57:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(66,NULL,10,'Subject for Pledge Acknowledgment','2020-03-01 16:38:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(67,NULL,9,'Subject for Tell a Friend','2019-10-17 20:34:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(68,NULL,9,'Subject for Tell a Friend','2019-07-16 15:24:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(69,NULL,10,'Subject for Pledge Acknowledgment','2020-03-18 10:07:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(70,NULL,10,'Subject for Pledge Acknowledgment','2020-03-15 15:43:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(71,NULL,10,'Subject for Pledge Acknowledgment','2020-01-25 23:44:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(72,NULL,10,'Subject for Pledge Acknowledgment','2019-09-26 17:35:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(73,NULL,9,'Subject for Tell a Friend','2020-04-08 12:37:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(74,NULL,10,'Subject for Pledge Acknowledgment','2019-12-02 15:48:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(75,NULL,9,'Subject for Tell a Friend','2019-09-08 01:01:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(76,NULL,10,'Subject for Pledge Acknowledgment','2020-04-24 22:22:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(77,NULL,9,'Subject for Tell a Friend','2020-01-11 05:10:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(78,NULL,10,'Subject for Pledge Acknowledgment','2020-02-14 10:22:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(79,NULL,10,'Subject for Pledge Acknowledgment','2019-10-14 05:57:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(80,NULL,10,'Subject for Pledge Acknowledgment','2020-01-23 08:05:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(81,NULL,10,'Subject for Pledge Acknowledgment','2019-11-11 13:21:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(82,NULL,9,'Subject for Tell a Friend','2020-04-02 18:20:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(83,NULL,9,'Subject for Tell a Friend','2020-01-27 02:24:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(84,NULL,10,'Subject for Pledge Acknowledgment','2019-07-02 16:13:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(85,NULL,10,'Subject for Pledge Acknowledgment','2019-09-03 18:00:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(86,NULL,9,'Subject for Tell a Friend','2019-09-24 16:11:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(87,NULL,10,'Subject for Pledge Acknowledgment','2019-10-02 17:37:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(88,NULL,9,'Subject for Tell a Friend','2020-05-22 16:55:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(89,NULL,9,'Subject for Tell a Friend','2019-06-26 15:15:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(90,NULL,9,'Subject for Tell a Friend','2019-12-12 16:32:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(91,NULL,10,'Subject for Pledge Acknowledgment','2020-04-16 10:25:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(92,NULL,10,'Subject for Pledge Acknowledgment','2019-06-19 10:14:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(93,NULL,9,'Subject for Tell a Friend','2020-02-24 15:37:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(94,NULL,9,'Subject for Tell a Friend','2020-02-08 23:28:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(95,NULL,9,'Subject for Tell a Friend','2019-08-11 13:08:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(96,NULL,10,'Subject for Pledge Acknowledgment','2019-11-01 04:36:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(97,NULL,10,'Subject for Pledge Acknowledgment','2020-01-31 19:33:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(98,NULL,9,'Subject for Tell a Friend','2020-03-02 18:16:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(99,NULL,9,'Subject for Tell a Friend','2019-09-18 03:21:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(100,NULL,9,'Subject for Tell a Friend','2019-10-06 06:01:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(101,NULL,9,'Subject for Tell a Friend','2019-09-04 16:26:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(102,NULL,10,'Subject for Pledge Acknowledgment','2020-03-03 10:38:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(103,NULL,9,'Subject for Tell a Friend','2019-10-21 06:06:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(104,NULL,9,'Subject for Tell a Friend','2019-10-17 19:21:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(105,NULL,10,'Subject for Pledge Acknowledgment','2020-03-19 19:32:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(106,NULL,9,'Subject for Tell a Friend','2019-09-04 14:28:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(107,NULL,9,'Subject for Tell a Friend','2020-01-02 08:09:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(108,NULL,10,'Subject for Pledge Acknowledgment','2020-03-10 12:12:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(109,NULL,9,'Subject for Tell a Friend','2019-09-07 00:14:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(110,NULL,9,'Subject for Tell a Friend','2020-06-09 08:38:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(111,NULL,10,'Subject for Pledge Acknowledgment','2020-01-23 03:29:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(112,NULL,10,'Subject for Pledge Acknowledgment','2019-11-22 13:34:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(113,NULL,9,'Subject for Tell a Friend','2020-04-11 06:07:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(114,NULL,10,'Subject for Pledge Acknowledgment','2020-02-04 04:05:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(115,NULL,10,'Subject for Pledge Acknowledgment','2020-06-09 20:24:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(116,NULL,10,'Subject for Pledge Acknowledgment','2020-01-30 04:44:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(117,NULL,9,'Subject for Tell a Friend','2020-05-01 21:14:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(118,NULL,10,'Subject for Pledge Acknowledgment','2019-08-28 04:20:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(119,NULL,10,'Subject for Pledge Acknowledgment','2019-10-15 09:30:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(120,NULL,9,'Subject for Tell a Friend','2019-09-14 04:13:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(121,NULL,10,'Subject for Pledge Acknowledgment','2019-10-31 11:02:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(122,NULL,9,'Subject for Tell a Friend','2019-09-01 15:08:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(123,NULL,9,'Subject for Tell a Friend','2019-09-01 04:20:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(124,NULL,9,'Subject for Tell a Friend','2020-03-06 13:21:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(125,NULL,10,'Subject for Pledge Acknowledgment','2020-03-08 17:11:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(126,NULL,9,'Subject for Tell a Friend','2019-10-18 22:30:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(127,NULL,9,'Subject for Tell a Friend','2020-04-15 18:55:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(128,NULL,10,'Subject for Pledge Acknowledgment','2020-01-01 05:27:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(129,NULL,9,'Subject for Tell a Friend','2020-01-14 08:52:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(130,NULL,10,'Subject for Pledge Acknowledgment','2019-09-05 20:41:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(131,NULL,10,'Subject for Pledge Acknowledgment','2019-07-29 13:53:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(132,NULL,10,'Subject for Pledge Acknowledgment','2019-07-05 01:54:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(133,NULL,10,'Subject for Pledge Acknowledgment','2020-01-13 19:20:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(134,NULL,9,'Subject for Tell a Friend','2019-12-12 03:05:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(135,NULL,10,'Subject for Pledge Acknowledgment','2020-01-17 16:08:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(136,NULL,9,'Subject for Tell a Friend','2020-04-19 08:42:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(137,NULL,10,'Subject for Pledge Acknowledgment','2019-12-07 00:08:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(138,NULL,10,'Subject for Pledge Acknowledgment','2019-08-23 22:05:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(139,NULL,9,'Subject for Tell a Friend','2020-01-01 00:03:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(140,NULL,10,'Subject for Pledge Acknowledgment','2019-10-11 09:41:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(141,NULL,9,'Subject for Tell a Friend','2019-12-14 00:14:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(142,NULL,9,'Subject for Tell a Friend','2020-03-19 16:17:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(143,NULL,10,'Subject for Pledge Acknowledgment','2020-05-17 13:17:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(144,NULL,9,'Subject for Tell a Friend','2020-04-02 01:45:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(145,NULL,9,'Subject for Tell a Friend','2019-08-23 11:15:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(146,NULL,10,'Subject for Pledge Acknowledgment','2019-11-25 00:48:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(147,NULL,10,'Subject for Pledge Acknowledgment','2020-01-29 10:59:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(148,NULL,9,'Subject for Tell a Friend','2019-11-27 19:33:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(149,NULL,9,'Subject for Tell a Friend','2020-03-17 14:01:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(150,NULL,10,'Subject for Pledge Acknowledgment','2020-05-04 02:52:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(151,NULL,10,'Subject for Pledge Acknowledgment','2020-04-29 22:45:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(152,NULL,9,'Subject for Tell a Friend','2020-02-05 00:29:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(153,NULL,10,'Subject for Pledge Acknowledgment','2020-02-03 09:51:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(154,NULL,9,'Subject for Tell a Friend','2019-07-10 21:21:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(155,NULL,10,'Subject for Pledge Acknowledgment','2019-10-05 04:32:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(156,NULL,9,'Subject for Tell a Friend','2019-06-22 10:01:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(157,NULL,10,'Subject for Pledge Acknowledgment','2019-11-02 14:39:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(158,NULL,10,'Subject for Pledge Acknowledgment','2020-04-01 07:26:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(159,NULL,9,'Subject for Tell a Friend','2019-06-18 22:39:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(160,NULL,10,'Subject for Pledge Acknowledgment','2019-12-02 19:43:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(161,NULL,9,'Subject for Tell a Friend','2020-04-28 17:23:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(162,NULL,9,'Subject for Tell a Friend','2020-05-28 19:28:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(163,NULL,10,'Subject for Pledge Acknowledgment','2020-06-03 10:58:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(164,NULL,9,'Subject for Tell a Friend','2019-08-03 14:10:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(165,NULL,9,'Subject for Tell a Friend','2019-10-17 04:15:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(166,NULL,9,'Subject for Tell a Friend','2020-03-14 07:47:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(167,NULL,9,'Subject for Tell a Friend','2019-07-20 06:01:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(168,NULL,9,'Subject for Tell a Friend','2019-09-06 07:48:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(169,NULL,10,'Subject for Pledge Acknowledgment','2020-03-29 16:57:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(170,NULL,10,'Subject for Pledge Acknowledgment','2019-12-08 14:09:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(171,NULL,10,'Subject for Pledge Acknowledgment','2019-07-13 14:05:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(172,NULL,9,'Subject for Tell a Friend','2020-01-14 06:45:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(173,NULL,9,'Subject for Tell a Friend','2019-07-04 07:39:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(174,NULL,9,'Subject for Tell a Friend','2019-08-01 04:44:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(175,NULL,9,'Subject for Tell a Friend','2019-09-25 05:54:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(176,NULL,9,'Subject for Tell a Friend','2020-05-03 18:23:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(177,NULL,10,'Subject for Pledge Acknowledgment','2019-08-06 22:17:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(178,NULL,9,'Subject for Tell a Friend','2019-12-26 05:15:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(179,NULL,10,'Subject for Pledge Acknowledgment','2019-07-12 09:38:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(180,NULL,9,'Subject for Tell a Friend','2020-01-11 14:35:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(181,NULL,9,'Subject for Tell a Friend','2019-07-19 05:47:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(182,NULL,9,'Subject for Tell a Friend','2019-12-12 06:28:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(183,NULL,10,'Subject for Pledge Acknowledgment','2020-01-13 11:38:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(184,NULL,10,'Subject for Pledge Acknowledgment','2019-09-14 00:56:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(185,NULL,9,'Subject for Tell a Friend','2019-12-04 12:37:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(186,NULL,10,'Subject for Pledge Acknowledgment','2019-10-26 14:31:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(187,NULL,10,'Subject for Pledge Acknowledgment','2020-02-10 21:29:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(188,NULL,9,'Subject for Tell a Friend','2019-07-27 11:50:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(189,NULL,9,'Subject for Tell a Friend','2019-12-28 00:50:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(190,NULL,9,'Subject for Tell a Friend','2020-01-09 22:35:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(191,NULL,10,'Subject for Pledge Acknowledgment','2020-05-08 20:17:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(192,NULL,10,'Subject for Pledge Acknowledgment','2019-07-02 11:47:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(193,NULL,9,'Subject for Tell a Friend','2019-11-12 05:50:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(194,NULL,9,'Subject for Tell a Friend','2019-11-19 02:51:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(195,NULL,9,'Subject for Tell a Friend','2019-08-11 09:40:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(196,NULL,9,'Subject for Tell a Friend','2019-10-19 09:08:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(197,NULL,9,'Subject for Tell a Friend','2019-07-26 16:04:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(198,NULL,9,'Subject for Tell a Friend','2019-08-30 23:33:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(199,NULL,9,'Subject for Tell a Friend','2020-01-21 15:46:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(200,NULL,9,'Subject for Tell a Friend','2020-02-06 06:50:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(201,NULL,9,'Subject for Tell a Friend','2019-10-11 23:17:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(202,NULL,9,'Subject for Tell a Friend','2020-05-15 04:05:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(203,NULL,10,'Subject for Pledge Acknowledgment','2020-01-04 05:57:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(204,NULL,9,'Subject for Tell a Friend','2020-03-09 05:31:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(205,NULL,9,'Subject for Tell a Friend','2020-01-07 04:39:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(206,NULL,10,'Subject for Pledge Acknowledgment','2019-09-19 00:58:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(207,NULL,9,'Subject for Tell a Friend','2019-09-27 03:32:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(208,NULL,10,'Subject for Pledge Acknowledgment','2019-08-01 00:38:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(209,NULL,9,'Subject for Tell a Friend','2019-12-15 11:25:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(210,NULL,10,'Subject for Pledge Acknowledgment','2019-11-02 03:49:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(211,NULL,10,'Subject for Pledge Acknowledgment','2020-04-14 21:59:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(212,NULL,10,'Subject for Pledge Acknowledgment','2019-12-07 14:02:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(213,NULL,10,'Subject for Pledge Acknowledgment','2019-06-26 18:14:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(214,NULL,9,'Subject for Tell a Friend','2020-05-23 17:03:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(215,NULL,9,'Subject for Tell a Friend','2019-09-18 17:38:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(216,NULL,9,'Subject for Tell a Friend','2020-02-29 01:05:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(217,NULL,9,'Subject for Tell a Friend','2019-12-17 00:06:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(218,NULL,9,'Subject for Tell a Friend','2020-02-05 08:07:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(219,NULL,9,'Subject for Tell a Friend','2019-09-11 05:54:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(220,NULL,9,'Subject for Tell a Friend','2019-11-02 15:57:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(221,NULL,9,'Subject for Tell a Friend','2019-12-23 08:20:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(222,NULL,9,'Subject for Tell a Friend','2020-03-18 15:21:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(223,NULL,10,'Subject for Pledge Acknowledgment','2020-04-21 23:43:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(224,NULL,10,'Subject for Pledge Acknowledgment','2019-09-15 06:04:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(225,NULL,9,'Subject for Tell a Friend','2019-07-06 07:02:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(226,NULL,9,'Subject for Tell a Friend','2020-05-18 23:30:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(227,NULL,10,'Subject for Pledge Acknowledgment','2019-12-31 03:18:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(228,NULL,9,'Subject for Tell a Friend','2019-11-28 21:51:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(229,NULL,9,'Subject for Tell a Friend','2020-05-03 10:15:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(230,NULL,9,'Subject for Tell a Friend','2020-01-02 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(231,NULL,9,'Subject for Tell a Friend','2020-03-27 16:23:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(232,NULL,10,'Subject for Pledge Acknowledgment','2019-11-03 00:51:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(233,NULL,10,'Subject for Pledge Acknowledgment','2019-09-25 18:23:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(234,NULL,10,'Subject for Pledge Acknowledgment','2019-06-16 21:03:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(235,NULL,10,'Subject for Pledge Acknowledgment','2019-11-06 04:46:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(236,NULL,9,'Subject for Tell a Friend','2019-08-02 04:10:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(237,NULL,10,'Subject for Pledge Acknowledgment','2019-06-12 04:55:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(238,NULL,9,'Subject for Tell a Friend','2019-08-13 01:32:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(239,NULL,10,'Subject for Pledge Acknowledgment','2020-02-11 21:15:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(240,NULL,9,'Subject for Tell a Friend','2019-07-29 22:25:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(241,NULL,10,'Subject for Pledge Acknowledgment','2019-12-22 20:40:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(242,NULL,9,'Subject for Tell a Friend','2019-11-14 04:20:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(243,NULL,10,'Subject for Pledge Acknowledgment','2020-05-18 08:17:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(244,NULL,10,'Subject for Pledge Acknowledgment','2019-07-07 04:26:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(245,NULL,9,'Subject for Tell a Friend','2020-05-08 07:12:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(246,NULL,10,'Subject for Pledge Acknowledgment','2019-06-25 15:22:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(247,NULL,9,'Subject for Tell a Friend','2020-04-21 08:29:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(248,NULL,9,'Subject for Tell a Friend','2019-11-12 05:15:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(249,NULL,10,'Subject for Pledge Acknowledgment','2019-07-05 04:01:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:51','2020-06-10 02:45:51'),(250,NULL,10,'Subject for Pledge Acknowledgment','2020-01-06 02:02:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(251,NULL,9,'Subject for Tell a Friend','2019-09-07 21:10:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(252,NULL,10,'Subject for Pledge Acknowledgment','2019-07-19 14:30:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(253,NULL,10,'Subject for Pledge Acknowledgment','2020-05-03 18:49:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(254,NULL,9,'Subject for Tell a Friend','2020-05-03 11:25:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(255,NULL,9,'Subject for Tell a Friend','2019-07-29 08:29:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(256,NULL,10,'Subject for Pledge Acknowledgment','2019-08-16 15:36:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(257,NULL,10,'Subject for Pledge Acknowledgment','2019-10-06 13:05:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(258,NULL,9,'Subject for Tell a Friend','2020-03-03 18:27:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(259,NULL,9,'Subject for Tell a Friend','2020-04-22 00:17:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(260,NULL,10,'Subject for Pledge Acknowledgment','2019-09-27 17:12:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(261,NULL,10,'Subject for Pledge Acknowledgment','2019-07-23 04:03:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(262,NULL,10,'Subject for Pledge Acknowledgment','2020-04-02 07:40:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(263,NULL,9,'Subject for Tell a Friend','2020-03-13 23:09:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(264,NULL,9,'Subject for Tell a Friend','2020-01-27 00:28:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(265,NULL,10,'Subject for Pledge Acknowledgment','2019-11-02 05:51:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(266,NULL,9,'Subject for Tell a Friend','2019-09-12 11:56:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(267,NULL,10,'Subject for Pledge Acknowledgment','2020-04-29 20:14:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(268,NULL,10,'Subject for Pledge Acknowledgment','2019-08-15 07:58:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(269,NULL,10,'Subject for Pledge Acknowledgment','2019-08-07 09:01:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(270,NULL,9,'Subject for Tell a Friend','2020-05-12 21:57:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(271,NULL,9,'Subject for Tell a Friend','2020-04-14 19:35:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(272,NULL,9,'Subject for Tell a Friend','2020-02-29 12:55:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(273,NULL,10,'Subject for Pledge Acknowledgment','2019-10-19 21:14:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(274,NULL,10,'Subject for Pledge Acknowledgment','2020-01-08 05:12:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(275,NULL,9,'Subject for Tell a Friend','2019-11-20 11:53:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(276,NULL,9,'Subject for Tell a Friend','2019-07-08 05:20:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(277,NULL,9,'Subject for Tell a Friend','2019-11-15 23:46:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(278,NULL,9,'Subject for Tell a Friend','2019-09-05 06:08:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(279,NULL,9,'Subject for Tell a Friend','2019-06-16 17:54:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(280,NULL,9,'Subject for Tell a Friend','2019-11-27 05:37:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(281,NULL,10,'Subject for Pledge Acknowledgment','2020-05-03 10:20:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(282,NULL,10,'Subject for Pledge Acknowledgment','2020-01-11 12:11:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(283,NULL,9,'Subject for Tell a Friend','2020-02-09 21:28:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(284,NULL,9,'Subject for Tell a Friend','2020-02-18 19:04:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(285,NULL,10,'Subject for Pledge Acknowledgment','2019-12-27 15:54:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(286,NULL,9,'Subject for Tell a Friend','2020-02-03 17:10:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(287,NULL,9,'Subject for Tell a Friend','2019-11-29 11:45:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(288,NULL,10,'Subject for Pledge Acknowledgment','2020-04-03 08:47:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(289,NULL,10,'Subject for Pledge Acknowledgment','2019-11-30 17:39:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(290,NULL,9,'Subject for Tell a Friend','2019-06-15 15:24:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(291,NULL,10,'Subject for Pledge Acknowledgment','2019-07-24 19:01:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(292,NULL,9,'Subject for Tell a Friend','2019-10-21 00:23:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(293,NULL,9,'Subject for Tell a Friend','2019-10-09 01:38:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(294,NULL,9,'Subject for Tell a Friend','2019-11-01 19:09:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(295,NULL,9,'Subject for Tell a Friend','2020-06-04 21:27:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(296,NULL,9,'Subject for Tell a Friend','2020-03-14 19:25:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(297,NULL,9,'Subject for Tell a Friend','2020-01-12 13:23:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(298,NULL,10,'Subject for Pledge Acknowledgment','2020-02-17 04:48:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(299,NULL,9,'Subject for Tell a Friend','2019-11-21 15:15:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(300,NULL,9,'Subject for Tell a Friend','2020-01-12 18:37:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(301,NULL,10,'Subject for Pledge Acknowledgment','2020-02-05 16:37:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(302,NULL,9,'Subject for Tell a Friend','2020-05-20 15:13:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(303,NULL,10,'Subject for Pledge Acknowledgment','2019-09-03 18:58:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(304,NULL,9,'Subject for Tell a Friend','2019-08-18 03:08:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(305,NULL,9,'Subject for Tell a Friend','2019-08-17 15:09:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(306,NULL,9,'Subject for Tell a Friend','2019-12-08 17:11:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(307,NULL,9,'Subject for Tell a Friend','2020-01-25 10:55:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(308,NULL,9,'Subject for Tell a Friend','2020-04-06 23:57:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(309,NULL,9,'Subject for Tell a Friend','2020-04-01 07:01:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(310,NULL,10,'Subject for Pledge Acknowledgment','2019-10-16 13:31:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(311,NULL,9,'Subject for Tell a Friend','2019-07-15 00:18:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(312,NULL,9,'Subject for Tell a Friend','2019-11-15 19:31:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(313,NULL,10,'Subject for Pledge Acknowledgment','2019-06-20 02:20:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(314,NULL,10,'Subject for Pledge Acknowledgment','2020-05-13 15:27:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(315,NULL,9,'Subject for Tell a Friend','2020-03-22 00:46:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(316,NULL,9,'Subject for Tell a Friend','2019-11-07 07:14:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(317,NULL,10,'Subject for Pledge Acknowledgment','2019-09-27 21:12:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(318,NULL,10,'Subject for Pledge Acknowledgment','2019-11-27 09:14:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(319,NULL,10,'Subject for Pledge Acknowledgment','2020-05-29 21:45:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(320,NULL,10,'Subject for Pledge Acknowledgment','2019-10-06 14:34:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(321,NULL,9,'Subject for Tell a Friend','2020-02-18 07:09:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(322,NULL,9,'Subject for Tell a Friend','2020-01-13 12:10:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(323,NULL,9,'Subject for Tell a Friend','2019-11-02 08:32:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(324,NULL,10,'Subject for Pledge Acknowledgment','2020-04-17 13:57:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(325,NULL,9,'Subject for Tell a Friend','2019-08-06 18:33:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(326,NULL,10,'Subject for Pledge Acknowledgment','2020-01-06 09:37:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(327,NULL,9,'Subject for Tell a Friend','2020-02-27 18:33:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(328,NULL,9,'Subject for Tell a Friend','2019-07-02 19:54:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(329,NULL,10,'Subject for Pledge Acknowledgment','2019-12-30 14:03:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(330,NULL,10,'Subject for Pledge Acknowledgment','2019-07-01 04:22:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(331,NULL,9,'Subject for Tell a Friend','2020-05-08 12:21:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(332,NULL,10,'Subject for Pledge Acknowledgment','2020-05-08 11:52:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(333,NULL,9,'Subject for Tell a Friend','2020-04-29 13:56:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(334,NULL,10,'Subject for Pledge Acknowledgment','2019-07-23 08:43:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(335,NULL,9,'Subject for Tell a Friend','2019-12-16 03:51:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(336,NULL,9,'Subject for Tell a Friend','2019-08-03 12:27:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(337,NULL,9,'Subject for Tell a Friend','2019-12-03 09:01:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(338,NULL,9,'Subject for Tell a Friend','2020-05-13 12:10:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(339,NULL,9,'Subject for Tell a Friend','2019-10-15 23:33:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(340,NULL,10,'Subject for Pledge Acknowledgment','2020-04-18 23:20:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(341,NULL,10,'Subject for Pledge Acknowledgment','2019-11-15 14:50:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(342,NULL,10,'Subject for Pledge Acknowledgment','2019-12-04 17:26:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(343,NULL,9,'Subject for Tell a Friend','2020-03-17 18:08:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(344,NULL,10,'Subject for Pledge Acknowledgment','2020-02-04 18:17:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(345,NULL,10,'Subject for Pledge Acknowledgment','2019-06-20 06:11:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(346,NULL,10,'Subject for Pledge Acknowledgment','2019-12-14 18:39:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(347,NULL,10,'Subject for Pledge Acknowledgment','2019-09-21 05:08:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(348,NULL,9,'Subject for Tell a Friend','2020-02-14 19:42:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(349,NULL,9,'Subject for Tell a Friend','2020-02-25 10:41:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(350,NULL,9,'Subject for Tell a Friend','2020-01-17 21:15:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(351,NULL,10,'Subject for Pledge Acknowledgment','2019-07-07 13:58:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(352,NULL,9,'Subject for Tell a Friend','2019-09-08 23:10:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(353,NULL,9,'Subject for Tell a Friend','2019-07-06 01:21:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(354,NULL,9,'Subject for Tell a Friend','2020-06-07 06:02:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(355,NULL,10,'Subject for Pledge Acknowledgment','2020-01-21 11:50:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(356,NULL,9,'Subject for Tell a Friend','2020-05-10 22:45:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(357,NULL,9,'Subject for Tell a Friend','2019-10-16 21:30:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(358,NULL,10,'Subject for Pledge Acknowledgment','2020-04-15 11:43:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(359,NULL,10,'Subject for Pledge Acknowledgment','2020-05-17 21:59:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(360,NULL,10,'Subject for Pledge Acknowledgment','2020-04-07 12:00:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(361,NULL,9,'Subject for Tell a Friend','2020-04-15 13:56:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(362,NULL,9,'Subject for Tell a Friend','2019-06-11 18:54:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(363,NULL,10,'Subject for Pledge Acknowledgment','2020-01-31 15:50:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(364,NULL,9,'Subject for Tell a Friend','2020-02-27 15:28:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(365,NULL,9,'Subject for Tell a Friend','2020-04-27 04:51:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(366,NULL,9,'Subject for Tell a Friend','2020-06-01 20:12:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(367,NULL,9,'Subject for Tell a Friend','2020-02-18 11:28:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(368,NULL,9,'Subject for Tell a Friend','2019-11-19 06:44:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(369,NULL,9,'Subject for Tell a Friend','2020-01-22 14:58:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(370,NULL,10,'Subject for Pledge Acknowledgment','2020-03-15 06:57:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(371,NULL,9,'Subject for Tell a Friend','2019-09-14 16:20:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(372,NULL,10,'Subject for Pledge Acknowledgment','2020-01-21 23:26:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(373,NULL,10,'Subject for Pledge Acknowledgment','2019-11-26 00:47:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(374,NULL,10,'Subject for Pledge Acknowledgment','2019-07-04 14:48:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(375,NULL,10,'Subject for Pledge Acknowledgment','2020-03-19 22:02:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(376,NULL,9,'Subject for Tell a Friend','2019-10-10 13:00:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(377,NULL,10,'Subject for Pledge Acknowledgment','2020-02-03 17:33:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(378,NULL,9,'Subject for Tell a Friend','2019-11-10 06:49:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(379,NULL,9,'Subject for Tell a Friend','2020-01-10 04:48:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(380,NULL,9,'Subject for Tell a Friend','2019-09-19 18:59:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(381,NULL,9,'Subject for Tell a Friend','2020-01-22 09:58:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(382,NULL,9,'Subject for Tell a Friend','2019-11-04 11:02:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(383,NULL,10,'Subject for Pledge Acknowledgment','2019-09-25 10:52:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(384,NULL,9,'Subject for Tell a Friend','2019-08-17 11:06:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(385,NULL,10,'Subject for Pledge Acknowledgment','2019-10-30 21:23:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(386,NULL,9,'Subject for Tell a Friend','2019-09-01 18:40:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(387,NULL,10,'Subject for Pledge Acknowledgment','2020-04-14 19:19:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(388,NULL,9,'Subject for Tell a Friend','2020-01-31 00:34:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(389,NULL,10,'Subject for Pledge Acknowledgment','2020-06-07 04:18:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(390,NULL,10,'Subject for Pledge Acknowledgment','2019-11-01 08:53:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(391,NULL,9,'Subject for Tell a Friend','2020-02-22 02:39:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(392,NULL,10,'Subject for Pledge Acknowledgment','2019-09-01 20:35:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(393,NULL,10,'Subject for Pledge Acknowledgment','2019-08-02 17:30:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(394,NULL,9,'Subject for Tell a Friend','2019-12-17 07:26:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(395,NULL,10,'Subject for Pledge Acknowledgment','2019-12-14 07:45:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(396,NULL,9,'Subject for Tell a Friend','2019-07-30 01:14:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(397,NULL,10,'Subject for Pledge Acknowledgment','2020-05-30 14:42:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(398,NULL,9,'Subject for Tell a Friend','2020-03-10 06:29:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(399,NULL,9,'Subject for Tell a Friend','2020-04-12 04:01:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(400,NULL,9,'Subject for Tell a Friend','2020-03-19 07:05:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(401,NULL,10,'Subject for Pledge Acknowledgment','2019-09-30 01:28:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(402,NULL,9,'Subject for Tell a Friend','2020-01-11 09:55:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(403,NULL,10,'Subject for Pledge Acknowledgment','2020-01-02 14:18:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(404,NULL,9,'Subject for Tell a Friend','2020-01-01 13:50:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(405,NULL,9,'Subject for Tell a Friend','2020-04-07 18:13:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(406,NULL,10,'Subject for Pledge Acknowledgment','2019-11-29 11:23:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(407,NULL,10,'Subject for Pledge Acknowledgment','2019-09-01 19:29:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(408,NULL,9,'Subject for Tell a Friend','2020-04-14 13:03:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(409,NULL,10,'Subject for Pledge Acknowledgment','2020-02-14 08:00:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(410,NULL,9,'Subject for Tell a Friend','2020-06-04 04:04:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(411,NULL,9,'Subject for Tell a Friend','2020-05-23 07:39:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(412,NULL,9,'Subject for Tell a Friend','2019-12-24 20:33:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(413,NULL,9,'Subject for Tell a Friend','2020-04-06 13:04:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(414,NULL,10,'Subject for Pledge Acknowledgment','2019-10-01 08:05:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(415,NULL,10,'Subject for Pledge Acknowledgment','2020-03-19 06:19:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(416,NULL,10,'Subject for Pledge Acknowledgment','2019-10-23 03:22:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(417,NULL,10,'Subject for Pledge Acknowledgment','2019-10-07 18:53:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(418,NULL,10,'Subject for Pledge Acknowledgment','2019-09-08 09:17:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(419,NULL,10,'Subject for Pledge Acknowledgment','2019-07-13 06:12:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(420,NULL,10,'Subject for Pledge Acknowledgment','2020-02-24 03:59:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(421,NULL,9,'Subject for Tell a Friend','2019-08-29 22:25:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(422,NULL,9,'Subject for Tell a Friend','2019-07-17 23:55:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(423,NULL,9,'Subject for Tell a Friend','2019-10-19 05:32:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(424,NULL,10,'Subject for Pledge Acknowledgment','2019-11-26 14:40:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(425,NULL,9,'Subject for Tell a Friend','2020-02-12 04:01:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(426,NULL,10,'Subject for Pledge Acknowledgment','2019-08-07 02:01:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(427,NULL,10,'Subject for Pledge Acknowledgment','2019-12-05 13:21:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(428,NULL,10,'Subject for Pledge Acknowledgment','2019-12-07 19:51:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(429,NULL,10,'Subject for Pledge Acknowledgment','2019-10-12 12:11:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(430,NULL,10,'Subject for Pledge Acknowledgment','2019-10-15 17:08:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(431,NULL,9,'Subject for Tell a Friend','2019-10-09 09:46:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(432,NULL,10,'Subject for Pledge Acknowledgment','2019-12-13 09:14:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(433,NULL,10,'Subject for Pledge Acknowledgment','2020-03-12 23:55:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(434,NULL,10,'Subject for Pledge Acknowledgment','2019-12-15 22:37:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(435,NULL,10,'Subject for Pledge Acknowledgment','2019-11-27 01:29:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(436,NULL,10,'Subject for Pledge Acknowledgment','2019-07-09 19:06:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(437,NULL,9,'Subject for Tell a Friend','2020-03-16 03:50:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(438,NULL,9,'Subject for Tell a Friend','2019-06-20 00:57:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(439,NULL,9,'Subject for Tell a Friend','2019-08-25 21:01:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(440,NULL,9,'Subject for Tell a Friend','2020-05-22 02:54:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(441,NULL,9,'Subject for Tell a Friend','2020-04-17 08:54:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(442,NULL,10,'Subject for Pledge Acknowledgment','2020-01-23 04:39:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(443,NULL,9,'Subject for Tell a Friend','2019-07-21 18:44:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(444,NULL,10,'Subject for Pledge Acknowledgment','2019-11-18 03:13:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(445,NULL,9,'Subject for Tell a Friend','2020-05-25 12:07:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(446,NULL,10,'Subject for Pledge Acknowledgment','2019-09-25 21:59:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(447,NULL,9,'Subject for Tell a Friend','2020-03-06 11:52:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(448,NULL,10,'Subject for Pledge Acknowledgment','2019-10-21 08:30:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(449,NULL,10,'Subject for Pledge Acknowledgment','2020-05-18 23:36:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(450,NULL,9,'Subject for Tell a Friend','2019-12-18 10:35:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(451,1,6,'$ 125.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(452,2,6,'$ 50.00-Online: Save the Penguins','2010-03-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(453,3,6,'$ 25.00-Apr 2007 Mailer 1','2010-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(454,4,6,'$ 50.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(455,5,6,'$ 500.00-Apr 2007 Mailer 1','2010-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(456,6,6,'$ 175.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(457,7,6,'$ 50.00-Online: Save the Penguins','2010-03-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(458,8,6,'$ 10.00-Online: Save the Penguins','2010-03-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(459,9,6,'$ 250.00-Online: Save the Penguins','2010-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(460,10,6,NULL,'2009-07-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(461,11,6,NULL,'2009-07-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(462,12,6,NULL,'2009-10-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(463,13,6,NULL,'2009-12-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(464,1,7,'General','2020-06-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(465,2,7,'Student','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(466,3,7,'General','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(467,4,7,'Student','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(468,5,7,'General','2018-05-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(469,6,7,'Student','2020-06-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(470,7,7,'General','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(471,8,7,'Student','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(472,9,7,'General','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(473,10,7,'General','2018-03-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(474,11,7,'Lifetime','2020-05-31 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(475,12,7,'Student','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(476,13,7,'General','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(477,14,7,'Student','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(478,15,7,'General','2018-02-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(479,16,7,'Student','2020-05-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(480,17,7,'General','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(481,18,7,'Student','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(482,19,7,'General','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(483,20,7,'Student','2019-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(484,21,7,'General','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(485,22,7,'Lifetime','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(486,23,7,'General','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(487,24,7,'Student','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(488,25,7,'General','2017-11-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(489,26,7,'Student','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(490,27,7,'General','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(491,28,7,'Student','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(492,29,7,'General','2020-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(493,30,7,'Student','2019-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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(494,14,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(495,15,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(496,16,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(497,17,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(498,18,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(499,19,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(500,20,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(501,21,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(502,22,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(503,23,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(504,24,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(505,25,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(506,26,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(507,27,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(508,28,6,'$ 100.00 - General Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(509,29,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(510,30,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(511,31,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(512,32,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(513,33,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(514,34,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(515,35,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(516,36,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(517,37,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(518,38,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(519,39,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(520,40,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(521,41,6,'$ 50.00 - Student Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(523,43,6,'$ 1200.00 - Lifetime Membership: Offline signup','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(525,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(526,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(527,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(528,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(529,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(530,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(531,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(532,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(533,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(534,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(535,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(536,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(537,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(538,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(539,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(540,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(541,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(542,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(543,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(544,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(545,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(546,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(547,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(548,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(549,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(550,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(551,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(552,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(553,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(554,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(555,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(556,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(557,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(558,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(559,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(560,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(561,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(562,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(563,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(564,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(565,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(566,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(567,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(568,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(569,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(570,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(571,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(572,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(573,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(574,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,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(575,45,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(576,46,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(577,47,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(578,48,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(579,49,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(580,50,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(581,51,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(582,52,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(583,53,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(584,54,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(585,55,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(586,56,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(587,57,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(588,58,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(589,59,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(590,60,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(591,61,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(592,62,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(593,63,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(594,64,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(595,65,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(599,69,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(600,70,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(601,71,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(603,73,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(606,76,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(608,78,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(609,79,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(616,86,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(617,87,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(618,88,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(620,90,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(622,92,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(623,93,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'),(624,94,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-06-10 14:45:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-06-10 02:45:52','2020-06-10 02:45:52'); +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,10,'Subject for Pledge Acknowledgment','2020-02-10 22:36:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(2,NULL,9,'Subject for Tell a Friend','2020-07-10 09:36:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(3,NULL,9,'Subject for Tell a Friend','2019-10-23 21:11:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(4,NULL,10,'Subject for Pledge Acknowledgment','2020-01-25 21:48:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(5,NULL,9,'Subject for Tell a Friend','2020-04-09 13:53:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(6,NULL,10,'Subject for Pledge Acknowledgment','2019-11-28 12:45:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(7,NULL,10,'Subject for Pledge Acknowledgment','2019-11-25 11:57:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(8,NULL,9,'Subject for Tell a Friend','2020-07-01 21:13:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(9,NULL,9,'Subject for Tell a Friend','2019-12-04 18:07:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(10,NULL,9,'Subject for Tell a Friend','2020-01-10 18:16:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(11,NULL,10,'Subject for Pledge Acknowledgment','2019-11-12 17:06:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(12,NULL,9,'Subject for Tell a Friend','2019-10-09 00:12:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(13,NULL,9,'Subject for Tell a Friend','2019-12-28 00:37:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(14,NULL,10,'Subject for Pledge Acknowledgment','2019-09-18 15:30:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(15,NULL,9,'Subject for Tell a Friend','2020-04-23 01:33:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(16,NULL,10,'Subject for Pledge Acknowledgment','2020-02-06 22:59:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(17,NULL,9,'Subject for Tell a Friend','2020-05-14 08:33:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(18,NULL,9,'Subject for Tell a Friend','2020-03-03 16:08:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(19,NULL,9,'Subject for Tell a Friend','2020-01-02 11:31:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(20,NULL,9,'Subject for Tell a Friend','2020-01-21 15:32:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(21,NULL,9,'Subject for Tell a Friend','2019-11-19 15:55:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(22,NULL,10,'Subject for Pledge Acknowledgment','2020-02-09 19:43:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(23,NULL,9,'Subject for Tell a Friend','2020-04-23 07:17:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(24,NULL,9,'Subject for Tell a Friend','2020-05-06 04:29:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(25,NULL,9,'Subject for Tell a Friend','2019-11-10 18:19:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(26,NULL,10,'Subject for Pledge Acknowledgment','2020-03-16 23:19:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(27,NULL,9,'Subject for Tell a Friend','2020-07-01 12:22:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(28,NULL,10,'Subject for Pledge Acknowledgment','2020-07-19 00:40:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(29,NULL,10,'Subject for Pledge Acknowledgment','2020-05-25 00:37:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(30,NULL,10,'Subject for Pledge Acknowledgment','2020-05-19 14:18:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(31,NULL,10,'Subject for Pledge Acknowledgment','2020-07-01 04:28:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(32,NULL,9,'Subject for Tell a Friend','2019-08-15 21:07:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(33,NULL,10,'Subject for Pledge Acknowledgment','2020-05-11 15:40:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(34,NULL,9,'Subject for Tell a Friend','2020-02-12 20:09:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(35,NULL,10,'Subject for Pledge Acknowledgment','2019-11-26 11:16:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(36,NULL,10,'Subject for Pledge Acknowledgment','2019-11-28 03:25:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(37,NULL,9,'Subject for Tell a Friend','2020-07-15 01:35:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(38,NULL,9,'Subject for Tell a Friend','2020-02-19 22:18:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(39,NULL,9,'Subject for Tell a Friend','2020-05-29 00:51:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(40,NULL,9,'Subject for Tell a Friend','2020-04-08 16:09:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(41,NULL,9,'Subject for Tell a Friend','2019-11-30 17:37:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(42,NULL,10,'Subject for Pledge Acknowledgment','2019-08-29 22:36:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(43,NULL,10,'Subject for Pledge Acknowledgment','2019-07-27 04:48:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(44,NULL,9,'Subject for Tell a Friend','2020-02-07 08:33:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(45,NULL,10,'Subject for Pledge Acknowledgment','2019-10-08 06:33:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(46,NULL,9,'Subject for Tell a Friend','2019-11-07 05:39:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(47,NULL,9,'Subject for Tell a Friend','2020-07-16 04:56:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(48,NULL,10,'Subject for Pledge Acknowledgment','2020-06-24 04:44:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(49,NULL,9,'Subject for Tell a Friend','2019-09-05 17:00:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(50,NULL,9,'Subject for Tell a Friend','2019-12-16 01:54:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(51,NULL,10,'Subject for Pledge Acknowledgment','2020-06-22 23:12:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(52,NULL,10,'Subject for Pledge Acknowledgment','2019-08-01 06:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(53,NULL,9,'Subject for Tell a Friend','2019-09-09 21:56:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(54,NULL,9,'Subject for Tell a Friend','2020-06-25 15:15:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(55,NULL,9,'Subject for Tell a Friend','2020-04-20 19:09:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(56,NULL,9,'Subject for Tell a Friend','2020-01-28 00:48:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(57,NULL,9,'Subject for Tell a Friend','2020-05-31 02:51:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(58,NULL,10,'Subject for Pledge Acknowledgment','2019-10-01 15:16:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(59,NULL,10,'Subject for Pledge Acknowledgment','2020-02-24 09:22:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(60,NULL,10,'Subject for Pledge Acknowledgment','2019-12-11 02:10:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(61,NULL,10,'Subject for Pledge Acknowledgment','2020-07-21 06:13:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(62,NULL,10,'Subject for Pledge Acknowledgment','2020-05-01 05:20:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(63,NULL,9,'Subject for Tell a Friend','2020-01-09 06:28:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(64,NULL,9,'Subject for Tell a Friend','2020-01-15 21:39:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(65,NULL,10,'Subject for Pledge Acknowledgment','2020-02-12 10:56:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(66,NULL,9,'Subject for Tell a Friend','2019-10-14 23:33:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(67,NULL,10,'Subject for Pledge Acknowledgment','2020-05-02 17:30:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(68,NULL,9,'Subject for Tell a Friend','2019-09-07 02:51:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(69,NULL,9,'Subject for Tell a Friend','2019-11-18 18:30:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(70,NULL,10,'Subject for Pledge Acknowledgment','2020-01-02 13:01:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(71,NULL,10,'Subject for Pledge Acknowledgment','2019-08-19 11:52:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(72,NULL,9,'Subject for Tell a Friend','2019-10-25 18:35:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(73,NULL,9,'Subject for Tell a Friend','2019-09-29 08:51:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(74,NULL,10,'Subject for Pledge Acknowledgment','2020-06-02 16:46:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(75,NULL,10,'Subject for Pledge Acknowledgment','2020-01-20 03:15:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(76,NULL,10,'Subject for Pledge Acknowledgment','2020-06-13 14:51:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(77,NULL,10,'Subject for Pledge Acknowledgment','2020-05-09 23:16:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(78,NULL,9,'Subject for Tell a Friend','2019-12-07 02:04:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(79,NULL,10,'Subject for Pledge Acknowledgment','2019-11-11 07:23:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(80,NULL,10,'Subject for Pledge Acknowledgment','2020-01-26 14:54:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(81,NULL,10,'Subject for Pledge Acknowledgment','2020-06-21 19:10:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(82,NULL,10,'Subject for Pledge Acknowledgment','2020-05-09 04:20:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(83,NULL,9,'Subject for Tell a Friend','2019-11-30 23:20:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(84,NULL,9,'Subject for Tell a Friend','2019-11-03 17:00:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(85,NULL,10,'Subject for Pledge Acknowledgment','2020-07-24 05:06:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(86,NULL,10,'Subject for Pledge Acknowledgment','2020-07-10 13:36:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(87,NULL,10,'Subject for Pledge Acknowledgment','2019-10-22 05:26:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(88,NULL,10,'Subject for Pledge Acknowledgment','2020-03-08 05:00:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(89,NULL,10,'Subject for Pledge Acknowledgment','2020-04-22 11:44:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(90,NULL,9,'Subject for Tell a Friend','2020-03-14 00:53:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(91,NULL,10,'Subject for Pledge Acknowledgment','2019-08-10 22:23:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(92,NULL,9,'Subject for Tell a Friend','2020-04-08 23:35:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(93,NULL,9,'Subject for Tell a Friend','2019-12-29 00:02:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(94,NULL,9,'Subject for Tell a Friend','2020-02-28 23:00:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(95,NULL,9,'Subject for Tell a Friend','2019-08-06 11:09:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(96,NULL,10,'Subject for Pledge Acknowledgment','2019-12-13 16:50:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(97,NULL,10,'Subject for Pledge Acknowledgment','2019-11-02 22:14:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(98,NULL,9,'Subject for Tell a Friend','2019-08-08 17:07:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(99,NULL,9,'Subject for Tell a Friend','2020-01-04 06:20:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(100,NULL,9,'Subject for Tell a Friend','2020-01-08 07:54:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(101,NULL,9,'Subject for Tell a Friend','2020-02-18 02:05:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(102,NULL,10,'Subject for Pledge Acknowledgment','2020-06-07 05:18:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(103,NULL,10,'Subject for Pledge Acknowledgment','2019-11-16 01:08:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(104,NULL,9,'Subject for Tell a Friend','2020-06-02 23:35:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(105,NULL,10,'Subject for Pledge Acknowledgment','2020-03-09 08:49:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(106,NULL,9,'Subject for Tell a Friend','2019-12-20 12:35:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(107,NULL,10,'Subject for Pledge Acknowledgment','2019-12-16 12:53:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(108,NULL,9,'Subject for Tell a Friend','2020-06-25 08:57:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(109,NULL,9,'Subject for Tell a Friend','2020-07-24 02:07:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(110,NULL,10,'Subject for Pledge Acknowledgment','2020-03-12 13:01:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(111,NULL,9,'Subject for Tell a Friend','2020-05-03 10:42:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(112,NULL,9,'Subject for Tell a Friend','2020-05-27 20:44:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(113,NULL,10,'Subject for Pledge Acknowledgment','2020-05-07 22:55:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(114,NULL,9,'Subject for Tell a Friend','2020-03-09 00:54:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(115,NULL,9,'Subject for Tell a Friend','2019-10-07 20:47:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(116,NULL,10,'Subject for Pledge Acknowledgment','2020-01-19 09:08:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(117,NULL,10,'Subject for Pledge Acknowledgment','2020-06-03 04:14:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(118,NULL,10,'Subject for Pledge Acknowledgment','2020-02-16 10:07:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(119,NULL,9,'Subject for Tell a Friend','2019-10-13 06:54:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(120,NULL,9,'Subject for Tell a Friend','2019-08-15 17:03:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(121,NULL,10,'Subject for Pledge Acknowledgment','2020-05-10 03:12:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(122,NULL,9,'Subject for Tell a Friend','2020-06-19 13:14:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(123,NULL,9,'Subject for Tell a Friend','2020-05-27 01:04:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(124,NULL,9,'Subject for Tell a Friend','2020-03-23 01:13:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(125,NULL,10,'Subject for Pledge Acknowledgment','2020-05-27 03:27:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(126,NULL,9,'Subject for Tell a Friend','2020-06-07 01:14:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(127,NULL,9,'Subject for Tell a Friend','2020-03-19 10:17:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(128,NULL,10,'Subject for Pledge Acknowledgment','2020-02-08 22:25:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(129,NULL,9,'Subject for Tell a Friend','2019-10-06 17:15:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(130,NULL,9,'Subject for Tell a Friend','2019-09-14 11:17:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(131,NULL,9,'Subject for Tell a Friend','2019-10-20 23:58:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(132,NULL,9,'Subject for Tell a Friend','2019-11-07 13:58:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(133,NULL,9,'Subject for Tell a Friend','2019-11-18 14:37:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(134,NULL,9,'Subject for Tell a Friend','2019-09-17 13:14:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(135,NULL,9,'Subject for Tell a Friend','2020-04-10 02:52:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(136,NULL,9,'Subject for Tell a Friend','2020-01-09 10:16:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(137,NULL,10,'Subject for Pledge Acknowledgment','2020-02-26 00:42:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(138,NULL,10,'Subject for Pledge Acknowledgment','2020-07-18 16:35:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(139,NULL,9,'Subject for Tell a Friend','2019-11-17 16:14:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(140,NULL,10,'Subject for Pledge Acknowledgment','2019-10-06 04:50:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(141,NULL,10,'Subject for Pledge Acknowledgment','2019-10-06 11:23:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(142,NULL,10,'Subject for Pledge Acknowledgment','2020-06-05 13:39:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(143,NULL,10,'Subject for Pledge Acknowledgment','2020-05-04 09:52:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(144,NULL,10,'Subject for Pledge Acknowledgment','2020-06-13 21:43:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(145,NULL,10,'Subject for Pledge Acknowledgment','2019-11-04 15:35:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(146,NULL,9,'Subject for Tell a Friend','2019-11-16 17:27:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(147,NULL,10,'Subject for Pledge Acknowledgment','2020-02-13 01:40:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(148,NULL,10,'Subject for Pledge Acknowledgment','2019-08-13 22:41:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(149,NULL,10,'Subject for Pledge Acknowledgment','2020-04-11 07:00:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(150,NULL,10,'Subject for Pledge Acknowledgment','2020-06-11 03:48:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(151,NULL,9,'Subject for Tell a Friend','2019-10-13 12:26:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(152,NULL,9,'Subject for Tell a Friend','2020-03-13 08:10:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(153,NULL,9,'Subject for Tell a Friend','2019-12-18 06:53:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(154,NULL,10,'Subject for Pledge Acknowledgment','2019-12-31 11:27:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(155,NULL,10,'Subject for Pledge Acknowledgment','2019-09-06 16:09:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(156,NULL,10,'Subject for Pledge Acknowledgment','2019-11-05 20:33:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(157,NULL,10,'Subject for Pledge Acknowledgment','2019-09-08 18:46:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(158,NULL,10,'Subject for Pledge Acknowledgment','2019-11-14 02:03:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(159,NULL,10,'Subject for Pledge Acknowledgment','2019-09-05 12:00:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(160,NULL,10,'Subject for Pledge Acknowledgment','2019-11-04 18:20:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(161,NULL,10,'Subject for Pledge Acknowledgment','2019-09-02 20:02:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(162,NULL,9,'Subject for Tell a Friend','2019-08-04 07:24:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(163,NULL,10,'Subject for Pledge Acknowledgment','2019-12-30 12:40:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(164,NULL,9,'Subject for Tell a Friend','2020-01-13 09:55:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:03','2020-07-24 05:34:03'),(165,NULL,9,'Subject for Tell a Friend','2020-05-22 02:13:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(166,NULL,10,'Subject for Pledge Acknowledgment','2020-03-07 20:20:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(167,NULL,9,'Subject for Tell a Friend','2019-12-07 17:37:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(168,NULL,9,'Subject for Tell a Friend','2020-01-23 05:29:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(169,NULL,10,'Subject for Pledge Acknowledgment','2020-03-06 01:58:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(170,NULL,10,'Subject for Pledge Acknowledgment','2020-05-02 05:51:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(171,NULL,9,'Subject for Tell a Friend','2020-02-23 09:46:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(172,NULL,10,'Subject for Pledge Acknowledgment','2020-02-19 18:24:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(173,NULL,10,'Subject for Pledge Acknowledgment','2020-07-11 01:44:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(174,NULL,9,'Subject for Tell a Friend','2019-12-20 10:58:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(175,NULL,10,'Subject for Pledge Acknowledgment','2019-12-13 01:20:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(176,NULL,9,'Subject for Tell a Friend','2019-09-08 10:07:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(177,NULL,10,'Subject for Pledge Acknowledgment','2019-11-07 14:17:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(178,NULL,9,'Subject for Tell a Friend','2019-12-11 02:01:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(179,NULL,10,'Subject for Pledge Acknowledgment','2019-11-20 00:32:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(180,NULL,10,'Subject for Pledge Acknowledgment','2020-05-20 05:10:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(181,NULL,9,'Subject for Tell a Friend','2019-08-09 15:29:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(182,NULL,10,'Subject for Pledge Acknowledgment','2019-12-08 14:38:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(183,NULL,9,'Subject for Tell a Friend','2020-06-27 14:10:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(184,NULL,10,'Subject for Pledge Acknowledgment','2019-09-18 01:16:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(185,NULL,10,'Subject for Pledge Acknowledgment','2020-06-26 06:46:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(186,NULL,9,'Subject for Tell a Friend','2020-01-27 11:13:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(187,NULL,9,'Subject for Tell a Friend','2019-07-31 00:01:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(188,NULL,10,'Subject for Pledge Acknowledgment','2019-07-31 03:25:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(189,NULL,9,'Subject for Tell a Friend','2020-06-29 10:20:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(190,NULL,9,'Subject for Tell a Friend','2020-01-10 02:53:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(191,NULL,10,'Subject for Pledge Acknowledgment','2020-02-25 13:46:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(192,NULL,10,'Subject for Pledge Acknowledgment','2020-05-31 10:43:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(193,NULL,9,'Subject for Tell a Friend','2019-11-23 11:48:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(194,NULL,10,'Subject for Pledge Acknowledgment','2019-12-14 14:32:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(195,NULL,10,'Subject for Pledge Acknowledgment','2020-03-11 19:59:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(196,NULL,9,'Subject for Tell a Friend','2020-07-19 16:48:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(197,NULL,10,'Subject for Pledge Acknowledgment','2020-07-06 05:44:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(198,NULL,9,'Subject for Tell a Friend','2020-04-12 17:17:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(199,NULL,10,'Subject for Pledge Acknowledgment','2020-02-07 08:00:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(200,NULL,9,'Subject for Tell a Friend','2020-03-01 09:47:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(201,NULL,9,'Subject for Tell a Friend','2019-11-17 03:20:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(202,NULL,9,'Subject for Tell a Friend','2020-05-19 11:32:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(203,NULL,10,'Subject for Pledge Acknowledgment','2020-06-12 16:55:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(204,NULL,9,'Subject for Tell a Friend','2020-03-11 19:26:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(205,NULL,9,'Subject for Tell a Friend','2020-04-08 08:16:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(206,NULL,9,'Subject for Tell a Friend','2020-06-30 04:29:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(207,NULL,10,'Subject for Pledge Acknowledgment','2020-02-11 02:21:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(208,NULL,10,'Subject for Pledge Acknowledgment','2020-01-11 21:31:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(209,NULL,9,'Subject for Tell a Friend','2019-09-02 16:14:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(210,NULL,10,'Subject for Pledge Acknowledgment','2020-06-05 16:10:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(211,NULL,10,'Subject for Pledge Acknowledgment','2019-11-20 17:01:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(212,NULL,10,'Subject for Pledge Acknowledgment','2020-03-07 17:14:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(213,NULL,9,'Subject for Tell a Friend','2020-05-09 23:38:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(214,NULL,9,'Subject for Tell a Friend','2019-10-27 17:22:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(215,NULL,10,'Subject for Pledge Acknowledgment','2020-06-28 16:21:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(216,NULL,9,'Subject for Tell a Friend','2019-11-14 23:18:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(217,NULL,10,'Subject for Pledge Acknowledgment','2020-01-22 09:26:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(218,NULL,9,'Subject for Tell a Friend','2019-12-30 22:38:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(219,NULL,10,'Subject for Pledge Acknowledgment','2020-05-29 16:35:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(220,NULL,9,'Subject for Tell a Friend','2019-08-22 08:39:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(221,NULL,10,'Subject for Pledge Acknowledgment','2020-06-12 09:26:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(222,NULL,10,'Subject for Pledge Acknowledgment','2020-04-16 20:38:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(223,NULL,9,'Subject for Tell a Friend','2020-02-07 05:03:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(224,NULL,10,'Subject for Pledge Acknowledgment','2020-07-06 12:55:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(225,NULL,9,'Subject for Tell a Friend','2020-06-19 11:31:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(226,NULL,10,'Subject for Pledge Acknowledgment','2020-02-23 18:01:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(227,NULL,10,'Subject for Pledge Acknowledgment','2020-06-26 14:42:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(228,NULL,10,'Subject for Pledge Acknowledgment','2019-11-06 23:22:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(229,NULL,9,'Subject for Tell a Friend','2019-08-08 11:36:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(230,NULL,9,'Subject for Tell a Friend','2020-05-27 01:43:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(231,NULL,10,'Subject for Pledge Acknowledgment','2019-11-20 04:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(232,NULL,9,'Subject for Tell a Friend','2020-01-15 13:23:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(233,NULL,9,'Subject for Tell a Friend','2019-08-14 16:16:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(234,NULL,9,'Subject for Tell a Friend','2020-07-03 19:32:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(235,NULL,9,'Subject for Tell a Friend','2019-09-06 19:28:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(236,NULL,10,'Subject for Pledge Acknowledgment','2020-02-10 00:44:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(237,NULL,10,'Subject for Pledge Acknowledgment','2020-05-01 22:31:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(238,NULL,9,'Subject for Tell a Friend','2020-04-28 23:59:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(239,NULL,10,'Subject for Pledge Acknowledgment','2020-03-08 04:37:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(240,NULL,9,'Subject for Tell a Friend','2019-12-07 22:06:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(241,NULL,9,'Subject for Tell a Friend','2020-02-29 20:52:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(242,NULL,9,'Subject for Tell a Friend','2020-06-12 21:13:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(243,NULL,9,'Subject for Tell a Friend','2020-06-13 08:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(244,NULL,10,'Subject for Pledge Acknowledgment','2019-10-29 18:25:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(245,NULL,9,'Subject for Tell a Friend','2020-06-28 09:05:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(246,NULL,10,'Subject for Pledge Acknowledgment','2020-06-23 03:41:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(247,NULL,9,'Subject for Tell a Friend','2020-05-17 06:36:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(248,NULL,9,'Subject for Tell a Friend','2019-12-07 12:45:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(249,NULL,9,'Subject for Tell a Friend','2019-10-10 07:28:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(250,NULL,9,'Subject for Tell a Friend','2020-01-27 08:09:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(251,NULL,9,'Subject for Tell a Friend','2020-05-06 10:14:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(252,NULL,10,'Subject for Pledge Acknowledgment','2020-02-11 08:57:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(253,NULL,9,'Subject for Tell a Friend','2019-09-19 13:01:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(254,NULL,10,'Subject for Pledge Acknowledgment','2020-02-06 19:48:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(255,NULL,10,'Subject for Pledge Acknowledgment','2020-03-21 10:07:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(256,NULL,9,'Subject for Tell a Friend','2020-04-26 07:02:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(257,NULL,10,'Subject for Pledge Acknowledgment','2019-10-03 03:50:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(258,NULL,10,'Subject for Pledge Acknowledgment','2019-09-14 20:44:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(259,NULL,9,'Subject for Tell a Friend','2020-01-21 02:50:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(260,NULL,9,'Subject for Tell a Friend','2019-10-18 20:45:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(261,NULL,9,'Subject for Tell a Friend','2019-11-04 21:46:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(262,NULL,9,'Subject for Tell a Friend','2019-09-19 16:50:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(263,NULL,10,'Subject for Pledge Acknowledgment','2020-07-12 05:54:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(264,NULL,10,'Subject for Pledge Acknowledgment','2019-12-09 20:53:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(265,NULL,9,'Subject for Tell a Friend','2020-05-27 22:39:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(266,NULL,10,'Subject for Pledge Acknowledgment','2019-09-05 22:01:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(267,NULL,9,'Subject for Tell a Friend','2019-12-19 23:37:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(268,NULL,9,'Subject for Tell a Friend','2020-01-13 08:31:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(269,NULL,10,'Subject for Pledge Acknowledgment','2019-12-16 23:57:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(270,NULL,9,'Subject for Tell a Friend','2020-07-22 20:24:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(271,NULL,10,'Subject for Pledge Acknowledgment','2020-04-05 19:39:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(272,NULL,9,'Subject for Tell a Friend','2019-09-14 20:38:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(273,NULL,10,'Subject for Pledge Acknowledgment','2020-01-21 06:14:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(274,NULL,10,'Subject for Pledge Acknowledgment','2020-07-11 05:43:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(275,NULL,10,'Subject for Pledge Acknowledgment','2020-02-08 01:11:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(276,NULL,10,'Subject for Pledge Acknowledgment','2020-05-06 03:12:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(277,NULL,10,'Subject for Pledge Acknowledgment','2020-06-27 01:08:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(278,NULL,10,'Subject for Pledge Acknowledgment','2019-11-04 02:21:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(279,NULL,9,'Subject for Tell a Friend','2020-03-10 08:13:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(280,NULL,10,'Subject for Pledge Acknowledgment','2019-12-17 00:22:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(281,NULL,10,'Subject for Pledge Acknowledgment','2019-11-05 08:09:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(282,NULL,9,'Subject for Tell a Friend','2020-02-07 20:17:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(283,NULL,9,'Subject for Tell a Friend','2020-03-31 02:35:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(284,NULL,9,'Subject for Tell a Friend','2019-08-29 22:50:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(285,NULL,10,'Subject for Pledge Acknowledgment','2020-07-07 17:26:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(286,NULL,10,'Subject for Pledge Acknowledgment','2019-09-07 06:13:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(287,NULL,10,'Subject for Pledge Acknowledgment','2020-04-12 02:30:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(288,NULL,10,'Subject for Pledge Acknowledgment','2019-09-29 03:07:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(289,NULL,9,'Subject for Tell a Friend','2019-10-15 09:15:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(290,NULL,9,'Subject for Tell a Friend','2019-10-07 17:32:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(291,NULL,10,'Subject for Pledge Acknowledgment','2019-08-17 03:43:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(292,NULL,9,'Subject for Tell a Friend','2019-12-21 06:36:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(293,NULL,10,'Subject for Pledge Acknowledgment','2020-03-28 13:15:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(294,NULL,10,'Subject for Pledge Acknowledgment','2020-07-01 01:51:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(295,NULL,10,'Subject for Pledge Acknowledgment','2020-01-17 14:41:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(296,NULL,9,'Subject for Tell a Friend','2019-09-26 17:24:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(297,NULL,9,'Subject for Tell a Friend','2019-12-21 16:03:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(298,NULL,9,'Subject for Tell a Friend','2020-04-21 21:33:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(299,NULL,9,'Subject for Tell a Friend','2020-02-14 20:10:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(300,NULL,10,'Subject for Pledge Acknowledgment','2020-01-24 14:23:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(301,NULL,9,'Subject for Tell a Friend','2019-12-01 21:35:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(302,NULL,10,'Subject for Pledge Acknowledgment','2020-02-14 21:34:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(303,NULL,10,'Subject for Pledge Acknowledgment','2020-04-08 14:59:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(304,NULL,9,'Subject for Tell a Friend','2020-02-29 19:42:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(305,NULL,10,'Subject for Pledge Acknowledgment','2020-03-05 05:50:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(306,NULL,10,'Subject for Pledge Acknowledgment','2019-08-06 00:49:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(307,NULL,9,'Subject for Tell a Friend','2020-01-07 20:38:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(308,NULL,10,'Subject for Pledge Acknowledgment','2020-01-24 22:18:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(309,NULL,9,'Subject for Tell a Friend','2020-07-16 16:49:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(310,NULL,10,'Subject for Pledge Acknowledgment','2020-02-05 12:19:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(311,NULL,10,'Subject for Pledge Acknowledgment','2019-08-30 17:55:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(312,NULL,9,'Subject for Tell a Friend','2020-02-26 10:22:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(313,NULL,10,'Subject for Pledge Acknowledgment','2020-05-23 08:57:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(314,NULL,9,'Subject for Tell a Friend','2020-03-05 17:20:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(315,NULL,10,'Subject for Pledge Acknowledgment','2020-05-17 01:32:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(316,NULL,10,'Subject for Pledge Acknowledgment','2020-01-14 23:30:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(317,NULL,9,'Subject for Tell a Friend','2020-02-18 06:24:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(318,NULL,9,'Subject for Tell a Friend','2020-06-19 11:37:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(319,NULL,9,'Subject for Tell a Friend','2019-09-29 08:14:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(320,NULL,9,'Subject for Tell a Friend','2020-02-22 00:37:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(321,NULL,10,'Subject for Pledge Acknowledgment','2019-12-08 18:25:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(322,NULL,10,'Subject for Pledge Acknowledgment','2019-10-17 10:56:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(323,NULL,10,'Subject for Pledge Acknowledgment','2020-04-23 01:57:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(324,NULL,10,'Subject for Pledge Acknowledgment','2020-06-27 17:47:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(325,NULL,10,'Subject for Pledge Acknowledgment','2020-03-19 18:32:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(326,NULL,10,'Subject for Pledge Acknowledgment','2019-09-17 22:07:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(327,NULL,10,'Subject for Pledge Acknowledgment','2019-11-13 18:58:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(328,NULL,10,'Subject for Pledge Acknowledgment','2020-04-08 04:02:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(329,NULL,10,'Subject for Pledge Acknowledgment','2020-04-01 09:38:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(330,NULL,9,'Subject for Tell a Friend','2020-07-22 05:32:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(331,NULL,9,'Subject for Tell a Friend','2019-10-16 20:27:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(332,NULL,10,'Subject for Pledge Acknowledgment','2020-05-11 22:33:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(333,NULL,10,'Subject for Pledge Acknowledgment','2020-01-30 06:55:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(334,NULL,10,'Subject for Pledge Acknowledgment','2020-04-24 18:48:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(335,NULL,10,'Subject for Pledge Acknowledgment','2019-09-28 14:50:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(336,NULL,9,'Subject for Tell a Friend','2019-08-12 20:49:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(337,NULL,9,'Subject for Tell a Friend','2019-11-13 10:04:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(338,NULL,10,'Subject for Pledge Acknowledgment','2020-02-08 16:21:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(339,NULL,10,'Subject for Pledge Acknowledgment','2020-06-29 19:20:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(340,NULL,10,'Subject for Pledge Acknowledgment','2019-08-22 01:48:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(341,NULL,9,'Subject for Tell a Friend','2019-10-25 08:48:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(342,NULL,10,'Subject for Pledge Acknowledgment','2020-05-31 11:03:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(343,NULL,9,'Subject for Tell a Friend','2019-08-18 03:55:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(344,NULL,9,'Subject for Tell a Friend','2019-07-30 00:06:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(345,NULL,9,'Subject for Tell a Friend','2019-10-12 17:31:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(346,NULL,9,'Subject for Tell a Friend','2019-10-27 18:37:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(347,NULL,10,'Subject for Pledge Acknowledgment','2020-06-09 01:47:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(348,NULL,9,'Subject for Tell a Friend','2020-06-02 23:04:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(349,NULL,9,'Subject for Tell a Friend','2020-01-20 04:15:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(350,NULL,10,'Subject for Pledge Acknowledgment','2020-06-27 05:57:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(351,NULL,10,'Subject for Pledge Acknowledgment','2020-01-25 12:44:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(352,NULL,10,'Subject for Pledge Acknowledgment','2020-01-28 17:13:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(353,NULL,10,'Subject for Pledge Acknowledgment','2020-01-14 21:30:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(354,NULL,10,'Subject for Pledge Acknowledgment','2020-03-10 11:48:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(355,NULL,10,'Subject for Pledge Acknowledgment','2020-06-22 18:03:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(356,NULL,9,'Subject for Tell a Friend','2020-04-09 08:16:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(357,NULL,9,'Subject for Tell a Friend','2019-11-28 20:50:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(358,NULL,10,'Subject for Pledge Acknowledgment','2020-05-31 07:03:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(359,NULL,10,'Subject for Pledge Acknowledgment','2019-10-23 11:48:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(360,NULL,9,'Subject for Tell a Friend','2019-11-18 11:48:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(361,NULL,10,'Subject for Pledge Acknowledgment','2019-08-22 01:51:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(362,NULL,10,'Subject for Pledge Acknowledgment','2020-02-18 17:40:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(363,NULL,10,'Subject for Pledge Acknowledgment','2019-10-23 04:11:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(364,NULL,10,'Subject for Pledge Acknowledgment','2020-02-07 14:10:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(365,NULL,10,'Subject for Pledge Acknowledgment','2020-05-14 20:15:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(366,NULL,9,'Subject for Tell a Friend','2020-05-05 23:45:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(367,NULL,10,'Subject for Pledge Acknowledgment','2019-09-24 07:43:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(368,NULL,10,'Subject for Pledge Acknowledgment','2020-06-10 04:34:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(369,NULL,10,'Subject for Pledge Acknowledgment','2019-08-08 11:17:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(370,NULL,10,'Subject for Pledge Acknowledgment','2020-04-08 08:41:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(371,NULL,10,'Subject for Pledge Acknowledgment','2020-06-13 22:12:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(372,NULL,9,'Subject for Tell a Friend','2020-05-30 07:26:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(373,NULL,9,'Subject for Tell a Friend','2020-04-09 09:28:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(374,NULL,10,'Subject for Pledge Acknowledgment','2020-03-15 22:12:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(375,NULL,10,'Subject for Pledge Acknowledgment','2019-09-05 18:06:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(376,NULL,9,'Subject for Tell a Friend','2020-06-12 22:31:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(377,NULL,10,'Subject for Pledge Acknowledgment','2019-11-29 07:58:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(378,NULL,9,'Subject for Tell a Friend','2020-05-28 04:19:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(379,NULL,9,'Subject for Tell a Friend','2019-09-02 12:53:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(380,NULL,9,'Subject for Tell a Friend','2019-10-05 03:57:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(381,NULL,9,'Subject for Tell a Friend','2019-12-15 02:41:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(382,NULL,9,'Subject for Tell a Friend','2020-06-18 14:58:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(383,NULL,10,'Subject for Pledge Acknowledgment','2019-12-25 10:03:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(384,NULL,10,'Subject for Pledge Acknowledgment','2020-07-22 08:38:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(385,NULL,10,'Subject for Pledge Acknowledgment','2020-03-22 19:02:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(386,NULL,9,'Subject for Tell a Friend','2020-04-02 17:16:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(387,NULL,10,'Subject for Pledge Acknowledgment','2019-11-16 08:11:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(388,NULL,10,'Subject for Pledge Acknowledgment','2020-05-18 08:39:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(389,NULL,10,'Subject for Pledge Acknowledgment','2019-09-24 02:32:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(390,NULL,9,'Subject for Tell a Friend','2020-07-03 14:14:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(391,NULL,10,'Subject for Pledge Acknowledgment','2019-08-20 12:40:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(392,NULL,10,'Subject for Pledge Acknowledgment','2019-08-02 01:56:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(393,NULL,9,'Subject for Tell a Friend','2020-06-09 22:00:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(394,NULL,10,'Subject for Pledge Acknowledgment','2020-05-05 23:00:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(395,NULL,9,'Subject for Tell a Friend','2019-07-31 09:57:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(396,NULL,9,'Subject for Tell a Friend','2020-03-05 04:12:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(397,NULL,9,'Subject for Tell a Friend','2020-04-02 17:34:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(398,NULL,10,'Subject for Pledge Acknowledgment','2020-05-04 10:26:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(399,NULL,10,'Subject for Pledge Acknowledgment','2019-11-16 18:32:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(400,NULL,9,'Subject for Tell a Friend','2020-05-23 19:16:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(401,NULL,9,'Subject for Tell a Friend','2019-08-30 22:46:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(402,NULL,10,'Subject for Pledge Acknowledgment','2020-04-08 15:29:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(403,NULL,9,'Subject for Tell a Friend','2020-02-16 04:02:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(404,NULL,10,'Subject for Pledge Acknowledgment','2019-12-26 07:54:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(405,NULL,10,'Subject for Pledge Acknowledgment','2019-12-18 16:37:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(406,NULL,10,'Subject for Pledge Acknowledgment','2019-08-08 16:44:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(407,NULL,9,'Subject for Tell a Friend','2020-04-19 04:26:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(408,NULL,9,'Subject for Tell a Friend','2020-03-25 23:46:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(409,NULL,10,'Subject for Pledge Acknowledgment','2020-02-26 12:32:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(410,NULL,9,'Subject for Tell a Friend','2019-10-06 18:55:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(411,NULL,10,'Subject for Pledge Acknowledgment','2020-01-13 02:54:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(412,NULL,9,'Subject for Tell a Friend','2019-07-30 11:10:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(413,NULL,10,'Subject for Pledge Acknowledgment','2020-07-02 20:51:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(414,NULL,10,'Subject for Pledge Acknowledgment','2020-03-28 14:14:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(415,NULL,10,'Subject for Pledge Acknowledgment','2019-10-29 11:43:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(416,NULL,9,'Subject for Tell a Friend','2020-07-03 09:41:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(417,NULL,9,'Subject for Tell a Friend','2020-01-25 20:49:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(418,NULL,10,'Subject for Pledge Acknowledgment','2020-02-04 07:28:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(419,NULL,9,'Subject for Tell a Friend','2019-09-17 21:01:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(420,NULL,9,'Subject for Tell a Friend','2019-12-10 11:40:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(421,NULL,10,'Subject for Pledge Acknowledgment','2020-05-15 20:52:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(422,NULL,10,'Subject for Pledge Acknowledgment','2020-04-13 21:09:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(423,NULL,9,'Subject for Tell a Friend','2020-06-03 21:24:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(424,NULL,10,'Subject for Pledge Acknowledgment','2019-08-23 01:19:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(425,NULL,10,'Subject for Pledge Acknowledgment','2019-10-13 18:46:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(426,NULL,9,'Subject for Tell a Friend','2020-03-26 09:54:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(427,NULL,10,'Subject for Pledge Acknowledgment','2019-10-12 08:31:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(428,NULL,10,'Subject for Pledge Acknowledgment','2019-10-29 00:26:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(429,NULL,9,'Subject for Tell a Friend','2020-07-02 11:54:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(430,NULL,10,'Subject for Pledge Acknowledgment','2019-12-20 06:30:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(431,NULL,10,'Subject for Pledge Acknowledgment','2020-04-21 02:15:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(432,NULL,10,'Subject for Pledge Acknowledgment','2020-01-19 14:07:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(433,NULL,9,'Subject for Tell a Friend','2020-07-17 01:52:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(434,NULL,9,'Subject for Tell a Friend','2019-11-09 15:37:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(435,NULL,10,'Subject for Pledge Acknowledgment','2019-08-29 11:56:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(436,NULL,9,'Subject for Tell a Friend','2019-10-06 13:22:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(437,NULL,9,'Subject for Tell a Friend','2020-07-14 03:54:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(438,NULL,10,'Subject for Pledge Acknowledgment','2019-10-18 16:58:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(439,NULL,9,'Subject for Tell a Friend','2020-02-12 15:48:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(440,NULL,10,'Subject for Pledge Acknowledgment','2019-08-08 09:50:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(441,NULL,10,'Subject for Pledge Acknowledgment','2019-10-15 01:03:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(442,NULL,9,'Subject for Tell a Friend','2020-01-30 01:44:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(443,NULL,9,'Subject for Tell a Friend','2020-06-10 21:00:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(444,NULL,10,'Subject for Pledge Acknowledgment','2019-12-09 16:05:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(445,NULL,9,'Subject for Tell a Friend','2020-02-10 03:53:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(446,NULL,10,'Subject for Pledge Acknowledgment','2019-08-12 20:53:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(447,NULL,9,'Subject for Tell a Friend','2020-03-19 16:30:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(448,NULL,9,'Subject for Tell a Friend','2019-12-23 14:30:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(449,NULL,10,'Subject for Pledge Acknowledgment','2019-12-08 21:53:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(450,NULL,9,'Subject for Tell a Friend','2020-06-28 01:45:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(451,1,6,'$ 125.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(452,2,6,'$ 50.00-Online: Save the Penguins','2010-03-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(453,3,6,'$ 25.00-Apr 2007 Mailer 1','2010-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(454,4,6,'$ 50.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(455,5,6,'$ 500.00-Apr 2007 Mailer 1','2010-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(456,6,6,'$ 175.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(457,7,6,'$ 50.00-Online: Save the Penguins','2010-03-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(458,8,6,'$ 10.00-Online: Save the Penguins','2010-03-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(459,9,6,'$ 250.00-Online: Save the Penguins','2010-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(460,10,6,NULL,'2009-07-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(461,11,6,NULL,'2009-07-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(462,12,6,NULL,'2009-10-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(463,13,6,NULL,'2009-12-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(464,1,7,'General','2020-07-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(465,2,7,'Student','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(466,3,7,'General','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(467,4,7,'Student','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(468,5,7,'General','2018-06-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(469,6,7,'Student','2020-07-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(470,7,7,'General','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(471,8,7,'Student','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(472,9,7,'General','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(473,10,7,'General','2018-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(474,11,7,'Lifetime','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(475,12,7,'Student','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(476,13,7,'General','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(477,14,7,'Student','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(478,15,7,'General','2018-04-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(479,16,7,'Student','2020-07-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(480,17,7,'General','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(481,18,7,'Student','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(482,19,7,'General','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(483,20,7,'Student','2019-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(484,21,7,'General','2020-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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(485,22,7,'Lifetime','2020-07-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(486,23,7,'General','2020-07-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(487,24,7,'Student','2020-07-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(488,25,7,'General','2018-01-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(489,26,7,'Student','2020-06-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(490,27,7,'General','2020-06-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(491,28,7,'Student','2020-06-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(492,29,7,'General','2020-06-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(493,30,7,'Student','2019-06-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(494,14,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(495,15,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(496,16,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(497,17,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(498,18,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(499,19,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(500,20,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(501,21,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(502,22,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(503,23,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(504,24,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(505,25,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(506,26,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(507,27,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(508,28,6,'$ 100.00 - General Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(509,29,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(510,30,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(511,31,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(512,32,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(513,33,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(514,34,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(515,35,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(516,36,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(517,37,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(518,38,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(519,39,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(520,40,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(521,41,6,'$ 50.00 - Student Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(523,43,6,'$ 1200.00 - Lifetime Membership: Offline signup','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(525,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(526,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(527,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(528,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(529,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(530,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(531,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(532,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(533,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(534,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(535,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(536,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(537,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(538,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(539,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(540,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(541,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(542,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(543,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(544,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(545,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(546,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(547,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(548,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(549,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(550,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(551,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(552,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(553,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(554,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(555,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(556,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(557,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(558,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(559,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(560,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(561,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(562,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(563,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(564,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(565,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(566,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(567,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(568,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(569,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(570,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(571,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(572,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(573,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(574,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,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(575,45,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(576,46,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(577,47,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(578,48,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(579,49,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(580,50,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(581,51,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(582,52,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(583,53,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(584,54,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(585,55,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(586,56,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(587,57,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(588,58,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(589,59,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(590,60,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(591,61,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(592,62,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(595,65,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(596,66,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(597,67,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(598,68,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(601,71,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(603,73,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(605,75,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(607,77,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(608,78,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(611,81,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(612,82,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(614,84,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(615,85,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(616,86,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(617,87,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(619,89,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(623,93,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'),(624,94,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2020-07-24 15:34:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2020-07-24 05:34:04','2020-07-24 05:34:04'); /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */; UNLOCK TABLES; @@ -97,7 +97,7 @@ 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,17,1,3),(578,376,1,3),(773,535,1,2),(246,167,2,3),(349,229,2,3),(540,352,2,3),(556,362,2,3),(689,451,2,2),(287,193,3,3),(794,556,3,2),(446,293,4,3),(499,325,4,3),(631,410,4,3),(690,452,4,2),(724,486,4,2),(743,505,4,2),(790,552,4,2),(52,37,5,3),(293,196,5,3),(144,100,6,3),(691,453,6,2),(559,364,7,3),(805,567,7,2),(103,73,8,3),(151,104,8,3),(372,245,8,3),(692,454,8,2),(222,152,9,3),(502,327,9,3),(537,350,9,3),(704,466,9,2),(733,495,9,2),(426,280,10,3),(457,299,10,3),(713,475,10,2),(751,513,10,2),(189,129,11,3),(351,230,11,3),(508,331,11,3),(807,569,11,2),(261,176,12,3),(403,266,12,3),(430,283,12,3),(716,478,12,2),(739,501,12,2),(806,568,12,2),(165,113,13,3),(136,95,14,3),(269,181,14,3),(291,195,14,3),(465,304,14,3),(688,450,14,3),(146,101,15,3),(324,215,15,3),(725,487,15,2),(756,518,15,2),(693,455,16,2),(633,411,17,3),(232,159,18,3),(444,292,18,3),(720,482,18,2),(741,503,18,2),(802,564,18,2),(220,151,19,2),(221,152,19,2),(223,153,19,2),(224,154,19,2),(226,155,19,2),(227,156,19,2),(229,157,19,2),(230,158,19,2),(231,159,19,2),(233,160,19,2),(234,161,19,2),(236,162,19,2),(238,163,19,2),(239,164,19,2),(241,165,19,2),(243,166,19,2),(245,167,19,2),(247,168,19,2),(249,169,19,2),(250,170,19,2),(251,171,19,2),(252,172,19,2),(254,173,19,2),(256,174,19,2),(258,175,19,2),(260,176,19,2),(262,177,19,2),(263,178,19,2),(265,179,19,2),(266,180,19,2),(268,181,19,2),(270,182,19,2),(272,183,19,2),(273,184,19,2),(274,185,19,2),(276,186,19,2),(277,187,19,2),(278,188,19,2),(280,189,19,2),(282,190,19,2),(284,191,19,2),(285,192,19,2),(286,193,19,2),(288,194,19,2),(290,195,19,2),(292,196,19,2),(294,197,19,2),(296,198,19,2),(298,199,19,2),(300,200,19,2),(302,201,19,2),(304,202,19,2),(306,203,19,2),(307,204,19,2),(309,205,19,2),(311,206,19,2),(312,207,19,2),(314,208,19,2),(315,209,19,2),(317,210,19,2),(318,211,19,2),(319,212,19,2),(320,213,19,2),(321,214,19,2),(323,215,19,2),(325,216,19,2),(327,217,19,2),(329,218,19,2),(331,219,19,2),(333,220,19,2),(335,221,19,2),(336,221,19,3),(337,222,19,2),(339,223,19,2),(340,224,19,2),(341,225,19,2),(343,226,19,2),(345,227,19,2),(346,228,19,2),(348,229,19,2),(350,230,19,2),(352,231,19,2),(354,232,19,2),(355,233,19,2),(356,234,19,2),(357,235,19,2),(358,236,19,2),(360,237,19,2),(361,238,19,2),(363,239,19,2),(364,240,19,2),(366,241,19,2),(367,242,19,2),(369,243,19,2),(370,244,19,2),(371,245,19,2),(373,246,19,2),(374,247,19,2),(376,248,19,2),(378,249,19,2),(379,250,19,2),(380,251,19,2),(382,252,19,2),(383,253,19,2),(384,254,19,2),(386,255,19,2),(388,256,19,2),(389,257,19,2),(390,258,19,2),(392,259,19,2),(394,260,19,2),(395,261,19,2),(396,262,19,2),(397,263,19,2),(399,264,19,2),(401,265,19,2),(402,266,19,2),(404,267,19,2),(405,268,19,2),(406,269,19,2),(407,270,19,2),(409,271,19,2),(411,272,19,2),(413,273,19,2),(414,274,19,2),(415,275,19,2),(416,275,19,3),(417,276,19,2),(419,277,19,2),(421,278,19,2),(423,279,19,2),(425,280,19,2),(427,281,19,2),(428,282,19,2),(429,283,19,2),(431,284,19,2),(433,285,19,2),(434,286,19,2),(436,287,19,2),(438,288,19,2),(439,289,19,2),(440,290,19,2),(442,291,19,2),(443,292,19,2),(445,293,19,2),(447,294,19,2),(449,295,19,2),(451,296,19,2),(453,297,19,2),(455,298,19,2),(456,299,19,2),(458,300,19,2),(694,456,19,2),(161,110,20,3),(480,312,20,3),(554,361,20,3),(777,539,20,2),(344,226,21,3),(484,315,21,3),(117,83,23,3),(228,156,23,3),(381,251,23,3),(774,536,23,2),(368,242,25,3),(271,182,26,3),(301,200,26,3),(342,225,26,3),(637,413,26,3),(177,122,27,3),(398,263,27,3),(475,309,27,3),(533,348,27,3),(792,554,27,2),(202,139,28,3),(504,328,28,3),(624,405,28,3),(121,86,30,3),(514,335,30,3),(522,339,30,3),(788,550,30,2),(66,45,32,3),(592,384,32,3),(700,462,32,2),(701,463,32,2),(729,491,32,2),(758,520,32,2),(216,148,33,3),(812,574,33,2),(36,26,34,3),(78,54,34,3),(207,142,34,3),(561,365,34,3),(697,459,34,2),(316,209,35,3),(671,439,35,3),(235,161,36,3),(242,165,36,3),(516,336,36,3),(210,144,37,3),(259,175,38,3),(614,399,38,3),(115,82,39,3),(518,337,39,3),(585,380,39,3),(609,396,39,3),(385,254,40,3),(54,38,41,3),(462,302,41,3),(718,480,41,2),(740,502,41,2),(156,107,42,3),(240,164,42,3),(126,89,43,3),(184,126,43,3),(375,247,43,3),(535,349,43,3),(699,461,43,2),(48,34,44,3),(74,52,44,3),(212,145,44,3),(572,371,44,3),(598,388,44,3),(170,117,45,3),(424,279,45,3),(492,321,45,3),(678,443,45,3),(84,58,46,3),(279,188,46,3),(281,189,46,3),(448,294,46,3),(248,168,47,3),(612,398,47,3),(92,65,48,3),(547,356,48,3),(420,277,49,3),(544,354,49,3),(14,12,50,3),(124,88,51,3),(347,228,51,3),(353,231,51,3),(785,547,51,2),(435,286,52,3),(710,472,52,2),(736,498,52,2),(789,551,52,2),(16,13,54,3),(646,421,54,3),(56,39,55,3),(587,381,55,3),(264,178,56,3),(338,222,57,3),(650,423,57,3),(660,431,57,3),(764,526,57,2),(134,94,58,3),(181,124,58,3),(305,202,58,3),(494,322,58,3),(653,425,59,3),(708,470,59,2),(735,497,59,2),(765,527,59,2),(195,134,60,3),(244,166,60,3),(275,185,60,3),(310,205,60,3),(565,367,60,3),(450,295,61,3),(496,323,61,3),(595,386,61,3),(799,561,61,2),(27,20,62,3),(154,106,62,3),(186,127,62,3),(486,316,62,3),(728,490,62,2),(745,507,62,2),(38,27,63,3),(174,120,63,3),(267,180,63,3),(602,391,63,3),(25,19,64,3),(32,23,64,3),(289,194,64,3),(569,369,64,3),(622,404,64,3),(106,75,67,3),(542,353,67,3),(132,93,68,3),(619,402,68,3),(804,566,68,2),(511,333,69,3),(628,408,69,3),(330,218,70,3),(589,382,70,3),(769,531,70,2),(255,173,71,3),(322,214,71,3),(567,368,71,3),(675,441,71,3),(698,460,71,2),(359,236,72,3),(684,447,72,3),(61,42,73,3),(400,264,73,3),(459,300,73,3),(667,437,73,3),(714,476,73,2),(738,500,73,2),(787,549,74,2),(583,379,75,3),(798,560,75,2),(179,123,76,3),(297,198,76,3),(362,238,76,3),(412,272,76,3),(418,276,76,3),(766,528,76,2),(58,40,77,3),(303,201,77,3),(681,445,77,3),(257,174,78,3),(391,258,78,3),(142,99,79,3),(253,172,79,3),(387,255,79,3),(581,378,79,3),(225,154,80,3),(635,412,80,3),(20,16,81,3),(149,103,81,3),(719,481,81,2),(754,516,81,2),(63,43,82,3),(95,67,82,3),(695,457,82,2),(795,557,83,2),(299,199,84,3),(616,400,84,3),(334,220,85,3),(365,240,85,3),(454,297,85,3),(460,301,85,2),(461,302,85,2),(463,303,85,2),(464,304,85,2),(466,305,85,2),(468,306,85,2),(470,307,85,2),(472,308,85,2),(474,309,85,2),(476,310,85,2),(477,311,85,2),(479,312,85,2),(481,313,85,2),(482,314,85,2),(483,315,85,2),(485,316,85,2),(487,317,85,2),(488,318,85,2),(489,319,85,2),(490,320,85,2),(491,321,85,2),(493,322,85,2),(495,323,85,2),(497,324,85,2),(498,325,85,2),(500,326,85,2),(501,327,85,2),(503,328,85,2),(505,329,85,2),(506,330,85,2),(507,331,85,2),(509,332,85,2),(510,333,85,2),(512,334,85,2),(513,335,85,2),(515,336,85,2),(517,337,85,2),(519,338,85,2),(521,339,85,2),(523,340,85,2),(524,341,85,2),(525,342,85,2),(526,343,85,2),(528,344,85,2),(529,345,85,2),(530,346,85,2),(531,347,85,2),(532,348,85,2),(534,349,85,2),(536,350,85,2),(538,351,85,2),(539,352,85,2),(541,353,85,2),(543,354,85,2),(545,355,85,2),(546,356,85,2),(548,357,85,2),(550,358,85,2),(551,359,85,2),(552,360,85,2),(553,361,85,2),(555,362,85,2),(557,363,85,2),(558,364,85,2),(560,365,85,2),(562,366,85,2),(564,367,85,2),(566,368,85,2),(568,369,85,2),(570,370,85,2),(571,371,85,2),(573,372,85,2),(574,373,85,2),(575,374,85,2),(576,375,85,2),(577,376,85,2),(579,377,85,2),(580,378,85,2),(582,379,85,2),(584,380,85,2),(586,381,85,2),(588,382,85,2),(590,383,85,2),(591,384,85,2),(593,385,85,2),(594,386,85,2),(596,387,85,2),(597,388,85,2),(599,389,85,2),(600,390,85,2),(601,391,85,2),(603,392,85,2),(604,393,85,2),(605,394,85,2),(607,395,85,2),(608,396,85,2),(610,397,85,2),(611,398,85,2),(613,399,85,2),(615,400,85,2),(617,401,85,2),(618,402,85,2),(620,403,85,2),(621,404,85,2),(623,405,85,2),(625,406,85,2),(626,407,85,2),(627,408,85,2),(629,409,85,2),(630,410,85,2),(632,411,85,2),(634,412,85,2),(636,413,85,2),(638,414,85,2),(639,415,85,2),(640,416,85,2),(641,417,85,2),(642,418,85,2),(643,419,85,2),(644,420,85,2),(645,421,85,2),(647,422,85,2),(648,422,85,3),(649,423,85,2),(651,424,85,2),(652,425,85,2),(654,426,85,2),(655,427,85,2),(656,428,85,2),(657,429,85,2),(658,430,85,2),(659,431,85,2),(661,432,85,2),(662,433,85,2),(663,434,85,2),(664,435,85,2),(665,436,85,2),(666,437,85,2),(668,438,85,2),(670,439,85,2),(672,440,85,2),(674,441,85,2),(676,442,85,2),(677,443,85,2),(679,444,85,2),(680,445,85,2),(682,446,85,2),(683,447,85,2),(685,448,85,2),(686,449,85,2),(687,450,85,2),(128,90,86,3),(81,56,87,3),(432,284,87,3),(205,141,88,3),(377,248,88,3),(198,136,89,3),(283,190,89,3),(471,307,89,3),(469,306,90,3),(237,162,91,3),(437,287,91,3),(473,308,91,3),(218,149,92,3),(696,458,92,2),(726,488,92,2),(744,506,92,2),(30,22,93,3),(295,197,93,3),(452,296,93,3),(43,30,94,3),(40,28,95,3),(308,204,95,3),(328,217,95,3),(441,290,95,3),(527,343,95,3),(606,394,95,3),(467,305,96,3),(520,338,96,3),(76,53,97,3),(140,98,97,3),(159,109,97,3),(478,311,97,3),(410,271,98,3),(669,438,98,3),(723,485,98,2),(761,523,98,2),(109,77,99,3),(393,259,99,3),(549,357,99,3),(563,366,99,3),(97,68,100,3),(326,216,100,3),(408,270,100,3),(422,278,100,3),(673,440,100,3),(5,4,101,3),(313,207,101,3),(332,219,101,3),(731,493,107,2),(759,521,107,2),(709,471,109,2),(750,512,109,2),(717,479,110,2),(753,515,110,2),(780,542,110,2),(721,483,112,2),(755,517,112,2),(767,529,113,2),(730,492,117,2),(746,508,117,2),(793,555,118,2),(778,540,119,2),(801,563,121,2),(772,534,124,2),(722,484,126,2),(742,504,126,2),(727,489,134,2),(757,519,134,2),(763,525,134,2),(775,537,139,2),(809,571,141,2),(811,573,142,2),(786,548,146,2),(712,474,147,2),(760,522,147,2),(796,558,151,2),(771,533,152,2),(706,468,154,2),(734,496,154,2),(781,543,154,2),(702,464,158,2),(732,494,158,2),(779,541,159,2),(783,545,161,2),(803,565,162,2),(703,465,164,2),(747,509,164,2),(810,572,164,2),(1,1,166,2),(2,2,166,2),(3,3,166,2),(4,4,166,2),(6,5,166,2),(7,6,166,2),(8,7,166,2),(9,8,166,2),(10,9,166,2),(11,10,166,2),(12,11,166,2),(13,12,166,2),(15,13,166,2),(17,14,166,2),(18,15,166,2),(19,16,166,2),(21,17,166,2),(23,18,166,2),(24,19,166,2),(26,20,166,2),(28,21,166,2),(29,22,166,2),(31,23,166,2),(33,24,166,2),(34,25,166,2),(35,26,166,2),(37,27,166,2),(39,28,166,2),(41,29,166,2),(42,30,166,2),(44,31,166,2),(45,32,166,2),(46,33,166,2),(47,34,166,2),(49,35,166,2),(50,36,166,2),(51,37,166,2),(53,38,166,2),(55,39,166,2),(57,40,166,2),(59,41,166,2),(60,42,166,2),(62,43,166,2),(64,44,166,2),(65,45,166,2),(67,46,166,2),(68,47,166,2),(69,48,166,2),(70,49,166,2),(71,50,166,2),(72,51,166,2),(73,52,166,2),(75,53,166,2),(77,54,166,2),(79,55,166,2),(80,56,166,2),(82,57,166,2),(83,58,166,2),(85,59,166,2),(86,60,166,2),(87,61,166,2),(88,62,166,2),(89,63,166,2),(90,64,166,2),(91,65,166,2),(93,66,166,2),(94,67,166,2),(96,68,166,2),(98,69,166,2),(99,70,166,2),(100,71,166,2),(101,72,166,2),(102,73,166,2),(104,74,166,2),(105,75,166,2),(107,76,166,2),(108,77,166,2),(110,78,166,2),(111,79,166,2),(112,80,166,2),(113,81,166,2),(114,82,166,2),(116,83,166,2),(118,84,166,2),(119,85,166,2),(120,86,166,2),(122,87,166,2),(123,88,166,2),(125,89,166,2),(127,90,166,2),(129,91,166,2),(130,92,166,2),(131,93,166,2),(133,94,166,2),(135,95,166,2),(137,96,166,2),(138,97,166,2),(139,98,166,2),(141,99,166,2),(143,100,166,2),(145,101,166,2),(147,102,166,2),(148,103,166,2),(150,104,166,2),(152,105,166,2),(153,106,166,2),(155,107,166,2),(157,108,166,2),(158,109,166,2),(160,110,166,2),(162,111,166,2),(163,112,166,2),(164,113,166,2),(166,114,166,2),(167,115,166,2),(168,116,166,2),(169,117,166,2),(171,118,166,2),(172,119,166,2),(173,120,166,2),(175,121,166,2),(176,122,166,2),(178,123,166,2),(180,124,166,2),(182,125,166,2),(183,126,166,2),(185,127,166,2),(187,128,166,2),(188,129,166,2),(190,130,166,2),(191,131,166,2),(192,132,166,2),(193,133,166,2),(194,134,166,2),(196,135,166,2),(197,136,166,2),(199,137,166,2),(200,138,166,2),(201,139,166,2),(203,140,166,2),(204,141,166,2),(206,142,166,2),(208,143,166,2),(209,144,166,2),(211,145,166,2),(213,146,166,2),(214,147,166,2),(215,148,166,2),(217,149,166,2),(219,150,166,2),(770,532,171,2),(707,469,173,2),(749,511,173,2),(791,553,173,2),(705,467,174,2),(748,510,174,2),(768,530,177,2),(782,544,180,2),(784,546,183,2),(711,473,185,2),(737,499,185,2),(797,559,188,2),(715,477,190,2),(752,514,190,2),(800,562,197,2),(776,538,198,2),(808,570,199,2); +INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES (323,214,1,3),(235,153,2,3),(562,379,2,3),(585,395,2,3),(668,451,2,2),(78,49,3,3),(86,54,3,3),(159,104,3,3),(452,299,3,3),(189,123,4,3),(263,174,4,3),(650,439,4,3),(669,452,4,2),(364,241,5,3),(684,467,5,2),(727,510,5,2),(760,543,5,2),(312,206,6,3),(670,453,6,2),(772,555,6,2),(62,39,7,3),(115,73,7,3),(698,481,7,2),(733,516,7,2),(84,53,8,3),(448,297,8,3),(640,433,8,3),(664,448,8,3),(671,454,8,2),(756,539,8,2),(303,201,9,3),(403,265,9,3),(414,272,9,3),(129,84,10,3),(33,20,11,3),(259,171,11,3),(21,13,12,3),(326,216,12,3),(514,344,12,3),(611,412,12,3),(685,468,12,2),(713,496,12,2),(667,450,13,3),(708,491,13,2),(737,520,13,2),(656,443,14,3),(196,127,15,3),(230,151,15,2),(232,152,15,2),(234,153,15,2),(236,154,15,2),(237,155,15,2),(238,156,15,2),(239,157,15,2),(240,158,15,2),(241,159,15,2),(242,160,15,2),(243,161,15,2),(244,162,15,2),(246,163,15,2),(247,164,15,2),(249,165,15,2),(251,166,15,2),(252,167,15,2),(254,168,15,2),(256,169,15,2),(257,170,15,2),(258,171,15,2),(260,172,15,2),(261,173,15,2),(262,174,15,2),(264,175,15,2),(265,176,15,2),(267,177,15,2),(268,178,15,2),(270,179,15,2),(271,180,15,2),(272,181,15,2),(273,181,15,3),(274,182,15,2),(275,183,15,2),(277,184,15,2),(278,185,15,2),(279,186,15,2),(281,187,15,2),(283,188,15,2),(284,189,15,2),(286,190,15,2),(288,191,15,2),(289,192,15,2),(290,193,15,2),(292,194,15,2),(293,195,15,2),(294,196,15,2),(296,197,15,2),(297,198,15,2),(299,199,15,2),(300,200,15,2),(302,201,15,2),(304,202,15,2),(306,203,15,2),(307,204,15,2),(309,205,15,2),(311,206,15,2),(313,207,15,2),(314,208,15,2),(315,209,15,2),(317,210,15,2),(318,211,15,2),(319,212,15,2),(320,213,15,2),(322,214,15,2),(324,215,15,2),(325,216,15,2),(327,217,15,2),(328,218,15,2),(330,219,15,2),(331,220,15,2),(333,221,15,2),(334,222,15,2),(335,223,15,2),(337,224,15,2),(338,225,15,2),(340,226,15,2),(341,227,15,2),(342,228,15,2),(343,229,15,2),(345,230,15,2),(347,231,15,2),(348,232,15,2),(350,233,15,2),(352,234,15,2),(354,235,15,2),(356,236,15,2),(357,237,15,2),(358,238,15,2),(360,239,15,2),(361,240,15,2),(363,241,15,2),(365,242,15,2),(367,243,15,2),(369,244,15,2),(370,245,15,2),(372,246,15,2),(373,247,15,2),(375,248,15,2),(377,249,15,2),(379,250,15,2),(381,251,15,2),(383,252,15,2),(384,253,15,2),(386,254,15,2),(387,255,15,2),(388,256,15,2),(390,257,15,2),(391,258,15,2),(392,259,15,2),(394,260,15,2),(396,261,15,2),(398,262,15,2),(400,263,15,2),(401,264,15,2),(402,265,15,2),(404,266,15,2),(405,267,15,2),(407,268,15,2),(409,269,15,2),(410,270,15,2),(412,271,15,2),(413,272,15,2),(415,273,15,2),(416,274,15,2),(417,275,15,2),(418,276,15,2),(419,277,15,2),(420,278,15,2),(421,279,15,2),(423,280,15,2),(424,281,15,2),(425,282,15,2),(427,283,15,2),(429,284,15,2),(431,285,15,2),(432,286,15,2),(433,287,15,2),(434,288,15,2),(435,289,15,2),(437,290,15,2),(439,291,15,2),(440,292,15,2),(442,293,15,2),(443,294,15,2),(444,295,15,2),(445,296,15,2),(447,297,15,2),(449,298,15,2),(451,299,15,2),(453,300,15,2),(35,21,16,3),(408,268,16,3),(436,289,16,3),(470,312,16,3),(512,343,16,3),(621,419,16,3),(672,455,16,2),(385,253,17,3),(696,479,17,2),(732,515,17,2),(51,32,18,3),(175,114,18,3),(177,115,18,3),(225,146,18,3),(780,563,18,2),(673,456,19,2),(768,551,19,2),(155,101,20,3),(389,256,20,3),(703,486,20,2),(722,505,20,2),(127,83,21,3),(209,134,21,3),(463,307,21,3),(518,346,21,3),(767,550,21,2),(90,56,22,3),(496,331,22,3),(473,314,23,3),(544,366,23,3),(779,562,23,2),(336,223,24,3),(344,229,24,3),(765,548,24,2),(19,12,25,3),(521,348,25,3),(149,98,26,3),(316,209,26,3),(450,298,26,3),(509,341,26,3),(568,382,28,3),(54,34,29,3),(64,40,29,3),(104,66,29,3),(109,69,29,3),(382,251,29,3),(40,24,30,3),(770,553,30,2),(205,132,31,3),(753,536,31,2),(374,247,32,3),(399,262,32,3),(679,462,32,2),(680,463,32,2),(1,1,33,2),(2,2,33,2),(4,3,33,2),(6,4,33,2),(7,5,33,2),(9,6,33,2),(10,7,33,2),(11,8,33,2),(13,9,33,2),(15,10,33,2),(17,11,33,2),(18,12,33,2),(20,13,33,2),(22,14,33,2),(23,15,33,2),(25,16,33,2),(26,17,33,2),(28,18,33,2),(30,19,33,2),(32,20,33,2),(34,21,33,2),(36,22,33,2),(37,23,33,2),(39,24,33,2),(41,25,33,2),(43,26,33,2),(44,27,33,2),(46,28,33,2),(47,29,33,2),(48,30,33,2),(49,31,33,2),(50,32,33,2),(52,33,33,2),(53,34,33,2),(55,35,33,2),(56,36,33,2),(57,37,33,2),(59,38,33,2),(61,39,33,2),(63,40,33,2),(65,41,33,2),(67,42,33,2),(68,43,33,2),(69,44,33,2),(71,45,33,2),(72,46,33,2),(74,47,33,2),(76,48,33,2),(77,49,33,2),(79,50,33,2),(81,51,33,2),(82,52,33,2),(83,53,33,2),(85,54,33,2),(87,55,33,2),(89,56,33,2),(91,57,33,2),(93,58,33,2),(94,59,33,2),(95,60,33,2),(96,61,33,2),(97,62,33,2),(98,63,33,2),(100,64,33,2),(102,65,33,2),(103,66,33,2),(105,67,33,2),(106,68,33,2),(108,69,33,2),(110,70,33,2),(111,71,33,2),(112,72,33,2),(114,73,33,2),(116,74,33,2),(117,75,33,2),(118,76,33,2),(119,77,33,2),(120,78,33,2),(122,79,33,2),(123,80,33,2),(124,81,33,2),(125,82,33,2),(126,83,33,2),(128,84,33,2),(130,85,33,2),(131,86,33,2),(132,87,33,2),(133,88,33,2),(134,89,33,2),(135,90,33,2),(137,91,33,2),(138,92,33,2),(140,93,33,2),(142,94,33,2),(144,95,33,2),(146,96,33,2),(147,97,33,2),(148,98,33,2),(150,99,33,2),(152,100,33,2),(154,101,33,2),(156,102,33,2),(157,103,33,2),(158,104,33,2),(160,105,33,2),(161,106,33,2),(163,107,33,2),(164,108,33,2),(166,109,33,2),(168,110,33,2),(169,111,33,2),(171,112,33,2),(173,113,33,2),(174,114,33,2),(176,115,33,2),(178,116,33,2),(179,117,33,2),(180,118,33,2),(181,119,33,2),(183,120,33,2),(185,121,33,2),(186,122,33,2),(188,123,33,2),(190,124,33,2),(192,125,33,2),(193,126,33,2),(195,127,33,2),(197,128,33,2),(198,129,33,2),(200,130,33,2),(202,131,33,2),(204,132,33,2),(206,133,33,2),(208,134,33,2),(210,135,33,2),(212,136,33,2),(214,137,33,2),(215,138,33,2),(216,139,33,2),(218,140,33,2),(219,141,33,2),(220,142,33,2),(221,143,33,2),(222,144,33,2),(223,145,33,2),(224,146,33,2),(226,147,33,2),(227,148,33,2),(228,149,33,2),(229,150,33,2),(301,200,33,3),(380,250,33,3),(441,292,33,3),(676,459,34,2),(31,19,35,3),(248,164,35,3),(3,2,36,3),(121,78,36,3),(143,94,36,3),(12,8,37,3),(217,139,37,3),(245,162,37,3),(481,319,37,3),(566,381,37,3),(446,296,38,3),(329,218,39,3),(406,267,39,3),(531,356,39,3),(688,471,39,2),(729,512,39,2),(80,50,41,3),(701,484,41,2),(721,504,41,2),(762,545,41,2),(16,10,42,3),(24,15,43,3),(678,461,43,2),(368,243,44,3),(773,556,44,2),(38,23,45,3),(88,55,45,3),(305,202,45,3),(66,41,46,3),(151,99,46,3),(165,108,46,3),(167,109,46,3),(477,317,47,3),(635,429,47,3),(101,64,48,3),(359,238,48,3),(557,376,48,3),(5,3,49,3),(42,25,49,3),(213,136,49,3),(298,198,49,3),(553,373,49,3),(605,408,49,3),(778,561,49,2),(58,37,51,3),(428,283,51,3),(231,151,52,3),(459,304,52,3),(207,133,54,3),(282,187,54,3),(321,213,54,3),(589,397,54,3),(595,401,54,3),(627,423,54,3),(763,546,54,2),(266,176,55,3),(280,186,55,3),(92,57,56,3),(199,129,56,3),(422,279,56,3),(749,532,56,2),(136,90,57,3),(455,301,57,3),(551,372,57,3),(754,537,57,2),(60,38,58,3),(564,380,59,3),(250,165,60,3),(285,189,60,3),(332,220,60,3),(504,337,60,3),(775,558,60,2),(291,193,61,3),(466,309,61,3),(172,112,63,3),(351,233,63,3),(397,261,63,3),(690,473,63,2),(716,499,63,2),(355,235,64,3),(426,282,65,3),(659,445,65,3),(211,135,66,3),(378,249,66,3),(560,378,66,3),(203,131,67,3),(255,168,67,3),(346,230,67,3),(694,477,67,2),(731,514,67,2),(8,5,68,3),(750,533,68,2),(502,336,69,3),(603,407,69,3),(70,44,70,3),(201,130,70,3),(371,245,70,3),(662,447,70,3),(787,570,70,2),(533,357,71,3),(618,417,71,3),(677,460,71,2),(107,68,72,3),(746,529,73,2),(308,204,74,3),(430,284,74,3),(516,345,74,3),(706,489,74,2),(736,519,74,2),(233,152,75,3),(99,63,76,3),(113,72,76,3),(654,442,77,3),(45,27,78,3),(139,92,78,3),(153,100,78,3),(616,416,78,3),(623,420,78,3),(709,492,78,2),(725,508,78,2),(253,167,79,3),(523,349,80,3),(645,436,80,3),(695,478,80,2),(718,501,80,2),(395,260,81,3),(587,396,81,3),(182,119,82,3),(631,426,82,3),(674,457,82,2),(27,17,83,3),(187,122,83,3),(362,240,83,3),(593,400,84,3),(598,403,84,3),(494,330,85,3),(647,437,85,3),(184,120,86,3),(194,126,86,3),(339,225,86,3),(353,234,86,3),(537,360,86,3),(582,393,86,3),(29,18,87,3),(608,410,87,3),(438,290,88,3),(578,390,88,3),(310,205,89,3),(411,270,89,3),(191,124,90,3),(785,568,90,2),(376,248,91,3),(393,259,91,3),(162,106,92,3),(287,190,92,3),(349,232,92,3),(675,458,92,2),(141,93,93,3),(479,318,93,3),(573,386,93,3),(761,544,94,2),(700,483,95,2),(734,517,95,2),(744,527,95,2),(145,95,96,3),(276,183,96,3),(73,46,97,3),(170,111,98,3),(483,320,98,3),(642,434,98,3),(786,569,98,2),(269,178,99,3),(295,196,99,3),(366,242,99,3),(702,485,99,2),(740,523,99,2),(782,565,99,2),(14,9,100,3),(75,47,100,3),(764,547,102,2),(681,464,103,2),(711,494,103,2),(745,528,103,2),(789,572,105,2),(791,574,106,2),(686,469,108,2),(728,511,108,2),(757,540,109,2),(790,573,110,2),(755,538,111,2),(771,554,114,2),(777,560,120,2),(689,472,127,2),(715,498,127,2),(774,557,129,2),(784,567,130,2),(697,480,131,2),(719,502,131,2),(682,465,132,2),(726,509,132,2),(752,535,133,2),(704,487,134,2),(735,518,134,2),(742,525,140,2),(691,474,145,2),(739,522,145,2),(747,530,155,2),(710,493,156,2),(738,521,156,2),(692,475,159,2),(730,513,159,2),(699,482,161,2),(720,503,161,2),(759,542,162,2),(707,490,164,2),(724,507,164,2),(776,559,165,2),(743,526,167,2),(748,531,170,2),(751,534,172,2),(687,470,173,2),(714,497,173,2),(769,552,175,2),(683,466,179,2),(712,495,179,2),(766,549,180,2),(693,476,188,2),(717,500,188,2),(454,301,193,2),(456,302,193,2),(457,303,193,2),(458,304,193,2),(460,305,193,2),(461,306,193,2),(462,307,193,2),(464,308,193,2),(465,309,193,2),(467,310,193,2),(468,311,193,2),(469,312,193,2),(471,313,193,2),(472,314,193,2),(474,315,193,2),(475,316,193,2),(476,317,193,2),(478,318,193,2),(480,319,193,2),(482,320,193,2),(484,321,193,2),(485,322,193,2),(486,323,193,2),(487,324,193,2),(488,325,193,2),(489,326,193,2),(490,327,193,2),(491,328,193,2),(492,329,193,2),(493,330,193,2),(495,331,193,2),(497,332,193,2),(498,333,193,2),(499,334,193,2),(500,335,193,2),(501,336,193,2),(503,337,193,2),(505,338,193,2),(506,339,193,2),(507,340,193,2),(508,341,193,2),(510,342,193,2),(511,343,193,2),(513,344,193,2),(515,345,193,2),(517,346,193,2),(519,347,193,2),(520,348,193,2),(522,349,193,2),(524,350,193,2),(525,351,193,2),(526,352,193,2),(527,353,193,2),(528,354,193,2),(529,355,193,2),(530,356,193,2),(532,357,193,2),(534,358,193,2),(535,359,193,2),(536,360,193,2),(538,361,193,2),(539,362,193,2),(540,363,193,2),(541,364,193,2),(542,365,193,2),(543,366,193,2),(545,367,193,2),(546,368,193,2),(547,369,193,2),(548,370,193,2),(549,371,193,2),(550,372,193,2),(552,373,193,2),(554,374,193,2),(555,375,193,2),(556,376,193,2),(558,377,193,2),(559,378,193,2),(561,379,193,2),(563,380,193,2),(565,381,193,2),(567,382,193,2),(569,383,193,2),(570,384,193,2),(571,385,193,2),(572,386,193,2),(574,387,193,2),(575,388,193,2),(576,389,193,2),(577,390,193,2),(579,391,193,2),(580,392,193,2),(581,393,193,2),(583,394,193,2),(584,395,193,2),(586,396,193,2),(588,397,193,2),(590,398,193,2),(591,399,193,2),(592,400,193,2),(594,401,193,2),(596,402,193,2),(597,403,193,2),(599,404,193,2),(600,405,193,2),(601,406,193,2),(602,407,193,2),(604,408,193,2),(606,409,193,2),(607,410,193,2),(609,411,193,2),(610,412,193,2),(612,413,193,2),(613,414,193,2),(614,415,193,2),(615,416,193,2),(617,417,193,2),(619,418,193,2),(620,419,193,2),(622,420,193,2),(624,421,193,2),(625,422,193,2),(626,423,193,2),(628,424,193,2),(629,425,193,2),(630,426,193,2),(632,427,193,2),(633,428,193,2),(634,429,193,2),(636,430,193,2),(637,431,193,2),(638,432,193,2),(639,433,193,2),(641,434,193,2),(643,435,193,2),(644,436,193,2),(646,437,193,2),(648,438,193,2),(649,439,193,2),(651,440,193,2),(652,441,193,2),(653,442,193,2),(655,443,193,2),(657,444,193,2),(658,445,193,2),(660,446,193,2),(661,447,193,2),(663,448,193,2),(665,449,193,2),(666,450,193,2),(788,571,194,2),(705,488,195,2),(723,506,195,2),(758,541,195,2),(783,566,196,2),(781,564,200,2); /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -107,7 +107,7 @@ 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,43,1,1,0,'265Q Northpoint Pl SW',265,'Q',NULL,'Northpoint','Pl','SW',NULL,NULL,NULL,NULL,'Saint Petersburg',1,1008,NULL,'33728',NULL,1228,27.891809,-82.724763,0,NULL,NULL,NULL),(2,71,1,1,0,'751E El Camino Rd SW',751,'E',NULL,'El Camino','Rd','SW',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30331',NULL,1228,33.715558,-84.52728,0,NULL,NULL,NULL),(3,177,1,1,0,'116E Pine Ln SW',116,'E',NULL,'Pine','Ln','SW',NULL,NULL,NULL,NULL,'Denver',1,1005,NULL,'80264',NULL,1228,39.742486,-104.98563,0,NULL,NULL,NULL),(4,110,1,1,0,'840L Jackson Path SE',840,'L',NULL,'Jackson','Path','SE',NULL,NULL,NULL,NULL,'Cumberland Foreside',1,1018,NULL,'04110',NULL,1228,43.760369,-70.19681,0,NULL,NULL,NULL),(5,91,1,1,0,'19P Dowlen Pl SE',19,'P',NULL,'Dowlen','Pl','SE',NULL,NULL,NULL,NULL,'Newark',1,1007,NULL,'19713',NULL,1228,39.669211,-75.71796,0,NULL,NULL,NULL),(6,37,1,1,0,'433B Lincoln Way E',433,'B',NULL,'Lincoln','Way','E',NULL,NULL,NULL,NULL,'Palmdale',1,1004,NULL,'93590',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),(7,175,1,1,0,'509R Van Ness Way SE',509,'R',NULL,'Van Ness','Way','SE',NULL,NULL,NULL,NULL,'Pasadena',1,1004,NULL,'91050',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),(8,15,1,1,0,'315A Green Pl W',315,'A',NULL,'Green','Pl','W',NULL,NULL,NULL,NULL,'East Troy',1,1048,NULL,'53120',NULL,1228,42.797775,-88.40435,0,NULL,NULL,NULL),(9,106,1,1,0,'69H Jackson Rd N',69,'H',NULL,'Jackson','Rd','N',NULL,NULL,NULL,NULL,'Climbing Hill',1,1014,NULL,'51015',NULL,1228,42.345024,-96.087523,0,NULL,NULL,NULL),(10,147,1,1,0,'1000F Martin Luther King Dr N',1000,'F',NULL,'Martin Luther King','Dr','N',NULL,NULL,NULL,NULL,'Oakland',1,1004,NULL,'94624',NULL,1228,37.680181,-121.921498,0,NULL,NULL,NULL),(11,198,1,1,0,'644Z States Ave N',644,'Z',NULL,'States','Ave','N',NULL,NULL,NULL,NULL,'Omaha',1,1026,NULL,'68179',NULL,1228,41.291736,-96.171104,0,NULL,NULL,NULL),(12,18,1,1,0,'664C Martin Luther King Pl NE',664,'C',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Rudyard',1,1021,NULL,'49780',NULL,1228,46.204512,-84.73671,0,NULL,NULL,NULL),(13,108,1,1,0,'763W Cadell St W',763,'W',NULL,'Cadell','St','W',NULL,NULL,NULL,NULL,'Marietta',1,1037,NULL,'17547',NULL,1228,40.064862,-76.57145,0,NULL,NULL,NULL),(14,26,1,1,0,'877E Main St SE',877,'E',NULL,'Main','St','SE',NULL,NULL,NULL,NULL,'Flint',1,1021,NULL,'48556',NULL,1228,43.032677,-83.646255,0,NULL,NULL,NULL),(15,44,1,1,0,'780S Beech Way NE',780,'S',NULL,'Beech','Way','NE',NULL,NULL,NULL,NULL,'Ottawa Lake',1,1021,NULL,'49267',NULL,1228,41.757599,-83.70951,0,NULL,NULL,NULL),(16,121,1,1,0,'126R College Pl N',126,'R',NULL,'College','Pl','N',NULL,NULL,NULL,NULL,'Deweyville',1,1043,NULL,'84309',NULL,1228,41.714101,-112.08846,0,NULL,NULL,NULL),(17,47,1,1,0,'663C College St SE',663,'C',NULL,'College','St','SE',NULL,NULL,NULL,NULL,'Rockville',1,1019,NULL,'20850',NULL,1228,39.093408,-77.1718,0,NULL,NULL,NULL),(18,85,1,1,0,'763P Maple Path NE',763,'P',NULL,'Maple','Path','NE',NULL,NULL,NULL,NULL,'Richland',1,1039,NULL,'29675',NULL,1228,34.764076,-83.088332,0,NULL,NULL,NULL),(19,119,1,1,0,'608W Main Rd N',608,'W',NULL,'Main','Rd','N',NULL,NULL,NULL,NULL,'Maple Plain',1,1022,NULL,'55359',NULL,1228,45.002212,-93.69319,0,NULL,NULL,NULL),(20,10,1,1,0,'556F Beech Way N',556,'F',NULL,'Beech','Way','N',NULL,NULL,NULL,NULL,'Carrollton',1,1009,NULL,'30116',NULL,1228,33.560454,-85.02254,0,NULL,NULL,NULL),(21,159,1,1,0,'719I Main Pl S',719,'I',NULL,'Main','Pl','S',NULL,NULL,NULL,NULL,'Shallowater',1,1042,NULL,'79363',NULL,1228,33.701024,-102.01948,0,NULL,NULL,NULL),(22,61,1,1,0,'613D Woodbridge Dr N',613,'D',NULL,'Woodbridge','Dr','N',NULL,NULL,NULL,NULL,'Springfield',1,1034,NULL,'45504',NULL,1228,39.941827,-83.83702,0,NULL,NULL,NULL),(23,164,1,1,0,'382O Martin Luther King Path NE',382,'O',NULL,'Martin Luther King','Path','NE',NULL,NULL,NULL,NULL,'Martinsburg',1,1037,NULL,'16662',NULL,1228,40.306709,-78.31987,0,NULL,NULL,NULL),(24,41,1,1,0,'785M Pine Dr SE',785,'M',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Independence',1,1036,NULL,'97351',NULL,1228,44.849012,-123.18673,0,NULL,NULL,NULL),(25,16,1,1,0,'378K Woodbridge Blvd E',378,'K',NULL,'Woodbridge','Blvd','E',NULL,NULL,NULL,NULL,'Allen',1,1026,NULL,'68710',NULL,1228,42.450185,-96.85153,0,NULL,NULL,NULL),(26,143,1,1,0,'434E El Camino Dr SW',434,'E',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Rockport',1,1018,NULL,'04856',NULL,1228,44.180867,-69.09812,0,NULL,NULL,NULL),(27,136,1,1,0,'5U Second Pl SW',5,'U',NULL,'Second','Pl','SW',NULL,NULL,NULL,NULL,'Felda',1,1008,NULL,'33930',NULL,1228,26.581172,-81.46202,0,NULL,NULL,NULL),(28,36,1,1,0,'873B El Camino Ave SE',873,'B',NULL,'El Camino','Ave','SE',NULL,NULL,NULL,NULL,'Columbus',1,1034,NULL,'43236',NULL,1228,40.135711,-83.007626,0,NULL,NULL,NULL),(29,7,1,1,0,'647X Lincoln Ave W',647,'X',NULL,'Lincoln','Ave','W',NULL,NULL,NULL,NULL,'Jackson',1,1023,NULL,'39283',NULL,1228,32.311287,-90.397157,0,NULL,NULL,NULL),(30,145,1,1,0,'38Q Pine Way S',38,'Q',NULL,'Pine','Way','S',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20426',NULL,1228,38.893311,-77.014647,0,NULL,NULL,NULL),(31,158,1,1,0,'812E Cadell Ln N',812,'E',NULL,'Cadell','Ln','N',NULL,NULL,NULL,NULL,'Belk',1,1000,NULL,'35545',NULL,1228,33.641227,-87.92911,0,NULL,NULL,NULL),(32,199,1,1,0,'74P College Pl E',74,'P',NULL,'College','Pl','E',NULL,NULL,NULL,NULL,'Monett',1,1024,NULL,'65708',NULL,1228,36.91816,-93.91488,0,NULL,NULL,NULL),(33,21,1,1,0,'352D Van Ness Path SW',352,'D',NULL,'Van Ness','Path','SW',NULL,NULL,NULL,NULL,'Viola',1,1012,NULL,'61486',NULL,1228,41.195087,-90.57923,0,NULL,NULL,NULL),(34,12,1,1,0,'1000Q Pine Blvd SE',1000,'Q',NULL,'Pine','Blvd','SE',NULL,NULL,NULL,NULL,'Saint Joseph',1,1021,NULL,'49085',NULL,1228,42.074435,-86.47935,0,NULL,NULL,NULL),(35,81,1,1,0,'409T College Path SW',409,'T',NULL,'College','Path','SW',NULL,NULL,NULL,NULL,'Bay Saint Louis',1,1023,NULL,'39520',NULL,1228,30.304327,-89.40705,0,NULL,NULL,NULL),(36,185,1,1,0,'340G States Dr E',340,'G',NULL,'States','Dr','E',NULL,NULL,NULL,NULL,'Boyd',1,1048,NULL,'54726',NULL,1228,44.946486,-91.02282,0,NULL,NULL,NULL),(37,62,1,1,0,'565W Lincoln Rd E',565,'W',NULL,'Lincoln','Rd','E',NULL,NULL,NULL,NULL,'Queens Village',1,1031,NULL,'11428',NULL,1228,40.719981,-73.74127,0,NULL,NULL,NULL),(38,78,1,1,0,'928V Main Pl W',928,'V',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Hewitt',1,1022,NULL,'56453',NULL,1228,46.32091,-95.14567,0,NULL,NULL,NULL),(39,117,1,1,0,'299C El Camino Path NW',299,'C',NULL,'El Camino','Path','NW',NULL,NULL,NULL,NULL,'Rockford',1,1012,NULL,'61105',NULL,1228,42.325364,-89.170527,0,NULL,NULL,NULL),(40,196,1,1,0,'568Z Martin Luther King Pl N',568,'Z',NULL,'Martin Luther King','Pl','N',NULL,NULL,NULL,NULL,'San Bruno',1,1004,NULL,'94098',NULL,1228,37.381144,-122.334825,0,NULL,NULL,NULL),(41,162,1,1,0,'965R Main Path S',965,'R',NULL,'Main','Path','S',NULL,NULL,NULL,NULL,'East Durham',1,1031,NULL,'12423',NULL,1228,42.378679,-74.10443,0,NULL,NULL,NULL),(42,90,1,1,0,'248I College Way SE',248,'I',NULL,'College','Way','SE',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50703',NULL,1228,42.513636,-92.32418,0,NULL,NULL,NULL),(43,42,1,1,0,'786B Lincoln St W',786,'B',NULL,'Lincoln','St','W',NULL,NULL,NULL,NULL,'Wendell',1,1032,NULL,'27591',NULL,1228,35.781595,-78.37287,0,NULL,NULL,NULL),(44,40,1,1,0,'461P Northpoint St S',461,'P',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Wells',1,1027,NULL,'89835',NULL,1228,41.208288,-114.86098,0,NULL,NULL,NULL),(45,2,1,1,0,'508U Jackson Dr S',508,'U',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'Saint Catharine',1,1016,NULL,'40061',NULL,1228,37.773962,-85.201068,0,NULL,NULL,NULL),(46,68,1,1,0,'391L Dowlen Path N',391,'L',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'San Juan',1,1056,NULL,'00936',NULL,1228,18.410462,-66.060533,0,NULL,NULL,NULL),(47,76,1,1,0,'526V Maple Path SE',526,'V',NULL,'Maple','Path','SE',NULL,NULL,NULL,NULL,'Keokuk',1,1014,NULL,'52632',NULL,1228,40.409641,-91.40001,0,NULL,NULL,NULL),(48,122,1,1,0,'192S Beech Dr W',192,'S',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Harveys Lake',1,1037,NULL,'18618',NULL,1228,41.37649,-76.03662,0,NULL,NULL,NULL),(49,102,1,1,0,'475W Lincoln St NE',475,'W',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Beaufort',1,1039,NULL,'29903',NULL,1228,32.443974,-80.735245,0,NULL,NULL,NULL),(50,49,1,1,0,'528E Beech Path W',528,'E',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Santa Fe',1,1024,NULL,'65282',NULL,1228,39.369471,-91.81864,0,NULL,NULL,NULL),(51,38,1,1,0,'975Z Dowlen Path NW',975,'Z',NULL,'Dowlen','Path','NW',NULL,NULL,NULL,NULL,'Ballinger',1,1042,NULL,'76821',NULL,1228,31.754011,-99.93695,0,NULL,NULL,NULL),(52,46,1,1,0,'965W Lincoln Blvd S',965,'W',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Danielsville',1,1009,NULL,'30633',NULL,1228,34.17085,-83.24654,0,NULL,NULL,NULL),(53,181,1,1,0,'797D Jackson Path NW',797,'D',NULL,'Jackson','Path','NW',NULL,NULL,NULL,NULL,'Millington',1,1041,NULL,'38083',NULL,1228,35.201738,-89.971538,0,NULL,NULL,NULL),(54,57,1,1,0,'321K Caulder Rd W',321,'K',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18505',NULL,1228,41.39208,-75.66603,0,NULL,NULL,NULL),(55,161,1,1,0,'817P Woodbridge Ln E',817,'P',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Morley',1,1014,NULL,'52312',NULL,1228,42.006556,-91.24671,0,NULL,NULL,NULL),(56,17,1,1,0,'711N Northpoint Ln SW',711,'N',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Parkesburg',1,1037,NULL,'19365',NULL,1228,39.961094,-75.92047,0,NULL,NULL,NULL),(57,187,1,1,0,'479R Green Ln W',479,'R',NULL,'Green','Ln','W',NULL,NULL,NULL,NULL,'Shasta Lake',1,1004,NULL,'96079',NULL,1228,40.686639,-122.334778,0,NULL,NULL,NULL),(58,80,1,1,0,'207W Caulder Pl S',207,'W',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Harlan',1,1014,NULL,'51593',NULL,1228,41.332943,-95.587197,0,NULL,NULL,NULL),(59,51,1,1,0,'138S Jackson Rd E',138,'S',NULL,'Jackson','Rd','E',NULL,NULL,NULL,NULL,'Reseda',1,1004,NULL,'91337',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),(60,131,1,1,0,'228F Cadell Pl NE',228,'F',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Alcester',1,1040,NULL,'57001',NULL,1228,42.974216,-96.63848,0,NULL,NULL,NULL),(61,79,1,1,0,'486G Caulder Ln NE',486,'G',NULL,'Caulder','Ln','NE',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,NULL),(62,192,3,1,0,'336Y Bay St N',336,'Y',NULL,'Bay','St','N',NULL,'Donor Relations',NULL,NULL,'Burlingame',1,1004,NULL,'94012',NULL,1228,37.381144,-122.334825,0,NULL,NULL,NULL),(63,172,2,1,0,'336Y Bay St N',336,'Y',NULL,'Bay','St','N',NULL,'Donor Relations',NULL,NULL,'Burlingame',1,1004,NULL,'94012',NULL,1228,37.381144,-122.334825,0,NULL,NULL,62),(64,74,3,1,0,'37T Bay Rd SW',37,'T',NULL,'Bay','Rd','SW',NULL,'Disbursements',NULL,NULL,'West Palm Beach',1,1008,NULL,'33407',NULL,1228,26.750991,-80.07296,0,NULL,NULL,NULL),(65,160,2,1,0,'37T Bay Rd SW',37,'T',NULL,'Bay','Rd','SW',NULL,'Disbursements',NULL,NULL,'West Palm Beach',1,1008,NULL,'33407',NULL,1228,26.750991,-80.07296,0,NULL,NULL,64),(66,127,3,1,0,'151V Martin Luther King Way W',151,'V',NULL,'Martin Luther King','Way','W',NULL,'Disbursements',NULL,NULL,'Springfield',1,1034,NULL,'45505',NULL,1228,39.91086,-83.78579,0,NULL,NULL,NULL),(67,194,2,1,0,'151V Martin Luther King Way W',151,'V',NULL,'Martin Luther King','Way','W',NULL,'Disbursements',NULL,NULL,'Springfield',1,1034,NULL,'45505',NULL,1228,39.91086,-83.78579,0,NULL,NULL,66),(68,111,3,1,0,'7C Caulder Ave NE',7,'C',NULL,'Caulder','Ave','NE',NULL,'Mailstop 101',NULL,NULL,'Bird City',1,1015,NULL,'67731',NULL,1228,39.758864,-101.54448,0,NULL,NULL,NULL),(69,23,3,1,0,'423T Caulder Rd SE',423,'T',NULL,'Caulder','Rd','SE',NULL,'Cuffe Parade',NULL,NULL,'Carthage',1,1024,NULL,'64836',NULL,1228,37.168985,-94.31164,0,NULL,NULL,NULL),(70,65,3,1,0,'335K Woodbridge Pl E',335,'K',NULL,'Woodbridge','Pl','E',NULL,'Cuffe Parade',NULL,NULL,'Indiahoma',1,1035,NULL,'73552',NULL,1228,34.62256,-98.75386,0,NULL,NULL,NULL),(71,82,3,1,0,'66D Pine Pl NW',66,'D',NULL,'Pine','Pl','NW',NULL,'Cuffe Parade',NULL,NULL,'Harmony',1,1032,NULL,'28634',NULL,1228,35.97991,-80.77085,0,NULL,NULL,NULL),(72,123,3,1,0,'230P Martin Luther King Path SW',230,'P',NULL,'Martin Luther King','Path','SW',NULL,'Cuffe Parade',NULL,NULL,'South Amboy',1,1029,NULL,'08879',NULL,1228,40.469606,-74.27669,0,NULL,NULL,NULL),(73,55,3,1,0,'734R Main Path NW',734,'R',NULL,'Main','Path','NW',NULL,'Subscriptions Dept',NULL,NULL,'Hamilton',1,1021,NULL,'49419',NULL,1228,42.679762,-85.98996,0,NULL,NULL,NULL),(74,144,3,1,0,'127R Jackson Ave N',127,'R',NULL,'Jackson','Ave','N',NULL,'Receiving',NULL,NULL,'Pittsburgh',1,1037,NULL,'15226',NULL,1228,40.394002,-80.01655,0,NULL,NULL,NULL),(75,142,2,1,0,'127R Jackson Ave N',127,'R',NULL,'Jackson','Ave','N',NULL,'Receiving',NULL,NULL,'Pittsburgh',1,1037,NULL,'15226',NULL,1228,40.394002,-80.01655,0,NULL,NULL,74),(76,63,3,1,0,'152Y States Rd NE',152,'Y',NULL,'States','Rd','NE',NULL,'Cuffe Parade',NULL,NULL,'Angola',1,1031,NULL,'14006',NULL,1228,42.633375,-79.04567,0,NULL,NULL,NULL),(77,193,2,1,0,'152Y States Rd NE',152,'Y',NULL,'States','Rd','NE',NULL,'Cuffe Parade',NULL,NULL,'Angola',1,1031,NULL,'14006',NULL,1228,42.633375,-79.04567,0,NULL,NULL,76),(78,178,3,1,0,'470C Maple St SE',470,'C',NULL,'Maple','St','SE',NULL,'Urgent',NULL,NULL,'Loyal',1,1048,NULL,'54446',NULL,1228,44.758265,-90.48248,0,NULL,NULL,NULL),(79,18,2,0,0,'470C Maple St SE',470,'C',NULL,'Maple','St','SE',NULL,'Urgent',NULL,NULL,'Loyal',1,1048,NULL,'54446',NULL,1228,44.758265,-90.48248,0,NULL,NULL,78),(80,31,3,1,0,'999O Second Dr E',999,'O',NULL,'Second','Dr','E',NULL,'Urgent',NULL,NULL,'Arma',1,1015,NULL,'66712',NULL,1228,37.547763,-94.70622,0,NULL,NULL,NULL),(81,101,3,1,0,'279P Maple Ln NW',279,'P',NULL,'Maple','Ln','NW',NULL,'Urgent',NULL,NULL,'San Pablo',1,1005,NULL,'81153',NULL,1228,37.127132,-105.3675,0,NULL,NULL,NULL),(82,119,2,0,0,'279P Maple Ln NW',279,'P',NULL,'Maple','Ln','NW',NULL,'Urgent',NULL,NULL,'San Pablo',1,1005,NULL,'81153',NULL,1228,37.127132,-105.3675,0,NULL,NULL,81),(83,95,3,1,0,'813T Lincoln Rd E',813,'T',NULL,'Lincoln','Rd','E',NULL,'Disbursements',NULL,NULL,'Dauberville',1,1037,NULL,'19517',NULL,1228,40.407173,-75.984901,0,NULL,NULL,NULL),(84,70,2,1,0,'813T Lincoln Rd E',813,'T',NULL,'Lincoln','Rd','E',NULL,'Disbursements',NULL,NULL,'Dauberville',1,1037,NULL,'19517',NULL,1228,40.407173,-75.984901,0,NULL,NULL,83),(85,135,3,1,0,'788V Green Blvd S',788,'V',NULL,'Green','Blvd','S',NULL,'Attn: Accounting',NULL,NULL,'Austin',1,1042,NULL,'78778',NULL,1228,30.326374,-97.771258,0,NULL,NULL,NULL),(86,39,3,1,0,'522T Beech Way NE',522,'T',NULL,'Beech','Way','NE',NULL,'Subscriptions Dept',NULL,NULL,'Farmington',1,1003,NULL,'72730',NULL,1228,36.03667,-94.25261,0,NULL,NULL,NULL),(87,19,2,1,0,'522T Beech Way NE',522,'T',NULL,'Beech','Way','NE',NULL,'Subscriptions Dept',NULL,NULL,'Farmington',1,1003,NULL,'72730',NULL,1228,36.03667,-94.25261,0,NULL,NULL,86),(88,60,3,1,0,'411G Maple Blvd SE',411,'G',NULL,'Maple','Blvd','SE',NULL,'Urgent',NULL,NULL,'Paluxy',1,1042,NULL,'76467',NULL,1228,32.341365,-97.932083,0,NULL,NULL,NULL),(89,26,2,0,0,'411G Maple Blvd SE',411,'G',NULL,'Maple','Blvd','SE',NULL,'Urgent',NULL,NULL,'Paluxy',1,1042,NULL,'76467',NULL,1228,32.341365,-97.932083,0,NULL,NULL,88),(90,182,3,1,0,'741N States Rd W',741,'N',NULL,'States','Rd','W',NULL,'Editorial Dept',NULL,NULL,'Cleveland',1,1034,NULL,'44106',NULL,1228,41.507751,-81.60883,0,NULL,NULL,NULL),(91,106,2,0,0,'741N States Rd W',741,'N',NULL,'States','Rd','W',NULL,'Editorial Dept',NULL,NULL,'Cleveland',1,1034,NULL,'44106',NULL,1228,41.507751,-81.60883,0,NULL,NULL,90),(92,105,3,1,0,'453W Pine Rd N',453,'W',NULL,'Pine','Rd','N',NULL,'Donor Relations',NULL,NULL,'Acton',1,1025,NULL,'59002',NULL,1228,45.932174,-108.68933,0,NULL,NULL,NULL),(93,29,2,1,0,'453W Pine Rd N',453,'W',NULL,'Pine','Rd','N',NULL,'Donor Relations',NULL,NULL,'Acton',1,1025,NULL,'59002',NULL,1228,45.932174,-108.68933,0,NULL,NULL,92),(94,3,1,1,0,'248I College Way SE',248,'I',NULL,'College','Way','SE',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50703',NULL,1228,42.513636,-92.32418,0,NULL,NULL,42),(95,84,1,1,0,'248I College Way SE',248,'I',NULL,'College','Way','SE',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50703',NULL,1228,42.513636,-92.32418,0,NULL,NULL,42),(96,13,1,1,0,'248I College Way SE',248,'I',NULL,'College','Way','SE',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50703',NULL,1228,42.513636,-92.32418,0,NULL,NULL,42),(97,162,1,0,0,'248I College Way SE',248,'I',NULL,'College','Way','SE',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50703',NULL,1228,42.513636,-92.32418,0,NULL,NULL,42),(98,155,1,1,0,'786B Lincoln St W',786,'B',NULL,'Lincoln','St','W',NULL,NULL,NULL,NULL,'Wendell',1,1032,NULL,'27591',NULL,1228,35.781595,-78.37287,0,NULL,NULL,43),(99,165,1,1,0,'786B Lincoln St W',786,'B',NULL,'Lincoln','St','W',NULL,NULL,NULL,NULL,'Wendell',1,1032,NULL,'27591',NULL,1228,35.781595,-78.37287,0,NULL,NULL,43),(100,52,1,1,0,'786B Lincoln St W',786,'B',NULL,'Lincoln','St','W',NULL,NULL,NULL,NULL,'Wendell',1,1032,NULL,'27591',NULL,1228,35.781595,-78.37287,0,NULL,NULL,43),(101,180,1,1,0,'786B Lincoln St W',786,'B',NULL,'Lincoln','St','W',NULL,NULL,NULL,NULL,'Wendell',1,1032,NULL,'27591',NULL,1228,35.781595,-78.37287,0,NULL,NULL,43),(102,48,1,1,0,'461P Northpoint St S',461,'P',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Wells',1,1027,NULL,'89835',NULL,1228,41.208288,-114.86098,0,NULL,NULL,44),(103,109,1,1,0,'461P Northpoint St S',461,'P',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Wells',1,1027,NULL,'89835',NULL,1228,41.208288,-114.86098,0,NULL,NULL,44),(104,25,1,1,0,'461P Northpoint St S',461,'P',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Wells',1,1027,NULL,'89835',NULL,1228,41.208288,-114.86098,0,NULL,NULL,44),(105,132,1,1,0,'461P Northpoint St S',461,'P',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Wells',1,1027,NULL,'89835',NULL,1228,41.208288,-114.86098,0,NULL,NULL,44),(106,45,1,1,0,'508U Jackson Dr S',508,'U',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'Saint Catharine',1,1016,NULL,'40061',NULL,1228,37.773962,-85.201068,0,NULL,NULL,45),(107,67,1,1,0,'508U Jackson Dr S',508,'U',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'Saint Catharine',1,1016,NULL,'40061',NULL,1228,37.773962,-85.201068,0,NULL,NULL,45),(108,6,1,1,0,'508U Jackson Dr S',508,'U',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'Saint Catharine',1,1016,NULL,'40061',NULL,1228,37.773962,-85.201068,0,NULL,NULL,45),(109,11,1,1,0,'508U Jackson Dr S',508,'U',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'Saint Catharine',1,1016,NULL,'40061',NULL,1228,37.773962,-85.201068,0,NULL,NULL,45),(110,168,1,1,0,'391L Dowlen Path N',391,'L',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'San Juan',1,1056,NULL,'00936',NULL,1228,18.410462,-66.060533,0,NULL,NULL,46),(111,200,1,1,0,'391L Dowlen Path N',391,'L',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'San Juan',1,1056,NULL,'00936',NULL,1228,18.410462,-66.060533,0,NULL,NULL,46),(112,124,1,1,0,'391L Dowlen Path N',391,'L',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'San Juan',1,1056,NULL,'00936',NULL,1228,18.410462,-66.060533,0,NULL,NULL,46),(113,88,1,1,0,'391L Dowlen Path N',391,'L',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'San Juan',1,1056,NULL,'00936',NULL,1228,18.410462,-66.060533,0,NULL,NULL,46),(114,98,1,1,0,'526V Maple Path SE',526,'V',NULL,'Maple','Path','SE',NULL,NULL,NULL,NULL,'Keokuk',1,1014,NULL,'52632',NULL,1228,40.409641,-91.40001,0,NULL,NULL,47),(115,166,1,1,0,'526V Maple Path SE',526,'V',NULL,'Maple','Path','SE',NULL,NULL,NULL,NULL,'Keokuk',1,1014,NULL,'52632',NULL,1228,40.409641,-91.40001,0,NULL,NULL,47),(116,19,1,0,0,'526V Maple Path SE',526,'V',NULL,'Maple','Path','SE',NULL,NULL,NULL,NULL,'Keokuk',1,1014,NULL,'52632',NULL,1228,40.409641,-91.40001,0,NULL,NULL,47),(117,125,1,1,0,'50I Pine Way SE',50,'I',NULL,'Pine','Way','SE',NULL,NULL,NULL,NULL,'Scappoose',1,1036,NULL,'97056',NULL,1228,45.778892,-122.92065,0,NULL,NULL,NULL),(118,54,1,1,0,'192S Beech Dr W',192,'S',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Harveys Lake',1,1037,NULL,'18618',NULL,1228,41.37649,-76.03662,0,NULL,NULL,48),(119,163,1,1,0,'192S Beech Dr W',192,'S',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Harveys Lake',1,1037,NULL,'18618',NULL,1228,41.37649,-76.03662,0,NULL,NULL,48),(120,83,1,1,0,'192S Beech Dr W',192,'S',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Harveys Lake',1,1037,NULL,'18618',NULL,1228,41.37649,-76.03662,0,NULL,NULL,48),(121,14,1,1,0,'879B Beech Ln SW',879,'B',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Springfield',1,1012,NULL,'62708',NULL,1228,39.806089,-89.586356,0,NULL,NULL,NULL),(122,104,1,1,0,'475W Lincoln St NE',475,'W',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Beaufort',1,1039,NULL,'29903',NULL,1228,32.443974,-80.735245,0,NULL,NULL,49),(123,151,1,1,0,'475W Lincoln St NE',475,'W',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Beaufort',1,1039,NULL,'29903',NULL,1228,32.443974,-80.735245,0,NULL,NULL,49),(124,190,1,1,0,'475W Lincoln St NE',475,'W',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Beaufort',1,1039,NULL,'29903',NULL,1228,32.443974,-80.735245,0,NULL,NULL,49),(125,189,1,1,0,'475W Lincoln St NE',475,'W',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'Beaufort',1,1039,NULL,'29903',NULL,1228,32.443974,-80.735245,0,NULL,NULL,49),(126,176,1,1,0,'528E Beech Path W',528,'E',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Santa Fe',1,1024,NULL,'65282',NULL,1228,39.369471,-91.81864,0,NULL,NULL,50),(127,139,1,1,0,'528E Beech Path W',528,'E',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Santa Fe',1,1024,NULL,'65282',NULL,1228,39.369471,-91.81864,0,NULL,NULL,50),(128,140,1,1,0,'528E Beech Path W',528,'E',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Santa Fe',1,1024,NULL,'65282',NULL,1228,39.369471,-91.81864,0,NULL,NULL,50),(129,77,1,1,0,'528E Beech Path W',528,'E',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Santa Fe',1,1024,NULL,'65282',NULL,1228,39.369471,-91.81864,0,NULL,NULL,50),(130,193,1,0,0,'975Z Dowlen Path NW',975,'Z',NULL,'Dowlen','Path','NW',NULL,NULL,NULL,NULL,'Ballinger',1,1042,NULL,'76821',NULL,1228,31.754011,-99.93695,0,NULL,NULL,51),(131,174,1,1,0,'975Z Dowlen Path NW',975,'Z',NULL,'Dowlen','Path','NW',NULL,NULL,NULL,NULL,'Ballinger',1,1042,NULL,'76821',NULL,1228,31.754011,-99.93695,0,NULL,NULL,51),(132,73,1,1,0,'975Z Dowlen Path NW',975,'Z',NULL,'Dowlen','Path','NW',NULL,NULL,NULL,NULL,'Ballinger',1,1042,NULL,'76821',NULL,1228,31.754011,-99.93695,0,NULL,NULL,51),(133,150,1,1,0,'253K Bay St SE',253,'K',NULL,'Bay','St','SE',NULL,NULL,NULL,NULL,'Brooklyn',1,1031,NULL,'11248',NULL,1228,40.645099,-73.945032,0,NULL,NULL,NULL),(134,8,1,1,0,'965W Lincoln Blvd S',965,'W',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Danielsville',1,1009,NULL,'30633',NULL,1228,34.17085,-83.24654,0,NULL,NULL,52),(135,107,1,1,0,'965W Lincoln Blvd S',965,'W',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Danielsville',1,1009,NULL,'30633',NULL,1228,34.17085,-83.24654,0,NULL,NULL,52),(136,35,1,1,0,'965W Lincoln Blvd S',965,'W',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Danielsville',1,1009,NULL,'30633',NULL,1228,34.17085,-83.24654,0,NULL,NULL,52),(137,58,1,1,0,'480C Main Ave W',480,'C',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Oklahoma City',1,1035,NULL,'73140',NULL,1228,35.518509,-97.427464,0,NULL,NULL,NULL),(138,33,1,1,0,'797D Jackson Path NW',797,'D',NULL,'Jackson','Path','NW',NULL,NULL,NULL,NULL,'Millington',1,1041,NULL,'38083',NULL,1228,35.201738,-89.971538,0,NULL,NULL,53),(139,59,1,1,0,'797D Jackson Path NW',797,'D',NULL,'Jackson','Path','NW',NULL,NULL,NULL,NULL,'Millington',1,1041,NULL,'38083',NULL,1228,35.201738,-89.971538,0,NULL,NULL,53),(140,5,1,1,0,'797D Jackson Path NW',797,'D',NULL,'Jackson','Path','NW',NULL,NULL,NULL,NULL,'Millington',1,1041,NULL,'38083',NULL,1228,35.201738,-89.971538,0,NULL,NULL,53),(141,173,1,1,0,'511F Second Path W',511,'F',NULL,'Second','Path','W',NULL,NULL,NULL,NULL,'Anamoose',1,1033,NULL,'58710',NULL,1228,47.87756,-100.23677,0,NULL,NULL,NULL),(142,87,1,1,0,'321K Caulder Rd W',321,'K',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18505',NULL,1228,41.39208,-75.66603,0,NULL,NULL,54),(143,201,1,1,0,'321K Caulder Rd W',321,'K',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18505',NULL,1228,41.39208,-75.66603,0,NULL,NULL,54),(144,126,1,1,0,'321K Caulder Rd W',321,'K',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18505',NULL,1228,41.39208,-75.66603,0,NULL,NULL,54),(145,64,1,1,0,'321K Caulder Rd W',321,'K',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18505',NULL,1228,41.39208,-75.66603,0,NULL,NULL,54),(146,141,1,1,0,'817P Woodbridge Ln E',817,'P',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Morley',1,1014,NULL,'52312',NULL,1228,42.006556,-91.24671,0,NULL,NULL,55),(147,94,1,1,0,'817P Woodbridge Ln E',817,'P',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Morley',1,1014,NULL,'52312',NULL,1228,42.006556,-91.24671,0,NULL,NULL,55),(148,183,1,1,0,'817P Woodbridge Ln E',817,'P',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Morley',1,1014,NULL,'52312',NULL,1228,42.006556,-91.24671,0,NULL,NULL,55),(149,96,1,1,0,'817P Woodbridge Ln E',817,'P',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Morley',1,1014,NULL,'52312',NULL,1228,42.006556,-91.24671,0,NULL,NULL,55),(150,89,1,1,0,'711N Northpoint Ln SW',711,'N',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Parkesburg',1,1037,NULL,'19365',NULL,1228,39.961094,-75.92047,0,NULL,NULL,56),(151,191,1,1,0,'711N Northpoint Ln SW',711,'N',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Parkesburg',1,1037,NULL,'19365',NULL,1228,39.961094,-75.92047,0,NULL,NULL,56),(152,32,1,1,0,'711N Northpoint Ln SW',711,'N',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Parkesburg',1,1037,NULL,'19365',NULL,1228,39.961094,-75.92047,0,NULL,NULL,56),(153,153,1,1,0,'711N Northpoint Ln SW',711,'N',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Parkesburg',1,1037,NULL,'19365',NULL,1228,39.961094,-75.92047,0,NULL,NULL,56),(154,186,1,1,0,'479R Green Ln W',479,'R',NULL,'Green','Ln','W',NULL,NULL,NULL,NULL,'Shasta Lake',1,1004,NULL,'96079',NULL,1228,40.686639,-122.334778,0,NULL,NULL,57),(155,133,1,1,0,'479R Green Ln W',479,'R',NULL,'Green','Ln','W',NULL,NULL,NULL,NULL,'Shasta Lake',1,1004,NULL,'96079',NULL,1228,40.686639,-122.334778,0,NULL,NULL,57),(156,4,1,1,0,'479R Green Ln W',479,'R',NULL,'Green','Ln','W',NULL,NULL,NULL,NULL,'Shasta Lake',1,1004,NULL,'96079',NULL,1228,40.686639,-122.334778,0,NULL,NULL,57),(157,169,1,1,0,'479R Green Ln W',479,'R',NULL,'Green','Ln','W',NULL,NULL,NULL,NULL,'Shasta Lake',1,1004,NULL,'96079',NULL,1228,40.686639,-122.334778,0,NULL,NULL,57),(158,171,1,1,0,'207W Caulder Pl S',207,'W',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Harlan',1,1014,NULL,'51593',NULL,1228,41.332943,-95.587197,0,NULL,NULL,58),(159,184,1,1,0,'207W Caulder Pl S',207,'W',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Harlan',1,1014,NULL,'51593',NULL,1228,41.332943,-95.587197,0,NULL,NULL,58),(160,130,1,1,0,'207W Caulder Pl S',207,'W',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Harlan',1,1014,NULL,'51593',NULL,1228,41.332943,-95.587197,0,NULL,NULL,58),(161,197,1,1,0,'207W Caulder Pl S',207,'W',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Harlan',1,1014,NULL,'51593',NULL,1228,41.332943,-95.587197,0,NULL,NULL,58),(162,114,1,1,0,'138S Jackson Rd E',138,'S',NULL,'Jackson','Rd','E',NULL,NULL,NULL,NULL,'Reseda',1,1004,NULL,'91337',NULL,1228,33.786594,-118.298662,0,NULL,NULL,59),(163,154,1,1,0,'138S Jackson Rd E',138,'S',NULL,'Jackson','Rd','E',NULL,NULL,NULL,NULL,'Reseda',1,1004,NULL,'91337',NULL,1228,33.786594,-118.298662,0,NULL,NULL,59),(164,160,1,0,0,'138S Jackson Rd E',138,'S',NULL,'Jackson','Rd','E',NULL,NULL,NULL,NULL,'Reseda',1,1004,NULL,'91337',NULL,1228,33.786594,-118.298662,0,NULL,NULL,59),(165,170,1,1,0,'889L Northpoint Ln W',889,'L',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Lakewood',1,1046,NULL,'98497',NULL,1228,47.066193,-122.113223,0,NULL,NULL,NULL),(166,100,1,1,0,'228F Cadell Pl NE',228,'F',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Alcester',1,1040,NULL,'57001',NULL,1228,42.974216,-96.63848,0,NULL,NULL,60),(167,148,1,1,0,'228F Cadell Pl NE',228,'F',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Alcester',1,1040,NULL,'57001',NULL,1228,42.974216,-96.63848,0,NULL,NULL,60),(168,179,1,1,0,'228F Cadell Pl NE',228,'F',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Alcester',1,1040,NULL,'57001',NULL,1228,42.974216,-96.63848,0,NULL,NULL,60),(169,113,1,1,0,'228F Cadell Pl NE',228,'F',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Alcester',1,1040,NULL,'57001',NULL,1228,42.974216,-96.63848,0,NULL,NULL,60),(170,70,1,0,0,'486G Caulder Ln NE',486,'G',NULL,'Caulder','Ln','NE',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,61),(171,195,1,1,0,'486G Caulder Ln NE',486,'G',NULL,'Caulder','Ln','NE',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,61),(172,156,1,1,0,'486G Caulder Ln NE',486,'G',NULL,'Caulder','Ln','NE',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,61),(173,72,1,1,0,'486G Caulder Ln NE',486,'G',NULL,'Caulder','Ln','NE',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,61),(174,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),(175,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),(176,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); +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,24,1,1,0,'684Y Woodbridge Blvd NE',684,'Y',NULL,'Woodbridge','Blvd','NE',NULL,NULL,NULL,NULL,'Lawrence',1,1020,NULL,'01840',NULL,1228,42.706941,-71.16181,0,NULL,NULL,NULL),(2,124,1,1,0,'842S Main Ave N',842,'S',NULL,'Main','Ave','N',NULL,NULL,NULL,NULL,'Swengel',1,1037,NULL,'17880',NULL,1228,40.978059,-77.08184,0,NULL,NULL,NULL),(3,57,1,1,0,'438V Main Path W',438,'V',NULL,'Main','Path','W',NULL,NULL,NULL,NULL,'Sun Valley',1,1011,NULL,'83353',NULL,1228,43.661373,-114.18191,0,NULL,NULL,NULL),(4,17,1,1,0,'49W Jackson Blvd SE',49,'W',NULL,'Jackson','Blvd','SE',NULL,NULL,NULL,NULL,'Parkman',1,1034,NULL,'44080',NULL,1228,41.372452,-81.06617,0,NULL,NULL,NULL),(5,182,1,1,0,'392O Green Path W',392,'O',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Stapleton',1,1000,NULL,'36578',NULL,1228,30.744745,-87.81486,0,NULL,NULL,NULL),(6,99,1,1,0,'665Z Maple Dr E',665,'Z',NULL,'Maple','Dr','E',NULL,NULL,NULL,NULL,'Greenmountain',1,1032,NULL,'28740',NULL,1228,36.023817,-82.29237,0,NULL,NULL,NULL),(7,33,1,1,0,'866D Main Pl N',866,'D',NULL,'Main','Pl','N',NULL,NULL,NULL,NULL,'Ladson',1,1039,NULL,'29456',NULL,1228,32.993571,-80.12165,0,NULL,NULL,NULL),(8,179,1,1,0,'501L Martin Luther King Path SW',501,'L',NULL,'Martin Luther King','Path','SW',NULL,NULL,NULL,NULL,'Kiamesha Lake',1,1031,NULL,'12751',NULL,1228,41.679152,-74.657,0,NULL,NULL,NULL),(9,164,1,1,0,'220E Beech Dr N',220,'E',NULL,'Beech','Dr','N',NULL,NULL,NULL,NULL,'North Sandwich',1,1028,NULL,'03259',NULL,1228,43.880005,-71.39475,0,NULL,NULL,NULL),(10,193,1,1,0,'441B Martin Luther King Blvd N',441,'B',NULL,'Martin Luther King','Blvd','N',NULL,NULL,NULL,NULL,'Louisburg',1,1032,NULL,'27549',NULL,1228,36.062239,-78.24953,0,NULL,NULL,NULL),(11,76,1,1,0,'407F Van Ness St W',407,'F',NULL,'Van Ness','St','W',NULL,NULL,NULL,NULL,'Swan Lake',1,1031,NULL,'12783',NULL,1228,41.736523,-74.82634,0,NULL,NULL,NULL),(12,162,1,1,0,'99A Main Pl SE',99,'A',NULL,'Main','Pl','SE',NULL,NULL,NULL,NULL,'Pago Pago',1,1052,NULL,'96799',NULL,1228,-7.209975,-170.7716,0,NULL,NULL,NULL),(13,66,1,1,0,'215Q Beech Ave SE',215,'Q',NULL,'Beech','Ave','SE',NULL,NULL,NULL,NULL,'Gun Barrel City',1,1042,NULL,'75156',NULL,1228,32.290819,-96.114108,0,NULL,NULL,NULL),(14,92,1,1,0,'969U El Camino Blvd E',969,'U',NULL,'El Camino','Blvd','E',NULL,NULL,NULL,NULL,'Decatur',1,1014,NULL,'50067',NULL,1228,40.734072,-93.85169,0,NULL,NULL,NULL),(15,167,1,1,0,'385V College Rd NW',385,'V',NULL,'College','Rd','NW',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88558',NULL,1228,31.694842,-106.299987,0,NULL,NULL,NULL),(16,183,1,1,0,'76C Dowlen Path E',76,'C',NULL,'Dowlen','Path','E',NULL,NULL,NULL,NULL,'Monson',1,1018,NULL,'04464',NULL,1228,45.303916,-69.51368,0,NULL,NULL,NULL),(17,175,1,1,0,'963L Second Pl SE',963,'L',NULL,'Second','Pl','SE',NULL,NULL,NULL,NULL,'Lake Havasu City',1,1002,NULL,'86403',NULL,1228,34.483582,-114.33694,0,NULL,NULL,NULL),(18,129,1,1,0,'429H Martin Luther King Dr SW',429,'H',NULL,'Martin Luther King','Dr','SW',NULL,NULL,NULL,NULL,'Sarasota',1,1008,NULL,'34234',NULL,1228,27.365622,-82.53556,0,NULL,NULL,NULL),(19,197,1,1,0,'41J Dowlen Dr NW',41,'J',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Findlay',1,1034,NULL,'45840',NULL,1228,41.037325,-83.64576,0,NULL,NULL,NULL),(20,7,1,1,0,'439C Green St SW',439,'C',NULL,'Green','St','SW',NULL,NULL,NULL,NULL,'Buffalo',1,1014,NULL,'52728',NULL,1228,41.456515,-90.73252,0,NULL,NULL,NULL),(21,154,1,1,0,'475T El Camino Ln W',475,'T',NULL,'El Camino','Ln','W',NULL,NULL,NULL,NULL,'Huxley',1,1014,NULL,'50124',NULL,1228,41.893335,-93.59844,0,NULL,NULL,NULL),(22,51,1,1,0,'877S Cadell Way SW',877,'S',NULL,'Cadell','Way','SW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1008,NULL,'32352',NULL,1228,30.665715,-84.75363,0,NULL,NULL,NULL),(23,143,1,1,0,'544N Jackson Dr SW',544,'N',NULL,'Jackson','Dr','SW',NULL,NULL,NULL,NULL,'Dahlen',1,1033,NULL,'58224',NULL,1228,48.173113,-97.95766,0,NULL,NULL,NULL),(24,77,1,1,0,'577N Maple Blvd SW',577,'N',NULL,'Maple','Blvd','SW',NULL,NULL,NULL,NULL,'Spokane',1,1046,NULL,'99210',NULL,1228,47.653568,-117.431742,0,NULL,NULL,NULL),(25,84,1,1,0,'428M Green Ln S',428,'M',NULL,'Green','Ln','S',NULL,NULL,NULL,NULL,'Ponca City',1,1035,NULL,'74603',NULL,1228,36.796349,-97.106166,0,NULL,NULL,NULL),(26,88,1,1,0,'723Z Beech Path W',723,'Z',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Anaheim',1,1004,NULL,'92899',NULL,1228,33.640302,-117.769442,0,NULL,NULL,NULL),(27,30,1,1,0,'703U Bay Pl W',703,'U',NULL,'Bay','Pl','W',NULL,NULL,NULL,NULL,'Mollusk',1,1045,NULL,'22517',NULL,1228,37.75028,-76.578109,0,NULL,NULL,NULL),(28,2,1,1,0,'543B Maple Rd SE',543,'B',NULL,'Maple','Rd','SE',NULL,NULL,NULL,NULL,'Sunspot',1,1030,NULL,'88349',NULL,1228,32.8672,-105.781129,0,NULL,NULL,NULL),(29,156,1,1,0,'269A Lincoln Pl SW',269,'A',NULL,'Lincoln','Pl','SW',NULL,NULL,NULL,NULL,'Urbana',1,1013,NULL,'46990',NULL,1228,40.898561,-85.7457,0,NULL,NULL,NULL),(30,118,1,1,0,'663O Second Rd W',663,'O',NULL,'Second','Rd','W',NULL,NULL,NULL,NULL,'Foxhome',1,1022,NULL,'56543',NULL,1228,46.290371,-96.33238,0,NULL,NULL,NULL),(31,87,1,1,0,'426A Caulder St E',426,'A',NULL,'Caulder','St','E',NULL,NULL,NULL,NULL,'Turner',1,1036,NULL,'97392',NULL,1228,44.807739,-122.9485,0,NULL,NULL,NULL),(32,23,1,1,0,'171T Lincoln St NE',171,'T',NULL,'Lincoln','St','NE',NULL,NULL,NULL,NULL,'West Lebanon',1,1037,NULL,'15783',NULL,1228,40.601789,-79.35524,0,NULL,NULL,NULL),(33,5,1,1,0,'127G Pine Way S',127,'G',NULL,'Pine','Way','S',NULL,NULL,NULL,NULL,'Collierville',1,1041,NULL,'38027',NULL,1228,35.201738,-89.971538,0,NULL,NULL,NULL),(34,199,1,1,0,'284M Dowlen St N',284,'M',NULL,'Dowlen','St','N',NULL,NULL,NULL,NULL,'Saint Jo',1,1042,NULL,'76265',NULL,1228,33.701692,-97.53029,0,NULL,NULL,NULL),(35,176,1,1,0,'86O States Path SE',86,'O',NULL,'States','Path','SE',NULL,NULL,NULL,NULL,'Cape Coral',1,1008,NULL,'33914',NULL,1228,26.579862,-82.00227,0,NULL,NULL,NULL),(36,132,1,1,0,'561V Dowlen Blvd SE',561,'V',NULL,'Dowlen','Blvd','SE',NULL,NULL,NULL,NULL,'Colts Neck',1,1029,NULL,'07722',NULL,1228,40.300226,-74.18306,0,NULL,NULL,NULL),(37,80,1,1,0,'307B Maple Way S',307,'B',NULL,'Maple','Way','S',NULL,NULL,NULL,NULL,'Savannah',1,1009,NULL,'31411',NULL,1228,31.927434,-81.0425,0,NULL,NULL,NULL),(38,44,1,1,0,'3C Dowlen Pl SW',3,'C',NULL,'Dowlen','Pl','SW',NULL,NULL,NULL,NULL,'Sea Island',1,1009,NULL,'31561',NULL,1228,31.198914,-81.332211,0,NULL,NULL,NULL),(39,96,1,1,0,'329R Northpoint Ave N',329,'R',NULL,'Northpoint','Ave','N',NULL,NULL,NULL,NULL,'Jacksonville',1,1008,NULL,'32206',NULL,1228,30.351006,-81.64664,0,NULL,NULL,NULL),(40,166,1,1,0,'583Q Dowlen Pl W',583,'Q',NULL,'Dowlen','Pl','W',NULL,NULL,NULL,NULL,'Cascade',1,1005,NULL,'80809',NULL,1228,38.911701,-104.98731,0,NULL,NULL,NULL),(41,52,1,1,0,'780Z Northpoint Blvd SE',780,'Z',NULL,'Northpoint','Blvd','SE',NULL,NULL,NULL,NULL,'Morehead City',1,1032,NULL,'28557',NULL,1228,34.729839,-76.75219,0,NULL,NULL,NULL),(42,16,1,1,0,'706L Main Path E',706,'L',NULL,'Main','Path','E',NULL,NULL,NULL,NULL,'Usk',1,1046,NULL,'99180',NULL,1228,48.295497,-117.29236,0,NULL,NULL,NULL),(43,139,1,1,0,'779I Woodbridge Path SW',779,'I',NULL,'Woodbridge','Path','SW',NULL,NULL,NULL,NULL,'Columbus',1,1034,NULL,'43219',NULL,1228,40.002514,-82.92589,0,NULL,NULL,NULL),(44,127,1,1,0,'11Q Dowlen Blvd SE',11,'Q',NULL,'Dowlen','Blvd','SE',NULL,NULL,NULL,NULL,'Santa Clara',1,1004,NULL,'95051',NULL,1228,37.346241,-121.9846,0,NULL,NULL,NULL),(45,172,1,1,0,'375K Van Ness Ave NE',375,'K',NULL,'Van Ness','Ave','NE',NULL,NULL,NULL,NULL,'Ferguson',1,1032,NULL,'28624',NULL,1228,36.110425,-81.42262,0,NULL,NULL,NULL),(46,11,1,1,0,'321Z Green Path W',321,'Z',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Florence',1,1039,NULL,'29503',NULL,1228,34.062999,-79.650627,0,NULL,NULL,NULL),(47,128,1,1,0,'480E Jackson Blvd E',480,'E',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Wascott',1,1048,NULL,'54383',NULL,1228,46.18508,-91.959307,0,NULL,NULL,NULL),(48,38,1,1,0,'5C Main Dr W',5,'C',NULL,'Main','Dr','W',NULL,NULL,NULL,NULL,'Cuthbert',1,1009,NULL,'31740',NULL,1228,31.781815,-84.76444,0,NULL,NULL,NULL),(49,136,1,1,0,'579N Main Rd SE',579,'N',NULL,'Main','Rd','SE',NULL,NULL,NULL,NULL,'Kendall',1,1048,NULL,'54638',NULL,1228,43.795422,-90.37609,0,NULL,NULL,NULL),(50,32,1,1,0,'275C Jackson Ave N',275,'C',NULL,'Jackson','Ave','N',NULL,NULL,NULL,NULL,'Denver',1,1037,NULL,'17517',NULL,1228,40.234392,-76.12655,0,NULL,NULL,NULL),(51,27,1,1,0,'228Q Main Rd NW',228,'Q',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1034,NULL,'43939',NULL,1228,40.176109,-80.79979,0,NULL,NULL,NULL),(52,116,1,1,0,'797G Main Ln S',797,'G',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Louisville',1,1016,NULL,'40291',NULL,1228,38.147232,-85.59169,0,NULL,NULL,NULL),(53,106,1,1,0,'747A El Camino Way NW',747,'A',NULL,'El Camino','Way','NW',NULL,NULL,NULL,NULL,'Harmony',1,1038,NULL,'02829',NULL,1228,41.879298,-71.589357,0,NULL,NULL,NULL),(54,22,1,1,0,'680G Caulder Blvd E',680,'G',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Yoncalla',1,1036,NULL,'97499',NULL,1228,43.593788,-123.26602,0,NULL,NULL,NULL),(55,115,1,1,0,'485N States Dr SW',485,'N',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Ardmore',1,1035,NULL,'73403',NULL,1228,34.288884,-97.248074,0,NULL,NULL,NULL),(56,35,1,1,0,'218T Lincoln Ave SW',218,'T',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,NULL),(57,177,1,1,0,'994U Martin Luther King Pl NE',994,'U',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75250',NULL,1228,32.767268,-96.777626,0,NULL,NULL,NULL),(58,150,1,1,0,'352X Second Way N',352,'X',NULL,'Second','Way','N',NULL,NULL,NULL,NULL,'Trout Dale',1,1045,NULL,'24378',NULL,1228,36.684567,-81.43411,0,NULL,NULL,NULL),(59,72,1,1,0,'644M Main Dr N',644,'M',NULL,'Main','Dr','N',NULL,NULL,NULL,NULL,'Wilmington',1,1007,NULL,'19893',NULL,1228,39.564499,-75.597047,0,NULL,NULL,NULL),(60,21,1,1,0,'935N Second Pl S',935,'N',NULL,'Second','Pl','S',NULL,NULL,NULL,NULL,'Union City',1,1034,NULL,'45390',NULL,1228,40.20451,-84.78292,0,NULL,NULL,NULL),(61,19,1,1,0,'555F Green Dr S',555,'F',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Pleasant Grove',1,1004,NULL,'95668',NULL,1228,38.8323,-121.51661,0,NULL,NULL,NULL),(62,168,1,1,0,'169U Green St NW',169,'U',NULL,'Green','St','NW',NULL,NULL,NULL,NULL,'Eastwood',1,1016,NULL,'40018',NULL,1228,38.22977,-85.66304,0,NULL,NULL,NULL),(63,101,1,1,0,'967B Dowlen Pl S',967,'B',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Strawberry Plains',1,1041,NULL,'37871',NULL,1228,36.04051,-83.67934,0,NULL,NULL,NULL),(64,98,1,1,0,'706B Cadell Ln SW',706,'B',NULL,'Cadell','Ln','SW',NULL,NULL,NULL,NULL,'Augusta',1,1009,NULL,'30917',NULL,1228,33.527678,-82.235542,0,NULL,NULL,NULL),(65,163,1,1,0,'296I States Path E',296,'I',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Heber',1,1002,NULL,'85928',NULL,1228,34.563994,-110.55929,0,NULL,NULL,NULL),(66,142,3,1,0,'787I Bay Pl W',787,'I',NULL,'Bay','Pl','W',NULL,'Subscriptions Dept',NULL,NULL,'Mccleary',1,1046,NULL,'98557',NULL,1228,47.054419,-123.2739,0,NULL,NULL,NULL),(67,170,2,1,0,'787I Bay Pl W',787,'I',NULL,'Bay','Pl','W',NULL,'Subscriptions Dept',NULL,NULL,'Mccleary',1,1046,NULL,'98557',NULL,1228,47.054419,-123.2739,0,NULL,NULL,66),(68,174,3,1,0,'698Y Northpoint Blvd NW',698,'Y',NULL,'Northpoint','Blvd','NW',NULL,'Donor Relations',NULL,NULL,'West Greene',1,1000,NULL,'35491',NULL,1228,32.835692,-87.956884,0,NULL,NULL,NULL),(69,185,2,1,0,'698Y Northpoint Blvd NW',698,'Y',NULL,'Northpoint','Blvd','NW',NULL,'Donor Relations',NULL,NULL,'West Greene',1,1000,NULL,'35491',NULL,1228,32.835692,-87.956884,0,NULL,NULL,68),(70,105,3,1,0,'35Y Maple Ln N',35,'Y',NULL,'Maple','Ln','N',NULL,'Disbursements',NULL,NULL,'Gateway',1,1003,NULL,'72733',NULL,1228,36.486424,-93.927748,0,NULL,NULL,NULL),(71,151,2,1,0,'35Y Maple Ln N',35,'Y',NULL,'Maple','Ln','N',NULL,'Disbursements',NULL,NULL,'Gateway',1,1003,NULL,'72733',NULL,1228,36.486424,-93.927748,0,NULL,NULL,70),(72,144,3,1,0,'900W Van Ness Dr SE',900,'W',NULL,'Van Ness','Dr','SE',NULL,'c/o OPDC',NULL,NULL,'Perris',1,1004,NULL,'92572',NULL,1228,33.752886,-116.055617,0,NULL,NULL,NULL),(73,18,2,1,0,'900W Van Ness Dr SE',900,'W',NULL,'Van Ness','Dr','SE',NULL,'c/o OPDC',NULL,NULL,'Perris',1,1004,NULL,'92572',NULL,1228,33.752886,-116.055617,0,NULL,NULL,72),(74,148,3,1,0,'241O Van Ness Way NE',241,'O',NULL,'Van Ness','Way','NE',NULL,'c/o PO Plus',NULL,NULL,'Dallas',1,1042,NULL,'75243',NULL,1228,32.912225,-96.73688,0,NULL,NULL,NULL),(75,104,2,1,0,'241O Van Ness Way NE',241,'O',NULL,'Van Ness','Way','NE',NULL,'c/o PO Plus',NULL,NULL,'Dallas',1,1042,NULL,'75243',NULL,1228,32.912225,-96.73688,0,NULL,NULL,74),(76,90,3,1,0,'99D Beech Ave SW',99,'D',NULL,'Beech','Ave','SW',NULL,'Mailstop 101',NULL,NULL,'Rebecca',1,1009,NULL,'31783',NULL,1228,31.767986,-83.47325,0,NULL,NULL,NULL),(77,86,3,1,0,'188H Beech Way W',188,'H',NULL,'Beech','Way','W',NULL,'Cuffe Parade',NULL,NULL,'Silver Spring',1,1019,NULL,'20997',NULL,1228,39.143979,-77.207617,0,NULL,NULL,NULL),(78,197,2,0,0,'188H Beech Way W',188,'H',NULL,'Beech','Way','W',NULL,'Cuffe Parade',NULL,NULL,'Silver Spring',1,1019,NULL,'20997',NULL,1228,39.143979,-77.207617,0,NULL,NULL,77),(79,56,3,1,0,'427Z Beech Ln N',427,'Z',NULL,'Beech','Ln','N',NULL,'Attn: Accounting',NULL,NULL,'Kings Mountain',1,1016,NULL,'40442',NULL,1228,37.351449,-84.7219,0,NULL,NULL,NULL),(80,62,3,1,0,'132F Jackson St NE',132,'F',NULL,'Jackson','St','NE',NULL,'Subscriptions Dept',NULL,NULL,'Collins',1,1014,NULL,'50055',NULL,1228,41.880967,-93.29691,0,NULL,NULL,NULL),(81,137,3,1,0,'924Z States Rd E',924,'Z',NULL,'States','Rd','E',NULL,'Attn: Development',NULL,NULL,'Aptos',1,1004,NULL,'95001',NULL,1228,37.05297,-121.949418,0,NULL,NULL,NULL),(82,34,2,1,0,'924Z States Rd E',924,'Z',NULL,'States','Rd','E',NULL,'Attn: Development',NULL,NULL,'Aptos',1,1004,NULL,'95001',NULL,1228,37.05297,-121.949418,0,NULL,NULL,81),(83,14,3,1,0,'385N States Way SW',385,'N',NULL,'States','Way','SW',NULL,'Disbursements',NULL,NULL,'Ballston Lake',1,1031,NULL,'12019',NULL,1228,42.916343,-73.86657,0,NULL,NULL,NULL),(84,178,3,1,0,'657X Dowlen Ave NW',657,'X',NULL,'Dowlen','Ave','NW',NULL,'c/o PO Plus',NULL,NULL,'Lake Como',1,1008,NULL,'32157',NULL,1228,29.467357,-81.57164,0,NULL,NULL,NULL),(85,117,3,1,0,'801K Main St W',801,'K',NULL,'Main','St','W',NULL,'Community Relations',NULL,NULL,'Willow City',1,1033,NULL,'58384',NULL,1228,48.609924,-100.26587,0,NULL,NULL,NULL),(86,85,2,1,0,'801K Main St W',801,'K',NULL,'Main','St','W',NULL,'Community Relations',NULL,NULL,'Willow City',1,1033,NULL,'58384',NULL,1228,48.609924,-100.26587,0,NULL,NULL,85),(87,157,3,1,0,'787X Lincoln Dr E',787,'X',NULL,'Lincoln','Dr','E',NULL,'Urgent',NULL,NULL,'Moxahala',1,1034,NULL,'43761',NULL,1228,39.740299,-82.248369,0,NULL,NULL,NULL),(88,57,2,0,0,'787X Lincoln Dr E',787,'X',NULL,'Lincoln','Dr','E',NULL,'Urgent',NULL,NULL,'Moxahala',1,1034,NULL,'43761',NULL,1228,39.740299,-82.248369,0,NULL,NULL,87),(89,91,3,1,0,'854O Green Rd NE',854,'O',NULL,'Green','Rd','NE',NULL,'Subscriptions Dept',NULL,NULL,'Allakaket',1,1001,NULL,'99720',NULL,1228,66.557586,-152.6559,0,NULL,NULL,NULL),(90,120,2,1,0,'854O Green Rd NE',854,'O',NULL,'Green','Rd','NE',NULL,'Subscriptions Dept',NULL,NULL,'Allakaket',1,1001,NULL,'99720',NULL,1228,66.557586,-152.6559,0,NULL,NULL,89),(91,73,3,1,0,'251Y Van Ness St NW',251,'Y',NULL,'Van Ness','St','NW',NULL,'c/o OPDC',NULL,NULL,'Yakima',1,1046,NULL,'98907',NULL,1228,46.628757,-120.573967,0,NULL,NULL,NULL),(92,75,2,1,0,'251Y Van Ness St NW',251,'Y',NULL,'Van Ness','St','NW',NULL,'c/o OPDC',NULL,NULL,'Yakima',1,1046,NULL,'98907',NULL,1228,46.628757,-120.573967,0,NULL,NULL,91),(93,79,3,1,0,'753P Main Pl NW',753,'P',NULL,'Main','Pl','NW',NULL,'Payables Dept.',NULL,NULL,'Ogdensburg',1,1048,NULL,'54962',NULL,1228,44.481372,-89.03101,0,NULL,NULL,NULL),(94,37,3,1,0,'879J Jackson Ave S',879,'J',NULL,'Jackson','Ave','S',NULL,'Receiving',NULL,NULL,'Copeland',1,1015,NULL,'67837',NULL,1228,37.554849,-100.67514,0,NULL,NULL,NULL),(95,36,2,1,0,'879J Jackson Ave S',879,'J',NULL,'Jackson','Ave','S',NULL,'Receiving',NULL,NULL,'Copeland',1,1015,NULL,'67837',NULL,1228,37.554849,-100.67514,0,NULL,NULL,94),(96,46,3,1,0,'374P Green Ave S',374,'P',NULL,'Green','Ave','S',NULL,'Subscriptions Dept',NULL,NULL,'Tampa',1,1008,NULL,'33697',NULL,1228,27.871964,-82.438841,0,NULL,NULL,NULL),(97,20,2,1,0,'374P Green Ave S',374,'P',NULL,'Green','Ave','S',NULL,'Subscriptions Dept',NULL,NULL,'Tampa',1,1008,NULL,'33697',NULL,1228,27.871964,-82.438841,0,NULL,NULL,96),(98,50,3,1,0,'632O College Ave NW',632,'O',NULL,'College','Ave','NW',NULL,'Editorial Dept',NULL,NULL,'Lakewood',1,1029,NULL,'08701',NULL,1228,40.082782,-74.2094,0,NULL,NULL,NULL),(99,89,2,1,0,'632O College Ave NW',632,'O',NULL,'College','Ave','NW',NULL,'Editorial Dept',NULL,NULL,'Lakewood',1,1029,NULL,'08701',NULL,1228,40.082782,-74.2094,0,NULL,NULL,98),(100,125,1,1,0,'321Z Green Path W',321,'Z',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Florence',1,1039,NULL,'29503',NULL,1228,34.062999,-79.650627,0,NULL,NULL,46),(101,74,1,1,0,'321Z Green Path W',321,'Z',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Florence',1,1039,NULL,'29503',NULL,1228,34.062999,-79.650627,0,NULL,NULL,46),(102,47,1,1,0,'321Z Green Path W',321,'Z',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Florence',1,1039,NULL,'29503',NULL,1228,34.062999,-79.650627,0,NULL,NULL,46),(103,172,1,0,0,'967Z College Path E',967,'Z',NULL,'College','Path','E',NULL,NULL,NULL,NULL,'Michigan City',1,1023,NULL,'38647',NULL,1228,34.975571,-89.25982,0,NULL,NULL,NULL),(104,102,1,1,0,'480E Jackson Blvd E',480,'E',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Wascott',1,1048,NULL,'54383',NULL,1228,46.18508,-91.959307,0,NULL,NULL,47),(105,126,1,1,0,'480E Jackson Blvd E',480,'E',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Wascott',1,1048,NULL,'54383',NULL,1228,46.18508,-91.959307,0,NULL,NULL,47),(106,9,1,1,0,'480E Jackson Blvd E',480,'E',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Wascott',1,1048,NULL,'54383',NULL,1228,46.18508,-91.959307,0,NULL,NULL,47),(107,159,1,1,0,'434Z Beech Blvd NW',434,'Z',NULL,'Beech','Blvd','NW',NULL,NULL,NULL,NULL,'Carteret',1,1029,NULL,'07008',NULL,1228,40.582504,-74.22997,0,NULL,NULL,NULL),(108,149,1,1,0,'5C Main Dr W',5,'C',NULL,'Main','Dr','W',NULL,NULL,NULL,NULL,'Cuthbert',1,1009,NULL,'31740',NULL,1228,31.781815,-84.76444,0,NULL,NULL,48),(109,40,1,1,0,'5C Main Dr W',5,'C',NULL,'Main','Dr','W',NULL,NULL,NULL,NULL,'Cuthbert',1,1009,NULL,'31740',NULL,1228,31.781815,-84.76444,0,NULL,NULL,48),(110,85,1,0,0,'5C Main Dr W',5,'C',NULL,'Main','Dr','W',NULL,NULL,NULL,NULL,'Cuthbert',1,1009,NULL,'31740',NULL,1228,31.781815,-84.76444,0,NULL,NULL,48),(111,198,1,1,0,'5C Main Dr W',5,'C',NULL,'Main','Dr','W',NULL,NULL,NULL,NULL,'Cuthbert',1,1009,NULL,'31740',NULL,1228,31.781815,-84.76444,0,NULL,NULL,48),(112,170,1,0,0,'579N Main Rd SE',579,'N',NULL,'Main','Rd','SE',NULL,NULL,NULL,NULL,'Kendall',1,1048,NULL,'54638',NULL,1228,43.795422,-90.37609,0,NULL,NULL,49),(113,134,1,1,0,'579N Main Rd SE',579,'N',NULL,'Main','Rd','SE',NULL,NULL,NULL,NULL,'Kendall',1,1048,NULL,'54638',NULL,1228,43.795422,-90.37609,0,NULL,NULL,49),(114,100,1,1,0,'579N Main Rd SE',579,'N',NULL,'Main','Rd','SE',NULL,NULL,NULL,NULL,'Kendall',1,1048,NULL,'54638',NULL,1228,43.795422,-90.37609,0,NULL,NULL,49),(115,192,1,1,0,'506M States St E',506,'M',NULL,'States','St','E',NULL,NULL,NULL,NULL,'East Windsor',1,1006,NULL,'06088',NULL,1228,41.908464,-72.60547,0,NULL,NULL,NULL),(116,113,1,1,0,'275C Jackson Ave N',275,'C',NULL,'Jackson','Ave','N',NULL,NULL,NULL,NULL,'Denver',1,1037,NULL,'17517',NULL,1228,40.234392,-76.12655,0,NULL,NULL,50),(117,59,1,1,0,'275C Jackson Ave N',275,'C',NULL,'Jackson','Ave','N',NULL,NULL,NULL,NULL,'Denver',1,1037,NULL,'17517',NULL,1228,40.234392,-76.12655,0,NULL,NULL,50),(118,110,1,1,0,'275C Jackson Ave N',275,'C',NULL,'Jackson','Ave','N',NULL,NULL,NULL,NULL,'Denver',1,1037,NULL,'17517',NULL,1228,40.234392,-76.12655,0,NULL,NULL,50),(119,34,1,0,0,'275C Jackson Ave N',275,'C',NULL,'Jackson','Ave','N',NULL,NULL,NULL,NULL,'Denver',1,1037,NULL,'17517',NULL,1228,40.234392,-76.12655,0,NULL,NULL,50),(120,160,1,1,0,'228Q Main Rd NW',228,'Q',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1034,NULL,'43939',NULL,1228,40.176109,-80.79979,0,NULL,NULL,51),(121,147,1,1,0,'228Q Main Rd NW',228,'Q',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1034,NULL,'43939',NULL,1228,40.176109,-80.79979,0,NULL,NULL,51),(122,151,1,0,0,'228Q Main Rd NW',228,'Q',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1034,NULL,'43939',NULL,1228,40.176109,-80.79979,0,NULL,NULL,51),(123,191,1,1,0,'228Q Main Rd NW',228,'Q',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Mount Pleasant',1,1034,NULL,'43939',NULL,1228,40.176109,-80.79979,0,NULL,NULL,51),(124,196,1,1,0,'797G Main Ln S',797,'G',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Louisville',1,1016,NULL,'40291',NULL,1228,38.147232,-85.59169,0,NULL,NULL,52),(125,94,1,1,0,'797G Main Ln S',797,'G',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Louisville',1,1016,NULL,'40291',NULL,1228,38.147232,-85.59169,0,NULL,NULL,52),(126,188,1,1,0,'797G Main Ln S',797,'G',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Louisville',1,1016,NULL,'40291',NULL,1228,38.147232,-85.59169,0,NULL,NULL,52),(127,82,1,1,0,'312Q Second Blvd NE',312,'Q',NULL,'Second','Blvd','NE',NULL,NULL,NULL,NULL,'Round Rock',1,1042,NULL,'78681',NULL,1228,30.518975,-97.71439,0,NULL,NULL,NULL),(128,173,1,1,0,'747A El Camino Way NW',747,'A',NULL,'El Camino','Way','NW',NULL,NULL,NULL,NULL,'Harmony',1,1038,NULL,'02829',NULL,1228,41.879298,-71.589357,0,NULL,NULL,53),(129,28,1,1,0,'747A El Camino Way NW',747,'A',NULL,'El Camino','Way','NW',NULL,NULL,NULL,NULL,'Harmony',1,1038,NULL,'02829',NULL,1228,41.879298,-71.589357,0,NULL,NULL,53),(130,133,1,1,0,'747A El Camino Way NW',747,'A',NULL,'El Camino','Way','NW',NULL,NULL,NULL,NULL,'Harmony',1,1038,NULL,'02829',NULL,1228,41.879298,-71.589357,0,NULL,NULL,53),(131,195,1,1,0,'216S Northpoint Ave NW',216,'S',NULL,'Northpoint','Ave','NW',NULL,NULL,NULL,NULL,'Kearneysville',1,1047,NULL,'25429',NULL,1228,39.349586,-77.878957,0,NULL,NULL,NULL),(132,112,1,1,0,'680G Caulder Blvd E',680,'G',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Yoncalla',1,1036,NULL,'97499',NULL,1228,43.593788,-123.26602,0,NULL,NULL,54),(133,152,1,1,0,'680G Caulder Blvd E',680,'G',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Yoncalla',1,1036,NULL,'97499',NULL,1228,43.593788,-123.26602,0,NULL,NULL,54),(134,61,1,1,0,'680G Caulder Blvd E',680,'G',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Yoncalla',1,1036,NULL,'97499',NULL,1228,43.593788,-123.26602,0,NULL,NULL,54),(135,141,1,1,0,'680G Caulder Blvd E',680,'G',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Yoncalla',1,1036,NULL,'97499',NULL,1228,43.593788,-123.26602,0,NULL,NULL,54),(136,54,1,1,0,'485N States Dr SW',485,'N',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Ardmore',1,1035,NULL,'73403',NULL,1228,34.288884,-97.248074,0,NULL,NULL,55),(137,155,1,1,0,'485N States Dr SW',485,'N',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Ardmore',1,1035,NULL,'73403',NULL,1228,34.288884,-97.248074,0,NULL,NULL,55),(138,29,1,1,0,'485N States Dr SW',485,'N',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Ardmore',1,1035,NULL,'73403',NULL,1228,34.288884,-97.248074,0,NULL,NULL,55),(139,108,1,1,0,'485N States Dr SW',485,'N',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Ardmore',1,1035,NULL,'73403',NULL,1228,34.288884,-97.248074,0,NULL,NULL,55),(140,201,1,1,0,'218T Lincoln Ave SW',218,'T',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,56),(141,63,1,1,0,'218T Lincoln Ave SW',218,'T',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,56),(142,95,1,1,0,'218T Lincoln Ave SW',218,'T',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,56),(143,103,1,1,0,'218T Lincoln Ave SW',218,'T',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,56),(144,68,1,1,0,'994U Martin Luther King Pl NE',994,'U',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75250',NULL,1228,32.767268,-96.777626,0,NULL,NULL,57),(145,114,1,1,0,'994U Martin Luther King Pl NE',994,'U',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75250',NULL,1228,32.767268,-96.777626,0,NULL,NULL,57),(146,70,1,1,0,'994U Martin Luther King Pl NE',994,'U',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75250',NULL,1228,32.767268,-96.777626,0,NULL,NULL,57),(147,107,1,1,0,'994U Martin Luther King Pl NE',994,'U',NULL,'Martin Luther King','Pl','NE',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75250',NULL,1228,32.767268,-96.777626,0,NULL,NULL,57),(148,130,1,1,0,'352X Second Way N',352,'X',NULL,'Second','Way','N',NULL,NULL,NULL,NULL,'Trout Dale',1,1045,NULL,'24378',NULL,1228,36.684567,-81.43411,0,NULL,NULL,58),(149,140,1,1,0,'352X Second Way N',352,'X',NULL,'Second','Way','N',NULL,NULL,NULL,NULL,'Trout Dale',1,1045,NULL,'24378',NULL,1228,36.684567,-81.43411,0,NULL,NULL,58),(150,58,1,1,0,'352X Second Way N',352,'X',NULL,'Second','Way','N',NULL,NULL,NULL,NULL,'Trout Dale',1,1045,NULL,'24378',NULL,1228,36.684567,-81.43411,0,NULL,NULL,58),(151,10,1,1,0,'352X Second Way N',352,'X',NULL,'Second','Way','N',NULL,NULL,NULL,NULL,'Trout Dale',1,1045,NULL,'24378',NULL,1228,36.684567,-81.43411,0,NULL,NULL,58),(152,48,1,1,0,'644M Main Dr N',644,'M',NULL,'Main','Dr','N',NULL,NULL,NULL,NULL,'Wilmington',1,1007,NULL,'19893',NULL,1228,39.564499,-75.597047,0,NULL,NULL,59),(153,78,1,1,0,'644M Main Dr N',644,'M',NULL,'Main','Dr','N',NULL,NULL,NULL,NULL,'Wilmington',1,1007,NULL,'19893',NULL,1228,39.564499,-75.597047,0,NULL,NULL,59),(154,181,1,1,0,'644M Main Dr N',644,'M',NULL,'Main','Dr','N',NULL,NULL,NULL,NULL,'Wilmington',1,1007,NULL,'19893',NULL,1228,39.564499,-75.597047,0,NULL,NULL,59),(155,187,1,1,0,'765E States Rd NE',765,'E',NULL,'States','Rd','NE',NULL,NULL,NULL,NULL,'Sebring',1,1008,NULL,'33870',NULL,1228,27.483817,-81.42131,0,NULL,NULL,NULL),(156,43,1,1,0,'935N Second Pl S',935,'N',NULL,'Second','Pl','S',NULL,NULL,NULL,NULL,'Union City',1,1034,NULL,'45390',NULL,1228,40.20451,-84.78292,0,NULL,NULL,60),(157,20,1,0,0,'935N Second Pl S',935,'N',NULL,'Second','Pl','S',NULL,NULL,NULL,NULL,'Union City',1,1034,NULL,'45390',NULL,1228,40.20451,-84.78292,0,NULL,NULL,60),(158,13,1,1,0,'935N Second Pl S',935,'N',NULL,'Second','Pl','S',NULL,NULL,NULL,NULL,'Union City',1,1034,NULL,'45390',NULL,1228,40.20451,-84.78292,0,NULL,NULL,60),(159,135,1,1,0,'759K Lincoln St SW',759,'K',NULL,'Lincoln','St','SW',NULL,NULL,NULL,NULL,'Dutchtown',1,1024,NULL,'63745',NULL,1228,37.24237,-89.69768,0,NULL,NULL,NULL),(160,131,1,1,0,'555F Green Dr S',555,'F',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Pleasant Grove',1,1004,NULL,'95668',NULL,1228,38.8323,-121.51661,0,NULL,NULL,61),(161,89,1,0,0,'555F Green Dr S',555,'F',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Pleasant Grove',1,1004,NULL,'95668',NULL,1228,38.8323,-121.51661,0,NULL,NULL,61),(162,75,1,0,0,'555F Green Dr S',555,'F',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Pleasant Grove',1,1004,NULL,'95668',NULL,1228,38.8323,-121.51661,0,NULL,NULL,61),(163,194,1,1,0,'78O Maple Rd E',78,'O',NULL,'Maple','Rd','E',NULL,NULL,NULL,NULL,'Meservey',1,1014,NULL,'50457',NULL,1228,42.916174,-93.48318,0,NULL,NULL,NULL),(164,153,1,1,0,'169U Green St NW',169,'U',NULL,'Green','St','NW',NULL,NULL,NULL,NULL,'Eastwood',1,1016,NULL,'40018',NULL,1228,38.22977,-85.66304,0,NULL,NULL,62),(165,121,1,1,0,'169U Green St NW',169,'U',NULL,'Green','St','NW',NULL,NULL,NULL,NULL,'Eastwood',1,1016,NULL,'40018',NULL,1228,38.22977,-85.66304,0,NULL,NULL,62),(166,39,1,1,0,'169U Green St NW',169,'U',NULL,'Green','St','NW',NULL,NULL,NULL,NULL,'Eastwood',1,1016,NULL,'40018',NULL,1228,38.22977,-85.66304,0,NULL,NULL,62),(167,104,1,0,0,'169U Green St NW',169,'U',NULL,'Green','St','NW',NULL,NULL,NULL,NULL,'Eastwood',1,1016,NULL,'40018',NULL,1228,38.22977,-85.66304,0,NULL,NULL,62),(168,189,1,1,0,'967B Dowlen Pl S',967,'B',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Strawberry Plains',1,1041,NULL,'37871',NULL,1228,36.04051,-83.67934,0,NULL,NULL,63),(169,36,1,0,0,'967B Dowlen Pl S',967,'B',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Strawberry Plains',1,1041,NULL,'37871',NULL,1228,36.04051,-83.67934,0,NULL,NULL,63),(170,26,1,1,0,'967B Dowlen Pl S',967,'B',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Strawberry Plains',1,1041,NULL,'37871',NULL,1228,36.04051,-83.67934,0,NULL,NULL,63),(171,42,1,1,0,'967B Dowlen Pl S',967,'B',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Strawberry Plains',1,1041,NULL,'37871',NULL,1228,36.04051,-83.67934,0,NULL,NULL,63),(172,200,1,1,0,'706B Cadell Ln SW',706,'B',NULL,'Cadell','Ln','SW',NULL,NULL,NULL,NULL,'Augusta',1,1009,NULL,'30917',NULL,1228,33.527678,-82.235542,0,NULL,NULL,64),(173,69,1,1,0,'706B Cadell Ln SW',706,'B',NULL,'Cadell','Ln','SW',NULL,NULL,NULL,NULL,'Augusta',1,1009,NULL,'30917',NULL,1228,33.527678,-82.235542,0,NULL,NULL,64),(174,109,1,1,0,'706B Cadell Ln SW',706,'B',NULL,'Cadell','Ln','SW',NULL,NULL,NULL,NULL,'Augusta',1,1009,NULL,'30917',NULL,1228,33.527678,-82.235542,0,NULL,NULL,64),(175,171,1,1,0,'706B Cadell Ln SW',706,'B',NULL,'Cadell','Ln','SW',NULL,NULL,NULL,NULL,'Augusta',1,1009,NULL,'30917',NULL,1228,33.527678,-82.235542,0,NULL,NULL,64),(176,180,1,1,0,'296I States Path E',296,'I',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Heber',1,1002,NULL,'85928',NULL,1228,34.563994,-110.55929,0,NULL,NULL,65),(177,158,1,1,0,'296I States Path E',296,'I',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Heber',1,1002,NULL,'85928',NULL,1228,34.563994,-110.55929,0,NULL,NULL,65),(178,4,1,1,0,'296I States Path E',296,'I',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Heber',1,1002,NULL,'85928',NULL,1228,34.563994,-110.55929,0,NULL,NULL,65),(179,25,1,1,0,'912H El Camino Way SE',912,'H',NULL,'El Camino','Way','SE',NULL,NULL,NULL,NULL,'Conetoe',1,1032,NULL,'27819',NULL,1228,35.818414,-77.45335,0,NULL,NULL,NULL),(180,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),(181,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),(182,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_address` ENABLE KEYS */; UNLOCK TABLES; @@ -208,7 +208,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contact` WRITE; /*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */; -INSERT INTO `civicrm_contact` (`id`, `contact_type`, `contact_sub_type`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `external_identifier`, `sort_name`, `display_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `preferred_mail_format`, `hash`, `api_key`, `source`, `first_name`, `middle_name`, `last_name`, `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`, `organization_name`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`) VALUES (1,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Default Organization','Default Organization',NULL,'Default Organization',NULL,NULL,NULL,'Both',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,'Default Organization',NULL,NULL,NULL,0,NULL,'2020-06-10 02:45:21'),(2,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Smith family','Smith family',NULL,NULL,NULL,NULL,NULL,'Both','4082772645',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Smith family',5,NULL,'Dear Smith family',2,NULL,'Smith family',NULL,NULL,NULL,0,NULL,'Smith family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(3,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Kandace','Dr. Kandace Cooper',NULL,NULL,NULL,NULL,NULL,'Both','3097920317',NULL,'Sample Data','Kandace','Q','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Dr. Kandace Cooper',NULL,1,'1978-09-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(4,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'reynolds.errol@testmail.net','reynolds.errol@testmail.net',NULL,NULL,NULL,NULL,NULL,'Both','485029899',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear reynolds.errol@testmail.net',1,NULL,'Dear reynolds.errol@testmail.net',1,NULL,'reynolds.errol@testmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(5,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wagner-Jacobs, Russell','Russell Wagner-Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','4167485278',NULL,'Sample Data','Russell','','Wagner-Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Wagner-Jacobs',NULL,2,'1983-11-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(6,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Lincoln','Lincoln Smith',NULL,NULL,NULL,NULL,NULL,'Both','3833936283',NULL,'Sample Data','Lincoln','J','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Smith',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(7,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Jackson','Dr. Jackson Lee III',NULL,NULL,NULL,'1',NULL,'Both','3405561048',NULL,'Sample Data','Jackson','R','Lee',4,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Lee III',NULL,2,'1979-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(8,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wagner, Megan','Mrs. Megan Wagner',NULL,NULL,NULL,'2',NULL,'Both','3194270905',NULL,'Sample Data','Megan','','Wagner',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(9,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jacobjensen58@infomail.biz','jacobjensen58@infomail.biz',NULL,NULL,NULL,'4',NULL,'Both','1537976553',NULL,'Sample Data',NULL,NULL,NULL,4,1,NULL,NULL,1,NULL,'Dear jacobjensen58@infomail.biz',1,NULL,'Dear jacobjensen58@infomail.biz',1,NULL,'jacobjensen58@infomail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(10,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Jerome','Jerome Terry',NULL,NULL,NULL,NULL,NULL,'Both','2399613153',NULL,'Sample Data','Jerome','','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Terry',NULL,2,'1942-05-01',1,'2019-06-19',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(11,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ru.smith69@spamalot.co.in','ru.smith69@spamalot.co.in',NULL,NULL,NULL,NULL,NULL,'Both','1615929152',NULL,'Sample Data',NULL,NULL,NULL,3,2,NULL,NULL,1,NULL,'Dear ru.smith69@spamalot.co.in',1,NULL,'Dear ru.smith69@spamalot.co.in',1,NULL,'ru.smith69@spamalot.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(12,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terry, Shad','Shad Terry',NULL,NULL,NULL,NULL,NULL,'Both','3306428162',NULL,'Sample Data','Shad','D','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Terry',NULL,2,'1997-11-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(13,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Cooper, Landon','Landon Cooper',NULL,NULL,NULL,NULL,NULL,'Both','3917161471',NULL,'Sample Data','Landon','','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Cooper',NULL,2,'2010-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(14,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'ivanov.shad38@lol.org','ivanov.shad38@lol.org',NULL,NULL,NULL,NULL,NULL,'Both','1194442870',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear ivanov.shad38@lol.org',1,NULL,'Dear ivanov.shad38@lol.org',1,NULL,'ivanov.shad38@lol.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(15,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Jina','Jina Parker',NULL,NULL,NULL,'3',NULL,'Both','3662235074',NULL,'Sample Data','Jina','N','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Parker',NULL,1,'1963-06-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(16,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Rosario','Rosario Barkley III',NULL,NULL,NULL,NULL,NULL,'Both','2313743843',NULL,'Sample Data','Rosario','V','Barkley',NULL,4,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Barkley III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(17,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'ÅÄ…chowski family','ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,'Both','2407077255',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(18,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, BrzÄ™czysÅ‚aw','BrzÄ™czysÅ‚aw Wattson III',NULL,NULL,NULL,NULL,NULL,'Both','1189364369',NULL,'Sample Data','BrzÄ™czysÅ‚aw','','Wattson',NULL,4,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'BrzÄ™czysÅ‚aw Wattson III',NULL,2,NULL,0,NULL,NULL,NULL,'Wisconsin Wellness Alliance',NULL,NULL,178,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(19,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Adams-Wilson, Ray','Ray Adams-Wilson II',NULL,NULL,NULL,NULL,NULL,'Both','2328256588',NULL,'Sample Data','Ray','Z','Adams-Wilson',NULL,3,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Adams-Wilson II',NULL,2,'1986-08-30',0,NULL,NULL,NULL,'Farmington Poetry Services',NULL,NULL,39,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(20,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Roberts, Allen','Mr. Allen Roberts',NULL,NULL,NULL,'4',NULL,'Both','1308913179',NULL,'Sample Data','Allen','','Roberts',3,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Mr. Allen Roberts',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(21,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Brigette','Ms. Brigette Wilson',NULL,NULL,NULL,'1',NULL,'Both','4271380473',NULL,'Sample Data','Brigette','','Wilson',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Wilson',NULL,NULL,'1987-05-19',0,NULL,NULL,NULL,'Martin Luther King Education Center',NULL,NULL,123,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(22,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wilson, Felisha','Mrs. Felisha Wilson',NULL,NULL,NULL,'2',NULL,'Both','314865628',NULL,'Sample Data','Felisha','','Wilson',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Wilson',NULL,1,'1944-04-14',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(23,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Creative Education Academy','Creative Education Academy',NULL,NULL,NULL,'2',NULL,'Both','61414175',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Education Academy',NULL,NULL,NULL,0,NULL,NULL,121,'Creative Education Academy',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(24,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Smith, Brittney','Brittney Smith',NULL,NULL,NULL,NULL,NULL,'Both','1142724087',NULL,'Sample Data','Brittney','D','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(25,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen-Wilson, Erik','Erik Jensen-Wilson',NULL,NULL,NULL,NULL,NULL,'Both','2019829380',NULL,'Sample Data','Erik','L','Jensen-Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Jensen-Wilson',NULL,2,'1984-02-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(26,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Justina','Mrs. Justina Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','2840548306',NULL,'Sample Data','Justina','','Ivanov',1,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Mrs. Justina Ivanov',NULL,1,'1951-01-23',0,NULL,NULL,NULL,'Paluxy Environmental Systems',NULL,NULL,60,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(27,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González, Brittney','Brittney González',NULL,NULL,NULL,'2',NULL,'Both','3632495561',NULL,'Sample Data','Brittney','X','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney González',NULL,1,'2004-04-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(28,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Erik','Erik Adams',NULL,NULL,NULL,NULL,NULL,'Both','1567928244',NULL,'Sample Data','Erik','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Adams',NULL,2,'1941-02-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(29,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bachman.esta@infomail.co.pl','bachman.esta@infomail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','3758157657',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear bachman.esta@infomail.co.pl',1,NULL,'Dear bachman.esta@infomail.co.pl',1,NULL,'bachman.esta@infomail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,'United Technology Alliance',NULL,NULL,105,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(30,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wilson, Brittney','Brittney Wilson',NULL,NULL,NULL,NULL,NULL,'Both','1729401768',NULL,'Sample Data','Brittney','F','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Wilson',NULL,1,'1947-12-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(31,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Arma Food Academy','Arma Food Academy',NULL,NULL,NULL,NULL,NULL,'Both','1487843057',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Arma Food Academy',NULL,NULL,NULL,0,NULL,NULL,NULL,'Arma Food Academy',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(32,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Justina','Ms. Justina ÅÄ…chowski',NULL,NULL,NULL,NULL,NULL,'Both','288351947',NULL,'Sample Data','Justina','','ÅÄ…chowski',2,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Ms. Justina ÅÄ…chowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(33,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Ivey','Dr. Ivey Jacobs',NULL,NULL,NULL,'1',NULL,'Both','4026790678',NULL,'Sample Data','Ivey','','Jacobs',4,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Dr. Ivey Jacobs',NULL,NULL,'1958-02-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(34,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Justina','Justina ÅÄ…chowski',NULL,NULL,NULL,NULL,NULL,'Both','288351947',NULL,'Sample Data','Justina','D','ÅÄ…chowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina ÅÄ…chowski',NULL,1,'1964-03-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(35,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Daren','Daren Wagner',NULL,NULL,NULL,'3',NULL,'Both','1117250816',NULL,'Sample Data','Daren','F','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Wagner',NULL,2,'2004-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(36,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, BrzÄ™czysÅ‚aw','BrzÄ™czysÅ‚aw Parker',NULL,NULL,NULL,'1',NULL,'Both','4128531876',NULL,'Sample Data','BrzÄ™czysÅ‚aw','J','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'BrzÄ™czysÅ‚aw Parker',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(37,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Roland','Dr. Roland Roberts',NULL,NULL,NULL,NULL,NULL,'Both','3609011575',NULL,'Sample Data','Roland','','Roberts',4,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Dr. Roland Roberts',NULL,2,NULL,1,'2019-07-03',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(38,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,'5',NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(39,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Farmington Poetry Services','Farmington Poetry Services',NULL,NULL,NULL,NULL,NULL,'Both','2394335707',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Farmington Poetry Services',NULL,NULL,NULL,0,NULL,NULL,19,'Farmington Poetry Services',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(40,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen-Wilson family','Jensen-Wilson family',NULL,NULL,NULL,NULL,NULL,'Both','2091769541',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jensen-Wilson family',5,NULL,'Dear Jensen-Wilson family',2,NULL,'Jensen-Wilson family',NULL,NULL,NULL,0,NULL,'Jensen-Wilson family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(41,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'samuels.russell@testmail.co.uk','samuels.russell@testmail.co.uk',NULL,NULL,NULL,'3',NULL,'Both','454314156',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear samuels.russell@testmail.co.uk',1,NULL,'Dear samuels.russell@testmail.co.uk',1,NULL,'samuels.russell@testmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(42,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz family','DÃaz family',NULL,NULL,NULL,NULL,NULL,'Both','2169249835',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(43,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samuels, Toby','Mr. Toby Samuels',NULL,NULL,NULL,NULL,NULL,'Both','126496012',NULL,'Sample Data','Toby','Q','Samuels',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Samuels',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(44,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Parker, Barry','Dr. Barry Parker Sr.',NULL,NULL,NULL,'5',NULL,'Both','259830884',NULL,'Sample Data','Barry','','Parker',4,2,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Dr. Barry Parker Sr.',NULL,2,'1986-04-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(45,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Kandace','Kandace Smith',NULL,NULL,NULL,NULL,NULL,'Both','1249006988',NULL,'Sample Data','Kandace','D','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Smith',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(46,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Wagner family','Wagner family',NULL,NULL,NULL,'5',NULL,'Both','1570966486',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner family',5,NULL,'Dear Wagner family',2,NULL,'Wagner family',NULL,NULL,NULL,0,NULL,'Wagner family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(47,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Carylon','Carylon ÅÄ…chowski',NULL,NULL,NULL,'3',NULL,'Both','1553333443',NULL,'Sample Data','Carylon','Z','ÅÄ…chowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon ÅÄ…chowski',NULL,1,'2001-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(48,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Craig','Dr. Craig Wilson Sr.',NULL,NULL,NULL,'5',NULL,'Both','810909432',NULL,'Sample Data','Craig','','Wilson',4,2,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Dr. Craig Wilson Sr.',NULL,2,'1990-07-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(49,'Household',NULL,1,1,0,0,0,0,NULL,NULL,'DÃaz family','DÃaz family',NULL,NULL,NULL,NULL,NULL,'Both','2169249835',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(50,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Bachman, Jerome','Dr. Jerome Bachman III',NULL,NULL,NULL,'2',NULL,'Both','4187758320',NULL,'Sample Data','Jerome','V','Bachman',4,4,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Dr. Jerome Bachman III',NULL,2,'1994-01-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(51,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski-González family','ÅÄ…chowski-González family',NULL,NULL,NULL,NULL,NULL,'Both','2074862954',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear ÅÄ…chowski-González family',5,NULL,'Dear ÅÄ…chowski-González family',2,NULL,'ÅÄ…chowski-González family',NULL,NULL,NULL,0,NULL,'ÅÄ…chowski-González family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(52,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bp.daz@mymail.co.in','bp.daz@mymail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','2198426523',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear bp.daz@mymail.co.in',1,NULL,'Dear bp.daz@mymail.co.in',1,NULL,'bp.daz@mymail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(53,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'dazm@lol.co.pl','dazm@lol.co.pl',NULL,NULL,NULL,'4',NULL,'Both','2050726131',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear dazm@lol.co.pl',1,NULL,'Dear dazm@lol.co.pl',1,NULL,'dazm@lol.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(54,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Dimitrov, Justina','Justina Dimitrov',NULL,NULL,NULL,'4',NULL,'Both','4020373049',NULL,'Sample Data','Justina','Q','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Dimitrov',NULL,1,'1993-10-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(55,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Main Arts Academy','Main Arts Academy',NULL,NULL,NULL,'3',NULL,'Both','3634669757',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Main Arts Academy',NULL,NULL,NULL,0,NULL,NULL,NULL,'Main Arts Academy',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(56,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Margaret','Margaret Jones',NULL,NULL,NULL,'5',NULL,'Both','1031157711',NULL,'Sample Data','Margaret','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Jones',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(57,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Deforest family','Deforest family',NULL,NULL,NULL,NULL,NULL,'Both','3235379039',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(58,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Wagner, Erik','Erik Wagner III',NULL,NULL,NULL,NULL,NULL,'Both','3259334832',NULL,'Sample Data','Erik','','Wagner',NULL,4,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Wagner III',NULL,NULL,'1980-03-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(59,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner-Jacobs, Scarlet','Scarlet Wagner-Jacobs',NULL,NULL,NULL,'3',NULL,'Both','3833435771',NULL,'Sample Data','Scarlet','','Wagner-Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Wagner-Jacobs',NULL,1,'1997-08-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(60,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Paluxy Environmental Systems','Paluxy Environmental Systems',NULL,NULL,NULL,NULL,NULL,'Both','737347417',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Paluxy Environmental Systems',NULL,NULL,NULL,0,NULL,NULL,26,'Paluxy Environmental Systems',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(61,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Kathleen','Kathleen Wagner',NULL,NULL,NULL,'1',NULL,'Both','325058531',NULL,'Sample Data','Kathleen','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Wagner',NULL,1,'1999-10-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(62,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Müller, Elbert','Mr. Elbert Müller Sr.',NULL,NULL,NULL,'5',NULL,'Both','189304968',NULL,'Sample Data','Elbert','Y','Müller',3,2,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Müller Sr.',NULL,2,'1957-12-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(63,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'New York Health Systems','New York Health Systems',NULL,NULL,NULL,'3',NULL,'Both','1491859687',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New York Health Systems',NULL,NULL,NULL,0,NULL,NULL,193,'New York Health Systems',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(64,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'deforest.kenny95@example.co.pl','deforest.kenny95@example.co.pl',NULL,NULL,NULL,'5',NULL,'Both','2335925279',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear deforest.kenny95@example.co.pl',1,NULL,'Dear deforest.kenny95@example.co.pl',1,NULL,'deforest.kenny95@example.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(65,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Indiahoma Health Collective','Indiahoma Health Collective',NULL,NULL,NULL,NULL,NULL,'Both','1431833890',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Indiahoma Health Collective',NULL,NULL,NULL,0,NULL,NULL,84,'Indiahoma Health Collective',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(66,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Daren','Dr. Daren Reynolds',NULL,NULL,NULL,'2',NULL,'Both','3938117907',NULL,'Sample Data','Daren','','Reynolds',4,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Dr. Daren Reynolds',NULL,NULL,'1976-06-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(67,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Brittney','Brittney Smith',NULL,NULL,NULL,'5',NULL,'Both','1142724087',NULL,'Sample Data','Brittney','I','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Smith',NULL,1,'1993-01-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(68,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Jameson family','Jameson family',NULL,NULL,NULL,'3',NULL,'Both','2255649769',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson family',5,NULL,'Dear Jameson family',2,NULL,'Jameson family',NULL,NULL,NULL,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(69,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'ashlie82@airmail.co.pl','ashlie82@airmail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','1567878755',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear ashlie82@airmail.co.pl',1,NULL,'Dear ashlie82@airmail.co.pl',1,NULL,'ashlie82@airmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(70,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman-Blackwell, Brigette','Mrs. Brigette Bachman-Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','2481596724',NULL,'Sample Data','Brigette','Y','Bachman-Blackwell',1,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Mrs. Brigette Bachman-Blackwell',NULL,1,'1967-11-30',0,NULL,NULL,NULL,'Dauberville Arts Center',NULL,NULL,95,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(71,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'DÃaz, Lashawnda','Ms. Lashawnda DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','2462862160',NULL,'Sample Data','Lashawnda','','DÃaz',2,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Ms. Lashawnda DÃaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(72,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Omar','Omar Blackwell Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3587375768',NULL,'Sample Data','Omar','U','Blackwell',NULL,1,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Blackwell Jr.',NULL,2,'1968-11-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:51'),(73,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'samsonb@example.co.pl','samsonb@example.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','3547419990',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear samsonb@example.co.pl',1,NULL,'Dear samsonb@example.co.pl',1,NULL,'samsonb@example.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(74,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Urban Peace Fund','Urban Peace Fund',NULL,NULL,NULL,'2',NULL,'Both','3299542693',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Peace Fund',NULL,NULL,NULL,0,NULL,NULL,160,'Urban Peace Fund',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(75,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Rolando','Rolando Jameson III',NULL,NULL,NULL,'2',NULL,'Both','726163988',NULL,'Sample Data','Rolando','B','Jameson',NULL,4,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Jameson III',NULL,2,'2002-03-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(76,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Adams-Wilson family','Adams-Wilson family',NULL,NULL,NULL,'1',NULL,'Both','518408640',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Adams-Wilson family',5,NULL,'Dear Adams-Wilson family',2,NULL,'Adams-Wilson family',NULL,NULL,NULL,0,NULL,'Adams-Wilson family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(77,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'edaz@mymail.net','edaz@mymail.net',NULL,NULL,NULL,NULL,NULL,'Both','3624031063',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear edaz@mymail.net',1,NULL,'Dear edaz@mymail.net',1,NULL,'edaz@mymail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(78,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Prentice, Rolando','Dr. Rolando Prentice II',NULL,NULL,NULL,'4',NULL,'Both','1297722771',NULL,'Sample Data','Rolando','T','Prentice',4,3,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Prentice II',NULL,2,'1974-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(79,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman-Blackwell family','Bachman-Blackwell family',NULL,NULL,NULL,NULL,NULL,'Both','1235943467',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman-Blackwell family',5,NULL,'Dear Bachman-Blackwell family',2,NULL,'Bachman-Blackwell family',NULL,NULL,NULL,0,NULL,'Bachman-Blackwell family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(80,'Household',NULL,0,1,0,0,1,0,NULL,NULL,'Robertson family','Robertson family',NULL,NULL,NULL,NULL,NULL,'Both','3444393980',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(81,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Rolando','Rolando Terry Jr.',NULL,NULL,NULL,NULL,NULL,'Both','158688925',NULL,'Sample Data','Rolando','Q','Terry',NULL,1,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Terry Jr.',NULL,2,'1931-07-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(82,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Pine Action Association','Pine Action Association',NULL,NULL,NULL,NULL,NULL,'Both','1678128212',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pine Action Association',NULL,NULL,NULL,0,NULL,NULL,NULL,'Pine Action Association',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(83,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Ivanov-Dimitrov, Juliann','Juliann Ivanov-Dimitrov',NULL,NULL,NULL,'3',NULL,'Both','955994289',NULL,'Sample Data','Juliann','A','Ivanov-Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Ivanov-Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(84,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Sherman','Sherman Cooper',NULL,NULL,NULL,NULL,NULL,'Both','1707375456',NULL,'Sample Data','Sherman','','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Cooper',NULL,2,'2004-08-09',0,NULL,NULL,NULL,'Indiahoma Health Collective',NULL,NULL,65,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(85,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Daren','Dr. Daren Adams II',NULL,NULL,NULL,NULL,NULL,'Both','1164251190',NULL,'Sample Data','Daren','S','Adams',4,3,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Dr. Daren Adams II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(86,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Terrell, Shauna','Ms. Shauna Terrell',NULL,NULL,NULL,NULL,NULL,'Both','3418962952',NULL,'Sample Data','Shauna','','Terrell',2,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Ms. Shauna Terrell',NULL,NULL,'1952-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(87,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts-Deforest, Herminia','Herminia Roberts-Deforest',NULL,NULL,NULL,NULL,NULL,'Both','955797514',NULL,'Sample Data','Herminia','H','Roberts-Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Roberts-Deforest',NULL,1,'1990-03-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(88,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'jameson.q.teddy@notmail.org','jameson.q.teddy@notmail.org',NULL,NULL,NULL,'4',NULL,'Both','465702669',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear jameson.q.teddy@notmail.org',1,NULL,'Dear jameson.q.teddy@notmail.org',1,NULL,'jameson.q.teddy@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(89,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Megan','Megan ÅÄ…chowski',NULL,NULL,NULL,NULL,NULL,'Both','1824434920',NULL,'Sample Data','Megan','','ÅÄ…chowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan ÅÄ…chowski',NULL,1,'1982-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(90,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper family','Cooper family',NULL,NULL,NULL,NULL,NULL,'Both','1133003930',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cooper family',5,NULL,'Dear Cooper family',2,NULL,'Cooper family',NULL,NULL,NULL,0,NULL,'Cooper family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(91,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Claudio','Claudio Patel',NULL,NULL,NULL,'2',NULL,'Both','2717427490',NULL,'Sample Data','Claudio','A','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Patel',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(92,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'roberts.r.nicole50@testing.biz','roberts.r.nicole50@testing.biz',NULL,NULL,NULL,'1',NULL,'Both','3589237036',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear roberts.r.nicole50@testing.biz',1,NULL,'Dear roberts.r.nicole50@testing.biz',1,NULL,'roberts.r.nicole50@testing.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(93,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'McReynolds, Shad','Mr. Shad McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','4249147082',NULL,'Sample Data','Shad','N','McReynolds',3,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Mr. Shad McReynolds',NULL,2,'1944-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(94,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Laree','Ms. Laree DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','970611892',NULL,'Sample Data','Laree','R','DÃaz',2,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Ms. Laree DÃaz',NULL,1,'1985-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(95,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Dauberville Arts Center','Dauberville Arts Center',NULL,NULL,NULL,'5',NULL,'Both','623673734',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dauberville Arts Center',NULL,NULL,NULL,0,NULL,NULL,70,'Dauberville Arts Center',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(96,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Jacob','Jacob DÃaz',NULL,NULL,NULL,'3',NULL,'Both','3488947578',NULL,'Sample Data','Jacob','','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob DÃaz',NULL,2,'1949-11-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(97,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Maxwell','Maxwell Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','269604807',NULL,'Sample Data','Maxwell','','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Jacobs',NULL,2,'2000-04-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(98,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wilson, Alexia','Ms. Alexia Wilson',NULL,NULL,NULL,'2',NULL,'Both','3321653861',NULL,'Sample Data','Alexia','N','Wilson',2,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Ms. Alexia Wilson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(99,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Smith, Esta','Esta Smith',NULL,NULL,NULL,NULL,NULL,'Both','4101330541',NULL,'Sample Data','Esta','O','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Smith',NULL,NULL,'2001-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(100,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Teresa','Teresa Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','2760564229',NULL,'Sample Data','Teresa','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(101,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'San Pablo Action Services','San Pablo Action Services',NULL,NULL,NULL,'1',NULL,'Both','2589964231',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'San Pablo Action Services',NULL,NULL,NULL,0,NULL,NULL,119,'San Pablo Action Services',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(102,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Adams family','Adams family',NULL,NULL,NULL,'4',NULL,'Both','1515323104',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Adams family',5,NULL,'Dear Adams family',2,NULL,'Adams family',NULL,NULL,NULL,0,NULL,'Adams family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(103,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Jacob','Jacob Müller',NULL,NULL,NULL,NULL,NULL,'Both','176489544',NULL,'Sample Data','Jacob','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Müller',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(104,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Roland','Roland Adams',NULL,NULL,NULL,NULL,NULL,'Both','2320657874',NULL,'Sample Data','Roland','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Adams',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(105,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'United Technology Alliance','United Technology Alliance',NULL,NULL,NULL,NULL,NULL,'Both','3413138562',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Technology Alliance',NULL,NULL,NULL,0,NULL,NULL,29,'United Technology Alliance',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(106,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Valene','Mrs. Valene McReynolds',NULL,NULL,NULL,'2',NULL,'Both','2007971144',NULL,'Sample Data','Valene','O','McReynolds',1,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Mrs. Valene McReynolds',NULL,1,NULL,0,NULL,NULL,NULL,'States Music Partnership',NULL,NULL,182,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(107,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wagner, Damaris','Damaris Wagner',NULL,NULL,NULL,'4',NULL,'Both','2489613287',NULL,'Sample Data','Damaris','T','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(108,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cruz, Maria','Maria Cruz',NULL,NULL,NULL,NULL,NULL,'Both','2760046395',NULL,'Sample Data','Maria','W','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Cruz',NULL,2,'1959-10-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(109,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Jensen-Wilson, Ashley','Ms. Ashley Jensen-Wilson',NULL,NULL,NULL,NULL,NULL,'Both','3865771541',NULL,'Sample Data','Ashley','Y','Jensen-Wilson',2,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ms. Ashley Jensen-Wilson',NULL,NULL,'1981-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(110,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Errol','Dr. Errol Jameson II',NULL,NULL,NULL,NULL,NULL,'Both','4067151192',NULL,'Sample Data','Errol','G','Jameson',4,3,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Jameson II',NULL,2,'1966-05-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(111,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Sierra Peace Initiative','Sierra Peace Initiative',NULL,NULL,NULL,NULL,NULL,'Both','1302696609',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Peace Initiative',NULL,NULL,NULL,0,NULL,NULL,154,'Sierra Peace Initiative',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(112,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Laree','Laree Dimitrov',NULL,NULL,NULL,'1',NULL,'Both','2136401508',NULL,'Sample Data','Laree','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(113,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'dimitrov.b.brzczysaw@sample.co.nz','dimitrov.b.brzczysaw@sample.co.nz',NULL,NULL,NULL,'4',NULL,'Both','2839697415',NULL,'Sample Data',NULL,NULL,NULL,4,2,NULL,NULL,1,NULL,'Dear dimitrov.b.brzczysaw@sample.co.nz',1,NULL,'Dear dimitrov.b.brzczysaw@sample.co.nz',1,NULL,'dimitrov.b.brzczysaw@sample.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(114,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'gonzlez.bernadette25@example.net','gonzlez.bernadette25@example.net',NULL,NULL,NULL,'5',NULL,'Both','3441780988',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear gonzlez.bernadette25@example.net',1,NULL,'Dear gonzlez.bernadette25@example.net',1,NULL,'gonzlez.bernadette25@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(115,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'krobertson12@lol.biz','krobertson12@lol.biz',NULL,NULL,NULL,'5',NULL,'Both','2711873603',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear krobertson12@lol.biz',1,NULL,'Dear krobertson12@lol.biz',1,NULL,'krobertson12@lol.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(116,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wagner, Maxwell','Mr. Maxwell Wagner',NULL,NULL,NULL,NULL,NULL,'Both','899179200',NULL,'Sample Data','Maxwell','M','Wagner',3,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Mr. Maxwell Wagner',NULL,NULL,'1946-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(117,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Zope, Bob','Bob Zope II',NULL,NULL,NULL,'1',NULL,'Both','707485722',NULL,'Sample Data','Bob','','Zope',NULL,3,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Zope II',NULL,2,'2002-06-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(118,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terrell, Kandace','Dr. Kandace Terrell',NULL,NULL,NULL,'4',NULL,'Both','3245030049',NULL,'Sample Data','Kandace','','Terrell',4,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Dr. Kandace Terrell',NULL,1,'1947-04-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(119,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Jina','Ms. Jina Grant',NULL,NULL,NULL,'3',NULL,'Both','870157867',NULL,'Sample Data','Jina','J','Grant',2,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Ms. Jina Grant',NULL,1,'1994-03-21',0,NULL,NULL,NULL,'San Pablo Action Services',NULL,NULL,101,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(120,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Lou','Lou Roberts II',NULL,NULL,NULL,NULL,NULL,'Both','3476194906',NULL,'Sample Data','Lou','','Roberts',NULL,3,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Roberts II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(121,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'nlee@testmail.biz','nlee@testmail.biz',NULL,NULL,NULL,NULL,NULL,'Both','230563380',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear nlee@testmail.biz',1,NULL,'Dear nlee@testmail.biz',1,NULL,'nlee@testmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,'Creative Education Academy',NULL,NULL,23,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(122,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov-Dimitrov family','Ivanov-Dimitrov family',NULL,NULL,NULL,NULL,NULL,'Both','2067553646',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov-Dimitrov family',5,NULL,'Dear Ivanov-Dimitrov family',2,NULL,'Ivanov-Dimitrov family',NULL,NULL,NULL,0,NULL,'Ivanov-Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(123,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Martin Luther King Education Center','Martin Luther King Education Center',NULL,NULL,NULL,'1',NULL,'Both','2317988135',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Martin Luther King Education Center',NULL,NULL,NULL,0,NULL,NULL,21,'Martin Luther King Education Center',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(124,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'irisjameson76@lol.co.nz','irisjameson76@lol.co.nz',NULL,NULL,NULL,'2',NULL,'Both','2939542613',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear irisjameson76@lol.co.nz',1,NULL,'Dear irisjameson76@lol.co.nz',1,NULL,'irisjameson76@lol.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(125,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Adams, Rosario','Rosario Adams III',NULL,NULL,NULL,NULL,NULL,'Both','628774619',NULL,'Sample Data','Rosario','','Adams',NULL,4,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Adams III',NULL,2,'1974-01-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(126,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'kandaced42@sample.co.uk','kandaced42@sample.co.uk',NULL,NULL,NULL,'2',NULL,'Both','2678526306',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear kandaced42@sample.co.uk',1,NULL,'Dear kandaced42@sample.co.uk',1,NULL,'kandaced42@sample.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(127,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Martin Luther King Peace Initiative','Martin Luther King Peace Initiative',NULL,NULL,NULL,'1',NULL,'Both','75218906',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Martin Luther King Peace Initiative',NULL,NULL,NULL,0,NULL,NULL,194,'Martin Luther King Peace Initiative',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(128,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Winford','Mr. Winford Grant',NULL,NULL,NULL,NULL,NULL,'Both','431528979',NULL,'Sample Data','Winford','D','Grant',3,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford Grant',NULL,NULL,'1984-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(129,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Betty','Mrs. Betty Olsen',NULL,NULL,NULL,'5',NULL,'Both','3171896776',NULL,'Sample Data','Betty','','Olsen',1,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Mrs. Betty Olsen',NULL,1,'1950-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(130,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Robertson, Carlos','Carlos Robertson Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3416802562',NULL,'Sample Data','Carlos','','Robertson',NULL,1,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Robertson Jr.',NULL,NULL,'1997-11-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(131,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov family','Dimitrov family',NULL,NULL,NULL,NULL,NULL,'Both','3351288571',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(132,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jensen, Allen','Allen Jensen Sr.',NULL,NULL,NULL,NULL,NULL,'Both','478269877',NULL,'Sample Data','Allen','','Jensen',NULL,2,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Jensen Sr.',NULL,2,'1969-07-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(133,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'reynolds.elizabeth50@notmail.org','reynolds.elizabeth50@notmail.org',NULL,NULL,NULL,'1',NULL,'Both','1110955934',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear reynolds.elizabeth50@notmail.org',1,NULL,'Dear reynolds.elizabeth50@notmail.org',1,NULL,'reynolds.elizabeth50@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(134,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Landon','Landon Cruz',NULL,NULL,NULL,NULL,NULL,'Both','2389658974',NULL,'Sample Data','Landon','D','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Cruz',NULL,NULL,'2004-07-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(135,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Austin Health Trust','Austin Health Trust',NULL,NULL,NULL,NULL,NULL,'Both','2565452778',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Austin Health Trust',NULL,NULL,NULL,0,NULL,NULL,NULL,'Austin Health Trust',NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(136,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'robertson.ivey@example.co.in','robertson.ivey@example.co.in',NULL,NULL,NULL,NULL,NULL,'Both','4013252257',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear robertson.ivey@example.co.in',1,NULL,'Dear robertson.ivey@example.co.in',1,NULL,'robertson.ivey@example.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(137,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'cruz.sanford48@mymail.co.pl','cruz.sanford48@mymail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','3397158868',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear cruz.sanford48@mymail.co.pl',1,NULL,'Dear cruz.sanford48@mymail.co.pl',1,NULL,'cruz.sanford48@mymail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(138,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jameson, Heidi','Heidi Jameson',NULL,NULL,NULL,'1',NULL,'Both','1155008282',NULL,'Sample Data','Heidi','','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Jameson',NULL,NULL,'1993-03-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(139,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Scarlet','Scarlet DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','3578692438',NULL,'Sample Data','Scarlet','C','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet DÃaz',NULL,1,'1979-01-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(140,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Ashley','Ashley DÃaz Sr.',NULL,NULL,NULL,'4',NULL,'Both','2703610004',NULL,'Sample Data','Ashley','H','DÃaz',NULL,2,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley DÃaz Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(141,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith-DÃaz, Eleonor','Eleonor Smith-DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','2841567695',NULL,'Sample Data','Eleonor','L','Smith-DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Smith-DÃaz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(142,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Scarlet','Ms. Scarlet Jones',NULL,NULL,NULL,'2',NULL,'Both','4237120359',NULL,'Sample Data','Scarlet','','Jones',2,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Ms. Scarlet Jones',NULL,1,'1984-09-05',0,NULL,NULL,NULL,'Urban Culture Initiative',NULL,NULL,144,0,'2020-06-10 02:45:48','2020-06-10 02:45:50'),(143,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Mei','Mei Adams',NULL,NULL,NULL,'2',NULL,'Both','407770009',NULL,'Sample Data','Mei','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Adams',NULL,1,'1946-07-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:48','2020-06-10 02:45:49'),(144,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Urban Culture Initiative','Urban Culture Initiative',NULL,NULL,NULL,'1',NULL,'Both','1678635405',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Culture Initiative',NULL,NULL,NULL,0,NULL,NULL,142,'Urban Culture Initiative',NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(145,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Jackson','Jackson Müller III',NULL,NULL,NULL,NULL,NULL,'Both','2768075849',NULL,'Sample Data','Jackson','G','Müller',NULL,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Müller III',NULL,2,'1978-10-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(146,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Tanya','Ms. Tanya ÅÄ…chowski',NULL,NULL,NULL,NULL,NULL,'Both','2472113675',NULL,'Sample Data','Tanya','Q','ÅÄ…chowski',2,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Ms. Tanya ÅÄ…chowski',NULL,NULL,'1948-08-27',1,'2020-03-17',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(147,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'samuels.u.erik@airmail.com','samuels.u.erik@airmail.com',NULL,NULL,NULL,NULL,NULL,'Both','438570743',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear samuels.u.erik@airmail.com',1,NULL,'Dear samuels.u.erik@airmail.com',1,NULL,'samuels.u.erik@airmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(148,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Lawerence','Lawerence Dimitrov III',NULL,NULL,NULL,'3',NULL,'Both','2843061688',NULL,'Sample Data','Lawerence','D','Dimitrov',NULL,4,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Dimitrov III',NULL,NULL,'2003-08-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(149,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Roberts, Russell','Russell Roberts III',NULL,NULL,NULL,NULL,NULL,'Both','651288599',NULL,'Sample Data','Russell','H','Roberts',NULL,4,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Roberts III',NULL,2,'1936-01-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(150,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samson, Kathleen','Mrs. Kathleen Samson',NULL,NULL,NULL,NULL,NULL,'Both','2829652278',NULL,'Sample Data','Kathleen','H','Samson',1,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Mrs. Kathleen Samson',NULL,1,'1985-06-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(151,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'adams.e.allan86@notmail.co.uk','adams.e.allan86@notmail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','3110867001',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear adams.e.allan86@notmail.co.uk',1,NULL,'Dear adams.e.allan86@notmail.co.uk',1,NULL,'adams.e.allan86@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(152,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Reynolds, Shad','Dr. Shad Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','3023273825',NULL,'Sample Data','Shad','C','Reynolds',4,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Reynolds',NULL,2,'1968-08-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(153,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Kathlyn','Mrs. Kathlyn ÅÄ…chowski',NULL,NULL,NULL,'1',NULL,'Both','336052777',NULL,'Sample Data','Kathlyn','B','ÅÄ…chowski',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn ÅÄ…chowski',NULL,NULL,'1983-05-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(154,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski-González, Omar','Omar ÅÄ…chowski-González Jr.',NULL,NULL,NULL,'1',NULL,'Both','3354310241',NULL,'Sample Data','Omar','','ÅÄ…chowski-González',NULL,1,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar ÅÄ…chowski-González Jr.',NULL,2,'2014-10-01',0,NULL,NULL,NULL,'Sierra Peace Initiative',NULL,NULL,111,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(155,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Nielsen-DÃaz, Kathleen','Kathleen Nielsen-DÃaz',NULL,NULL,NULL,'2',NULL,'Both','2949897049',NULL,'Sample Data','Kathleen','','Nielsen-DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Nielsen-DÃaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(156,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Bachman-Blackwell, Teddy','Mr. Teddy Bachman-Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','998147436',NULL,'Sample Data','Teddy','S','Bachman-Blackwell',3,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Mr. Teddy Bachman-Blackwell',NULL,2,'1993-05-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:51'),(157,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Zope, Allan','Dr. Allan Zope II',NULL,NULL,NULL,NULL,NULL,'Both','891375066',NULL,'Sample Data','Allan','','Zope',4,3,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Dr. Allan Zope II',NULL,2,'1946-10-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(158,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terry, Arlyne','Mrs. Arlyne Terry',NULL,NULL,NULL,NULL,NULL,'Both','3024103197',NULL,'Sample Data','Arlyne','R','Terry',1,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Mrs. Arlyne Terry',NULL,1,'1951-04-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(159,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Bachman, Erik','Dr. Erik Bachman',NULL,NULL,NULL,'1',NULL,'Both','620728720',NULL,'Sample Data','Erik','K','Bachman',4,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Dr. Erik Bachman',NULL,NULL,'1957-06-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(160,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski-González, Brittney','Brittney ÅÄ…chowski-González',NULL,NULL,NULL,'2',NULL,'Both','1480019209',NULL,'Sample Data','Brittney','S','ÅÄ…chowski-González',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney ÅÄ…chowski-González',NULL,NULL,'2011-03-26',0,NULL,NULL,NULL,'Urban Peace Fund',NULL,NULL,74,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(161,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz family','DÃaz family',NULL,NULL,NULL,NULL,NULL,'Both','2169249835',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(162,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Arlyne','Arlyne Jones',NULL,NULL,NULL,NULL,NULL,'Both','3827704597',NULL,'Sample Data','Arlyne','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Jones',NULL,1,'2005-03-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(163,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov-Dimitrov, Miguel','Miguel Ivanov-Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','3702666988',NULL,'Sample Data','Miguel','D','Ivanov-Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Ivanov-Dimitrov',NULL,2,'2008-06-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(164,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jensen, Scott','Scott Jensen',NULL,NULL,NULL,'5',NULL,'Both','4064239922',NULL,'Sample Data','Scott','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Jensen',NULL,2,'1936-08-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(165,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'tobydaz31@fakemail.net','tobydaz31@fakemail.net',NULL,NULL,NULL,'2',NULL,'Both','658008142',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear tobydaz31@fakemail.net',1,NULL,'Dear tobydaz31@fakemail.net',1,NULL,'tobydaz31@fakemail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(166,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams-Wilson, Miguel','Mr. Miguel Adams-Wilson',NULL,NULL,NULL,'5',NULL,'Both','3988349463',NULL,'Sample Data','Miguel','N','Adams-Wilson',3,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Adams-Wilson',NULL,2,'1987-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(167,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Irvin','Irvin Robertson III',NULL,NULL,NULL,NULL,NULL,'Both','3287904826',NULL,'Sample Data','Irvin','O','Robertson',NULL,4,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Robertson III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(168,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jameson, Brigette','Brigette Jameson',NULL,NULL,NULL,'5',NULL,'Both','839229848',NULL,'Sample Data','Brigette','','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Jameson',NULL,1,'1962-11-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(169,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Reynolds, Craig','Craig Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','3510577139',NULL,'Sample Data','Craig','F','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Reynolds',NULL,2,'1968-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(170,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Shad','Dr. Shad ÅÄ…chowski II',NULL,NULL,NULL,NULL,NULL,'Both','695965162',NULL,'Sample Data','Shad','C','ÅÄ…chowski',4,3,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad ÅÄ…chowski II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(171,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell-Robertson, Rosario','Mr. Rosario Terrell-Robertson',NULL,NULL,NULL,NULL,NULL,'Both','2367208597',NULL,'Sample Data','Rosario','','Terrell-Robertson',3,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Mr. Rosario Terrell-Robertson',NULL,NULL,'1989-12-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(172,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Blackwell, Merrie','Merrie Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','2696737168',NULL,'Sample Data','Merrie','X','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,'Burlingame Software Solutions',NULL,NULL,192,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(173,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Lou','Lou Wagner',NULL,NULL,NULL,'4',NULL,'Both','2041146413',NULL,'Sample Data','Lou','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Wagner',NULL,2,'1989-09-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(174,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Winford','Winford Samson',NULL,NULL,NULL,'3',NULL,'Both','935630203',NULL,'Sample Data','Winford','','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Samson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(175,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'felishar2@infomail.co.nz','felishar2@infomail.co.nz',NULL,NULL,NULL,'1',NULL,'Both','3903995902',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear felishar2@infomail.co.nz',1,NULL,'Dear felishar2@infomail.co.nz',1,NULL,'felishar2@infomail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(176,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'DÃaz, Kathlyn','Dr. Kathlyn DÃaz',NULL,NULL,NULL,'2',NULL,'Both','1074199514',NULL,'Sample Data','Kathlyn','O','DÃaz',4,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Dr. Kathlyn DÃaz',NULL,1,'1970-11-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(177,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terrell, Kiara','Kiara Terrell',NULL,NULL,NULL,NULL,NULL,'Both','2419573895',NULL,'Sample Data','Kiara','','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Terrell',NULL,1,'2001-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(178,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Wisconsin Wellness Alliance','Wisconsin Wellness Alliance',NULL,NULL,NULL,NULL,NULL,'Both','822473134',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Wisconsin Wellness Alliance',NULL,NULL,NULL,0,NULL,NULL,18,'Wisconsin Wellness Alliance',NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(179,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'scarletdimitrov53@sample.co.pl','scarletdimitrov53@sample.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','935628927',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear scarletdimitrov53@sample.co.pl',1,NULL,'Dear scarletdimitrov53@sample.co.pl',1,NULL,'scarletdimitrov53@sample.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(180,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'daza@lol.biz','daza@lol.biz',NULL,NULL,NULL,'4',NULL,'Both','2752648294',NULL,'Sample Data',NULL,NULL,NULL,4,1,NULL,NULL,1,NULL,'Dear daza@lol.biz',1,NULL,'Dear daza@lol.biz',1,NULL,'daza@lol.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(181,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner-Jacobs family','Wagner-Jacobs family',NULL,NULL,NULL,'5',NULL,'Both','1922403537',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner-Jacobs family',5,NULL,'Dear Wagner-Jacobs family',2,NULL,'Wagner-Jacobs family',NULL,NULL,NULL,0,NULL,'Wagner-Jacobs family',NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(182,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'States Music Partnership','States Music Partnership',NULL,NULL,NULL,'5',NULL,'Both','1452485960',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'States Music Partnership',NULL,NULL,NULL,0,NULL,NULL,106,'States Music Partnership',NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(183,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'DÃaz, Arlyne','Arlyne DÃaz',NULL,NULL,NULL,'2',NULL,'Both','4265577068',NULL,'Sample Data','Arlyne','F','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne DÃaz',NULL,1,'1972-07-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(184,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Lawerence','Lawerence Robertson',NULL,NULL,NULL,'3',NULL,'Both','3742055546',NULL,'Sample Data','Lawerence','D','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Robertson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(185,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'daz.sonny@lol.net','daz.sonny@lol.net',NULL,NULL,NULL,NULL,NULL,'Both','2019483543',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear daz.sonny@lol.net',1,NULL,'Dear daz.sonny@lol.net',1,NULL,'daz.sonny@lol.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(186,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Tanya','Mrs. Tanya Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','3920520265',NULL,'Sample Data','Tanya','','Reynolds',1,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Mrs. Tanya Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(187,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds family','Reynolds family',NULL,NULL,NULL,NULL,NULL,'Both','4119726021',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(188,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Teddy','Dr. Teddy Adams Sr.',NULL,NULL,NULL,'2',NULL,'Both','679771047',NULL,'Sample Data','Teddy','B','Adams',4,2,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Adams Sr.',NULL,NULL,'1977-10-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(189,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Adams, Troy','Dr. Troy Adams III',NULL,NULL,NULL,'1',NULL,'Both','271731072',NULL,'Sample Data','Troy','X','Adams',4,4,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Dr. Troy Adams III',NULL,NULL,'1977-09-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(190,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Josefa','Josefa Adams',NULL,NULL,NULL,'4',NULL,'Both','3524754614',NULL,'Sample Data','Josefa','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Adams',NULL,1,'2010-03-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(191,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Billy','Billy ÅÄ…chowski',NULL,NULL,NULL,'5',NULL,'Both','2651887338',NULL,'Sample Data','Billy','','ÅÄ…chowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy ÅÄ…chowski',NULL,2,'2018-08-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(192,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Burlingame Software Solutions','Burlingame Software Solutions',NULL,NULL,NULL,NULL,NULL,'Both','429440746',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Burlingame Software Solutions',NULL,NULL,NULL,0,NULL,NULL,172,'Burlingame Software Solutions',NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(193,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Carlos','Carlos Samson II',NULL,NULL,NULL,NULL,NULL,'Both','3685526914',NULL,'Sample Data','Carlos','O','Samson',NULL,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Samson II',NULL,NULL,'1989-04-15',0,NULL,NULL,NULL,'New York Health Systems',NULL,NULL,63,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(194,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Kandace','Kandace Roberts',NULL,NULL,NULL,'5',NULL,'Both','3760408869',NULL,'Sample Data','Kandace','Y','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Roberts',NULL,NULL,NULL,0,NULL,NULL,NULL,'Martin Luther King Peace Initiative',NULL,NULL,127,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(195,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Bachman-Blackwell, Landon','Dr. Landon Bachman-Blackwell',NULL,NULL,NULL,'5',NULL,'Both','1427604385',NULL,'Sample Data','Landon','G','Bachman-Blackwell',4,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon Bachman-Blackwell',NULL,2,'1984-05-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(196,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'dimitrove7@testmail.co.pl','dimitrove7@testmail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','3139713335',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear dimitrove7@testmail.co.pl',1,NULL,'Dear dimitrove7@testmail.co.pl',1,NULL,'dimitrove7@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(197,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Russell','Dr. Russell Robertson',NULL,NULL,NULL,'5',NULL,'Both','3573168465',NULL,'Sample Data','Russell','L','Robertson',4,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Dr. Russell Robertson',NULL,2,'1961-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(198,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Errol','Mr. Errol Smith',NULL,NULL,NULL,NULL,NULL,'Both','2269355028',NULL,'Sample Data','Errol','','Smith',3,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Mr. Errol Smith',NULL,2,'1938-02-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(199,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Winford','Winford Cooper Sr.',NULL,NULL,NULL,'1',NULL,'Both','1891762669',NULL,'Sample Data','Winford','','Cooper',NULL,2,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Cooper Sr.',NULL,2,'2010-03-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:49'),(200,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Jameson, Brent','Brent Jameson',NULL,NULL,NULL,'1',NULL,'Both','1398082986',NULL,'Sample Data','Brent','B','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Jameson',NULL,NULL,'1992-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'),(201,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Kathlyn','Kathlyn Deforest',NULL,NULL,NULL,'1',NULL,'Both','333595076',NULL,'Sample Data','Kathlyn','I','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Deforest',NULL,1,'1974-01-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-06-10 02:45:49','2020-06-10 02:45:50'); +INSERT INTO `civicrm_contact` (`id`, `contact_type`, `contact_sub_type`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `external_identifier`, `sort_name`, `display_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `preferred_mail_format`, `hash`, `api_key`, `source`, `first_name`, `middle_name`, `last_name`, `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`, `organization_name`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`) VALUES (1,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Default Organization','Default Organization',NULL,'Default Organization',NULL,NULL,NULL,'Both',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,'Default Organization',NULL,NULL,NULL,0,NULL,'2020-07-24 05:33:57'),(2,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Olsen, Iris','Iris Olsen',NULL,NULL,NULL,'5',NULL,'Both','313880548',NULL,'Sample Data','Iris','L','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Olsen',NULL,1,'1959-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(3,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Roland','Dr. Roland Terrell Jr.',NULL,NULL,NULL,NULL,NULL,'Both','731518019',NULL,'Sample Data','Roland','I','Terrell',4,1,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Dr. Roland Terrell Jr.',NULL,2,'1936-05-11',1,'2019-07-28',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(4,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Deforest-Cooper, Teddy','Teddy Deforest-Cooper',NULL,NULL,NULL,'4',NULL,'Both','641137824',NULL,'Sample Data','Teddy','','Deforest-Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Deforest-Cooper',NULL,NULL,'1984-01-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(5,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'wilson.troy87@example.net','wilson.troy87@example.net',NULL,NULL,NULL,'2',NULL,'Both','2903429136',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear wilson.troy87@example.net',1,NULL,'Dear wilson.troy87@example.net',1,NULL,'wilson.troy87@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(6,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Beula','Mrs. Beula Bachman',NULL,NULL,NULL,NULL,NULL,'Both','1024437619',NULL,'Sample Data','Beula','P','Bachman',1,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Mrs. Beula Bachman',NULL,1,'1996-10-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(7,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Erik','Erik Patel Jr.',NULL,NULL,NULL,'1',NULL,'Both','1879150423',NULL,'Sample Data','Erik','','Patel',NULL,1,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Patel Jr.',NULL,2,'1972-03-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(8,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Ashley','Ashley Reynolds II',NULL,NULL,NULL,'3',NULL,'Both','3873693132',NULL,'Sample Data','Ashley','','Reynolds',NULL,3,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Reynolds II',NULL,2,'1962-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(9,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Tanya','Tanya Müller',NULL,NULL,NULL,'2',NULL,'Both','1478253205',NULL,'Sample Data','Tanya','C','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(10,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Müller, Rolando','Rolando Müller II',NULL,NULL,NULL,NULL,NULL,'Both','2804310363',NULL,'Sample Data','Rolando','B','Müller',NULL,3,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Müller II',NULL,NULL,'1959-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(11,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Nielsen family','Nielsen family',NULL,NULL,NULL,NULL,NULL,'Both','766698874',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(12,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'McReynolds, Damaris','Damaris McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','2561970052',NULL,'Sample Data','Damaris','G','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris McReynolds',NULL,1,'1949-09-14',1,'2020-05-20',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(13,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'russellr2@airmail.co.nz','russellr2@airmail.co.nz',NULL,NULL,NULL,'1',NULL,'Both','3934547049',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear russellr2@airmail.co.nz',1,NULL,'Dear russellr2@airmail.co.nz',1,NULL,'russellr2@airmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(14,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Ballston Lake Technology Fund','Ballston Lake Technology Fund',NULL,NULL,NULL,'5',NULL,'Both','2168563222',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ballston Lake Technology Fund',NULL,NULL,NULL,0,NULL,NULL,26,'Ballston Lake Technology Fund',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(15,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Adams, Merrie','Mrs. Merrie Adams',NULL,NULL,NULL,'5',NULL,'Both','2760007401',NULL,'Sample Data','Merrie','','Adams',1,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Mrs. Merrie Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(16,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Elbert','Elbert Yadav',NULL,NULL,NULL,'1',NULL,'Both','2557263059',NULL,'Sample Data','Elbert','S','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Yadav',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(17,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samson, Bernadette','Bernadette Samson',NULL,NULL,NULL,'1',NULL,'Both','1089960007',NULL,'Sample Data','Bernadette','B','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Samson',NULL,1,'1978-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(18,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Cruz, Russell','Russell Cruz Sr.',NULL,NULL,NULL,'3',NULL,'Both','3756174623',NULL,'Sample Data','Russell','','Cruz',NULL,2,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Cruz Sr.',NULL,NULL,'1989-05-15',0,NULL,NULL,NULL,'Global Empowerment Alliance',NULL,NULL,144,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(19,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Terrell-Dimitrov family','Terrell-Dimitrov family',NULL,NULL,NULL,'2',NULL,'Both','4038472664',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell-Dimitrov family',5,NULL,'Dear Terrell-Dimitrov family',2,NULL,'Terrell-Dimitrov family',NULL,NULL,NULL,0,NULL,'Terrell-Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(20,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'iveyr@infomail.co.uk','iveyr@infomail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','2912254191',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear iveyr@infomail.co.uk',1,NULL,'Dear iveyr@infomail.co.uk',1,NULL,'iveyr@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,'Green Peace Initiative',NULL,NULL,46,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(21,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds family','Reynolds family',NULL,NULL,NULL,'4',NULL,'Both','4119726021',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(22,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Samuels family','Samuels family',NULL,NULL,NULL,NULL,NULL,'Both','350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(23,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wattson, Rosario','Dr. Rosario Wattson',NULL,NULL,NULL,NULL,NULL,'Both','661817002',NULL,'Sample Data','Rosario','P','Wattson',4,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Dr. Rosario Wattson',NULL,2,'1943-12-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(24,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terry, Jacob','Jacob Terry Jr.',NULL,NULL,NULL,'2',NULL,'Both','1878863134',NULL,'Sample Data','Jacob','I','Terry',NULL,1,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Terry Jr.',NULL,2,'1939-02-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(25,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Irvin','Irvin Cooper',NULL,NULL,NULL,NULL,NULL,'Both','1295806812',NULL,'Sample Data','Irvin','J','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Cooper',NULL,2,'1989-11-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(26,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'et.jameson52@sample.co.in','et.jameson52@sample.co.in',NULL,NULL,NULL,NULL,NULL,'Both','459222156',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear et.jameson52@sample.co.in',1,NULL,'Dear et.jameson52@sample.co.in',1,NULL,'et.jameson52@sample.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,'Ballston Lake Technology Fund',NULL,NULL,14,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(27,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice family','Prentice family',NULL,NULL,NULL,'1',NULL,'Both','3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(28,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Angelika','Angelika Jameson',NULL,NULL,NULL,NULL,NULL,'Both','4294957055',NULL,'Sample Data','Angelika','','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Jameson',NULL,1,'2002-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(29,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Miguel','Dr. Miguel Dimitrov',NULL,NULL,NULL,'4',NULL,'Both','1550560736',NULL,'Sample Data','Miguel','O','Dimitrov',4,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel Dimitrov',NULL,2,NULL,0,NULL,NULL,NULL,'Collins Peace Fund',NULL,NULL,62,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(30,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'McReynolds, Claudio','Claudio McReynolds II',NULL,NULL,NULL,NULL,NULL,'Both','4155247760',NULL,'Sample Data','Claudio','','McReynolds',NULL,3,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio McReynolds II',NULL,2,'1983-02-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(31,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Smith, Andrew','Dr. Andrew Smith Sr.',NULL,NULL,NULL,'1',NULL,'Both','2297505615',NULL,'Sample Data','Andrew','Q','Smith',4,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Dr. Andrew Smith Sr.',NULL,2,'1961-01-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(32,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds-Parker family','McReynolds-Parker family',NULL,NULL,NULL,'2',NULL,'Both','3292490842',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds-Parker family',5,NULL,'Dear McReynolds-Parker family',2,NULL,'McReynolds-Parker family',NULL,NULL,NULL,0,NULL,'McReynolds-Parker family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(33,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Jina','Mrs. Jina Adams',NULL,NULL,NULL,NULL,NULL,'Both','3136326826',NULL,'Sample Data','Jina','','Adams',1,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Mrs. Jina Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(34,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'McReynolds, Carlos','Mr. Carlos McReynolds III',NULL,NULL,NULL,'1',NULL,'Both','1986804051',NULL,'Sample Data','Carlos','N','McReynolds',3,4,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Mr. Carlos McReynolds III',NULL,NULL,'1956-07-21',0,NULL,NULL,NULL,'Aptos Sustainability Center',NULL,NULL,137,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(35,'Household',NULL,1,0,0,0,1,0,NULL,NULL,'Jones family','Jones family',NULL,NULL,NULL,NULL,NULL,'Both','1110516799',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(36,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'meijameson@infomail.org','meijameson@infomail.org',NULL,NULL,NULL,NULL,NULL,'Both','1125318142',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear meijameson@infomail.org',1,NULL,'Dear meijameson@infomail.org',1,NULL,'meijameson@infomail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,'Urban Action School',NULL,NULL,37,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(37,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Urban Action School','Urban Action School',NULL,NULL,NULL,'5',NULL,'Both','3196441086',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Action School',NULL,NULL,NULL,0,NULL,NULL,36,'Urban Action School',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(38,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Parker-Grant family','Parker-Grant family',NULL,NULL,NULL,NULL,NULL,'Both','1787926850',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Parker-Grant family',5,NULL,'Dear Parker-Grant family',2,NULL,'Parker-Grant family',NULL,NULL,NULL,0,NULL,'Parker-Grant family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(39,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Merrie','Mrs. Merrie Blackwell',NULL,NULL,NULL,'1',NULL,'Both','2696737168',NULL,'Sample Data','Merrie','','Blackwell',1,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Mrs. Merrie Blackwell',NULL,1,'1993-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(40,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'parker-grant.barry@spamalot.biz','parker-grant.barry@spamalot.biz',NULL,NULL,NULL,NULL,NULL,'Both','2161362069',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear parker-grant.barry@spamalot.biz',1,NULL,'Dear parker-grant.barry@spamalot.biz',1,NULL,'parker-grant.barry@spamalot.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(41,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'barkley.brittney@testmail.info','barkley.brittney@testmail.info',NULL,NULL,NULL,NULL,NULL,'Both','1727360930',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear barkley.brittney@testmail.info',1,NULL,'Dear barkley.brittney@testmail.info',1,NULL,'barkley.brittney@testmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(42,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Clint','Dr. Clint Jameson',NULL,NULL,NULL,NULL,NULL,'Both','3622436306',NULL,'Sample Data','Clint','F','Jameson',4,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Dr. Clint Jameson',NULL,2,'1964-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(43,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Beula','Mrs. Beula Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','2930391993',NULL,'Sample Data','Beula','','Reynolds',1,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Mrs. Beula Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(44,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Errol','Dr. Errol Cooper',NULL,NULL,NULL,'1',NULL,'Both','932311595',NULL,'Sample Data','Errol','F','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Cooper',NULL,NULL,'1976-11-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(45,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Teresa','Teresa Wilson',NULL,NULL,NULL,'5',NULL,'Both','4075437794',NULL,'Sample Data','Teresa','B','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Wilson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(46,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Green Peace Initiative','Green Peace Initiative',NULL,NULL,NULL,'2',NULL,'Both','719241772',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Green Peace Initiative',NULL,NULL,NULL,0,NULL,NULL,20,'Green Peace Initiative',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(47,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Irvin','Irvin Nielsen II',NULL,NULL,NULL,'4',NULL,'Both','587649212',NULL,'Sample Data','Irvin','','Nielsen',NULL,3,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Nielsen II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(48,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Parker, Betty','Ms. Betty Parker',NULL,NULL,NULL,NULL,NULL,'Both','3536451591',NULL,'Sample Data','Betty','','Parker',2,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Ms. Betty Parker',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(49,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Felisha','Mrs. Felisha Jones',NULL,NULL,NULL,NULL,NULL,'Both','2947770839',NULL,'Sample Data','Felisha','','Jones',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Jones',NULL,NULL,'1996-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(50,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'College Health Association','College Health Association',NULL,NULL,NULL,'2',NULL,'Both','545736158',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'College Health Association',NULL,NULL,NULL,0,NULL,NULL,89,'College Health Association',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(51,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Patel, Scarlet','Dr. Scarlet Patel',NULL,NULL,NULL,'3',NULL,'Both','2187618008',NULL,'Sample Data','Scarlet','','Patel',4,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Dr. Scarlet Patel',NULL,NULL,'1994-12-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(52,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Brigette','Ms. Brigette Smith',NULL,NULL,NULL,NULL,NULL,'Both','3717206438',NULL,'Sample Data','Brigette','N','Smith',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Smith',NULL,1,'1971-01-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(53,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Tanya','Dr. Tanya Wattson',NULL,NULL,NULL,'1',NULL,'Both','3050543156',NULL,'Sample Data','Tanya','','Wattson',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Wattson',NULL,NULL,'1998-02-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(54,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Blackwell-Dimitrov, Carylon','Dr. Carylon Blackwell-Dimitrov',NULL,NULL,NULL,'1',NULL,'Both','3691303768',NULL,'Sample Data','Carylon','O','Blackwell-Dimitrov',4,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Dr. Carylon Blackwell-Dimitrov',NULL,1,'1981-08-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(55,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Lee, Clint','Clint Lee III',NULL,NULL,NULL,NULL,NULL,'Both','1676794419',NULL,'Sample Data','Clint','','Lee',NULL,4,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Lee III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(56,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Kentucky Software Initiative','Kentucky Software Initiative',NULL,NULL,NULL,'3',NULL,'Both','276138517',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Kentucky Software Initiative',NULL,NULL,NULL,0,NULL,NULL,189,'Kentucky Software Initiative',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(57,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Rolando','Rolando Nielsen II',NULL,NULL,NULL,'2',NULL,'Both','1720954446',NULL,'Sample Data','Rolando','O','Nielsen',NULL,3,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Nielsen II',NULL,NULL,'1954-02-20',0,NULL,NULL,NULL,'Moxahala Development Alliance',NULL,NULL,157,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(58,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Müller, Rebekah','Ms. Rebekah Müller',NULL,NULL,NULL,'2',NULL,'Both','3543648262',NULL,'Sample Data','Rebekah','L','Müller',2,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Ms. Rebekah Müller',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(59,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'McReynolds-Parker, Winford','Mr. Winford McReynolds-Parker Jr.',NULL,NULL,NULL,NULL,NULL,'Both','2391669230',NULL,'Sample Data','Winford','','McReynolds-Parker',3,1,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford McReynolds-Parker Jr.',NULL,2,'1985-01-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(60,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Maxwell','Maxwell Wilson III',NULL,NULL,NULL,'3',NULL,'Both','2894206629',NULL,'Sample Data','Maxwell','','Wilson',NULL,4,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Wilson III',NULL,2,'1997-10-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(61,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samuels, Mei','Mei Samuels',NULL,NULL,NULL,'5',NULL,'Both','2521418918',NULL,'Sample Data','Mei','X','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Samuels',NULL,NULL,'2010-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(62,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Collins Peace Fund','Collins Peace Fund',NULL,NULL,NULL,NULL,NULL,'Both','3588916649',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Collins Peace Fund',NULL,NULL,NULL,0,NULL,NULL,29,'Collins Peace Fund',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(63,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'estajones@spamalot.co.uk','estajones@spamalot.co.uk',NULL,NULL,NULL,'4',NULL,'Both','377997108',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear estajones@spamalot.co.uk',1,NULL,'Dear estajones@spamalot.co.uk',1,NULL,'estajones@spamalot.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(64,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Patel, Kathleen','Kathleen Patel',NULL,NULL,NULL,NULL,NULL,'Both','3805387262',NULL,'Sample Data','Kathleen','Q','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Patel',NULL,NULL,'1990-09-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(65,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Parker, Jed','Jed Parker',NULL,NULL,NULL,'4',NULL,'Both','1794622526',NULL,'Sample Data','Jed','','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Parker',NULL,2,'1964-08-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(66,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cooper, Magan','Dr. Magan Cooper',NULL,NULL,NULL,NULL,NULL,'Both','791506082',NULL,'Sample Data','Magan','','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Cooper',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(67,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'ÅÄ…chowski, Juliann','Dr. Juliann ÅÄ…chowski',NULL,NULL,NULL,'1',NULL,'Both','3477087731',NULL,'Sample Data','Juliann','','ÅÄ…chowski',4,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Dr. Juliann ÅÄ…chowski',NULL,1,'1979-01-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(68,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Delana','Delana Samson',NULL,NULL,NULL,'3',NULL,'Both','1637206028',NULL,'Sample Data','Delana','','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Samson',NULL,NULL,'1971-11-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(69,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'González, Allen','Allen González',NULL,NULL,NULL,'4',NULL,'Both','4052635631',NULL,'Sample Data','Allen','R','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen González',NULL,NULL,'2002-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(70,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'lsamson18@airmail.org','lsamson18@airmail.org',NULL,NULL,NULL,'2',NULL,'Both','320447877',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear lsamson18@airmail.org',1,NULL,'Dear lsamson18@airmail.org',1,NULL,'lsamson18@airmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(71,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Megan','Mrs. Megan Dimitrov',NULL,NULL,NULL,'3',NULL,'Both','604448148',NULL,'Sample Data','Megan','B','Dimitrov',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Dimitrov',NULL,NULL,'1985-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(72,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice-Parker family','Prentice-Parker family',NULL,NULL,NULL,'2',NULL,'Both','569884084',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice-Parker family',5,NULL,'Dear Prentice-Parker family',2,NULL,'Prentice-Parker family',NULL,NULL,NULL,0,NULL,'Prentice-Parker family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(73,'Organization',NULL,0,1,0,0,1,0,NULL,NULL,'Van Ness Technology Services','Van Ness Technology Services',NULL,NULL,NULL,NULL,NULL,'Both','720387242',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Van Ness Technology Services',NULL,NULL,NULL,0,NULL,NULL,75,'Van Ness Technology Services',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(74,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Nielsen, Heidi','Heidi Nielsen',NULL,NULL,NULL,'1',NULL,'Both','4011366793',NULL,'Sample Data','Heidi','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Nielsen',NULL,NULL,'1997-11-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(75,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Terrell-Dimitrov, Lashawnda','Lashawnda Terrell-Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','3509495725',NULL,'Sample Data','Lashawnda','E','Terrell-Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Terrell-Dimitrov',NULL,1,'1988-05-30',0,NULL,NULL,NULL,'Van Ness Technology Services',NULL,NULL,73,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(76,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen, Shad','Shad Olsen',NULL,NULL,NULL,'1',NULL,'Both','2007691638',NULL,'Sample Data','Shad','H','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(77,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jameson, Elbert','Elbert Jameson III',NULL,NULL,NULL,NULL,NULL,'Both','3057069270',NULL,'Sample Data','Elbert','','Jameson',NULL,4,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Jameson III',NULL,2,'1976-09-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(78,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'prentice-parker.j.ashley@mymail.co.in','prentice-parker.j.ashley@mymail.co.in',NULL,NULL,NULL,'4',NULL,'Both','730991373',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear prentice-parker.j.ashley@mymail.co.in',1,NULL,'Dear prentice-parker.j.ashley@mymail.co.in',1,NULL,'prentice-parker.j.ashley@mymail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(79,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Ogdensburg Poetry Partners','Ogdensburg Poetry Partners',NULL,NULL,NULL,'4',NULL,'Both','3260380550',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ogdensburg Poetry Partners',NULL,NULL,NULL,0,NULL,NULL,NULL,'Ogdensburg Poetry Partners',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(80,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Reynolds, Betty','Mrs. Betty Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','1042239873',NULL,'Sample Data','Betty','Z','Reynolds',1,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Mrs. Betty Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(81,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Maria','Maria Ivanov',NULL,NULL,NULL,'4',NULL,'Both','3158128082',NULL,'Sample Data','Maria','L','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Ivanov',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(82,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Wagner, Truman','Truman Wagner',NULL,NULL,NULL,NULL,NULL,'Both','1216392752',NULL,'Sample Data','Truman','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Wagner',NULL,2,'1989-08-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(83,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cooper, Norris','Norris Cooper Jr.',NULL,NULL,NULL,'2',NULL,'Both','750501935',NULL,'Sample Data','Norris','U','Cooper',NULL,1,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Cooper Jr.',NULL,2,'2005-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(84,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bachmanl95@mymail.net','bachmanl95@mymail.net',NULL,NULL,NULL,NULL,NULL,'Both','2981810594',NULL,'Sample Data',NULL,NULL,NULL,3,1,NULL,NULL,1,NULL,'Dear bachmanl95@mymail.net',1,NULL,'Dear bachmanl95@mymail.net',1,NULL,'bachmanl95@mymail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(85,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker-Grant, Felisha','Felisha Parker-Grant',NULL,NULL,NULL,NULL,NULL,'Both','2163378685',NULL,'Sample Data','Felisha','U','Parker-Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Parker-Grant',NULL,1,'2007-01-09',0,NULL,NULL,NULL,'Main Health Collective',NULL,NULL,117,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(86,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Beech Development Trust','Beech Development Trust',NULL,NULL,NULL,'3',NULL,'Both','1453966991',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Beech Development Trust',NULL,NULL,NULL,0,NULL,NULL,197,'Beech Development Trust',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(87,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wattson, Elina','Dr. Elina Wattson',NULL,NULL,NULL,NULL,NULL,'Both','452291784',NULL,'Sample Data','Elina','','Wattson',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Wattson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(88,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Elizabeth','Elizabeth Samson',NULL,NULL,NULL,'5',NULL,'Both','2428742753',NULL,'Sample Data','Elizabeth','K','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Samson',NULL,NULL,'1981-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(89,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell-Dimitrov, Miguel','Miguel Terrell-Dimitrov II',NULL,NULL,NULL,'1',NULL,'Both','4265323067',NULL,'Sample Data','Miguel','','Terrell-Dimitrov',NULL,3,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Terrell-Dimitrov II',NULL,2,'2011-03-11',0,NULL,NULL,NULL,'College Health Association',NULL,NULL,50,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(90,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Rebecca Culture Fellowship','Rebecca Culture Fellowship',NULL,NULL,NULL,'5',NULL,'Both','1680760940',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rebecca Culture Fellowship',NULL,NULL,NULL,0,NULL,NULL,NULL,'Rebecca Culture Fellowship',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(91,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Green Poetry Partnership','Green Poetry Partnership',NULL,NULL,NULL,NULL,NULL,'Both','63354461',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Green Poetry Partnership',NULL,NULL,NULL,0,NULL,NULL,120,'Green Poetry Partnership',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(92,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Allen','Dr. Allen Müller',NULL,NULL,NULL,NULL,NULL,'Both','2000293400',NULL,'Sample Data','Allen','T','Müller',4,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Müller',NULL,2,'1958-06-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(93,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Daren','Daren Cruz III',NULL,NULL,NULL,NULL,NULL,'Both','2509817815',NULL,'Sample Data','Daren','I','Cruz',NULL,4,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Cruz III',NULL,2,'2003-04-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(94,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'angelikaw@testmail.co.uk','angelikaw@testmail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','3179233862',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear angelikaw@testmail.co.uk',1,NULL,'Dear angelikaw@testmail.co.uk',1,NULL,'angelikaw@testmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(95,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'jones.kathlyn3@mymail.co.uk','jones.kathlyn3@mymail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','1082573825',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear jones.kathlyn3@mymail.co.uk',1,NULL,'Dear jones.kathlyn3@mymail.co.uk',1,NULL,'jones.kathlyn3@mymail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(96,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terry, Elbert','Elbert Terry',NULL,NULL,NULL,NULL,NULL,'Both','2300910688',NULL,'Sample Data','Elbert','','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Terry',NULL,2,'2007-11-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(97,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Patel, Allen','Allen Patel Sr.',NULL,NULL,NULL,'1',NULL,'Both','1350110979',NULL,'Sample Data','Allen','W','Patel',NULL,2,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Patel Sr.',NULL,NULL,'1988-01-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(98,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'González family','González family',NULL,NULL,NULL,'2',NULL,'Both','3263723758',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(99,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Terry, Esta','Esta Terry',NULL,NULL,NULL,'4',NULL,'Both','3888791883',NULL,'Sample Data','Esta','I','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Terry',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(100,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Lawerence','Lawerence Barkley III',NULL,NULL,NULL,'2',NULL,'Both','3430625301',NULL,'Sample Data','Lawerence','','Barkley',NULL,4,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Barkley III',NULL,2,'2009-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(101,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson family','Jameson family',NULL,NULL,NULL,'1',NULL,'Both','2255649769',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson family',5,NULL,'Dear Jameson family',2,NULL,'Jameson family',NULL,NULL,NULL,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(102,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'rbachman-mller15@airmail.co.in','rbachman-mller15@airmail.co.in',NULL,NULL,NULL,'2',NULL,'Both','2698008935',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear rbachman-mller15@airmail.co.in',1,NULL,'Dear rbachman-mller15@airmail.co.in',1,NULL,'rbachman-mller15@airmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(103,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Winford','Mr. Winford Jones',NULL,NULL,NULL,NULL,NULL,'Both','3992988064',NULL,'Sample Data','Winford','Y','Jones',3,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford Jones',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(104,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Blackwell, Scott','Dr. Scott Blackwell III',NULL,NULL,NULL,NULL,NULL,'Both','1650464224',NULL,'Sample Data','Scott','','Blackwell',4,4,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Blackwell III',NULL,NULL,'1973-04-27',0,NULL,NULL,NULL,'Dallas Peace Partnership',NULL,NULL,148,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(105,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Urban Culture Services','Urban Culture Services',NULL,NULL,NULL,NULL,NULL,'Both','1795621606',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Culture Services',NULL,NULL,NULL,0,NULL,NULL,151,'Urban Culture Services',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(106,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Jameson family','Jameson family',NULL,NULL,NULL,NULL,NULL,'Both','2255649769',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson family',5,NULL,'Dear Jameson family',2,NULL,'Jameson family',NULL,NULL,NULL,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(107,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Truman','Truman Samson II',NULL,NULL,NULL,'3',NULL,'Both','2209308970',NULL,'Sample Data','Truman','','Samson',NULL,3,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Samson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(108,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Dimitrov, Clint','Mr. Clint Dimitrov III',NULL,NULL,NULL,NULL,NULL,'Both','2522553536',NULL,'Sample Data','Clint','','Dimitrov',3,4,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Dimitrov III',NULL,NULL,'1965-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(109,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'González, Carylon','Ms. Carylon González',NULL,NULL,NULL,'2',NULL,'Both','3685317689',NULL,'Sample Data','Carylon','Q','González',2,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Ms. Carylon González',NULL,1,'1988-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(110,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds-Parker, Norris','Norris McReynolds-Parker',NULL,NULL,NULL,'2',NULL,'Both','3076044215',NULL,'Sample Data','Norris','','McReynolds-Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris McReynolds-Parker',NULL,2,'2006-09-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(111,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Elizabeth','Elizabeth Robertson',NULL,NULL,NULL,NULL,NULL,'Both','3762031116',NULL,'Sample Data','Elizabeth','','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Robertson',NULL,NULL,'1988-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(112,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'samuels.i.nicole4@airmail.info','samuels.i.nicole4@airmail.info',NULL,NULL,NULL,'5',NULL,'Both','120602388',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear samuels.i.nicole4@airmail.info',1,NULL,'Dear samuels.i.nicole4@airmail.info',1,NULL,'samuels.i.nicole4@airmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(113,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Parker, Teresa','Teresa Parker',NULL,NULL,NULL,'4',NULL,'Both','1643019663',NULL,'Sample Data','Teresa','W','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Parker',NULL,1,'1957-07-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(114,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samson, Lincoln','Lincoln Samson',NULL,NULL,NULL,NULL,NULL,'Both','1364687804',NULL,'Sample Data','Lincoln','G','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Samson',NULL,2,'1985-04-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(115,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov family','Dimitrov family',NULL,NULL,NULL,'4',NULL,'Both','3351288571',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(116,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner family','Wagner family',NULL,NULL,NULL,NULL,NULL,'Both','1570966486',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner family',5,NULL,'Dear Wagner family',2,NULL,'Wagner family',NULL,NULL,NULL,0,NULL,'Wagner family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(117,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Main Health Collective','Main Health Collective',NULL,NULL,NULL,'1',NULL,'Both','842368736',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Main Health Collective',NULL,NULL,NULL,0,NULL,NULL,85,'Main Health Collective',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(118,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Maria','Mr. Maria Prentice Sr.',NULL,NULL,NULL,NULL,NULL,'Both','3954129997',NULL,'Sample Data','Maria','P','Prentice',3,2,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Mr. Maria Prentice Sr.',NULL,NULL,'1935-01-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(119,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell, Santina','Santina Terrell',NULL,NULL,NULL,NULL,NULL,'Both','2039698555',NULL,'Sample Data','Santina','','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Terrell',NULL,1,'1967-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(120,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Megan','Megan Patel',NULL,NULL,NULL,NULL,NULL,'Both','2159576941',NULL,'Sample Data','Megan','L','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Patel',NULL,1,'2009-05-20',0,NULL,NULL,NULL,'Green Poetry Partnership',NULL,NULL,91,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(121,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Blackwell, Brent','Mr. Brent Blackwell',NULL,NULL,NULL,'2',NULL,'Both','1795154981',NULL,'Sample Data','Brent','V','Blackwell',3,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Mr. Brent Blackwell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(122,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Rebekah','Rebekah Olsen',NULL,NULL,NULL,'3',NULL,'Both','174179615',NULL,'Sample Data','Rebekah','U','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Olsen',NULL,1,'1969-05-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(123,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Lee, Jed','Dr. Jed Lee',NULL,NULL,NULL,'2',NULL,'Both','301771502',NULL,'Sample Data','Jed','','Lee',4,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Dr. Jed Lee',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(124,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'allenlee@airmail.biz','allenlee@airmail.biz',NULL,NULL,NULL,NULL,NULL,'Both','4294528252',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear allenlee@airmail.biz',1,NULL,'Dear allenlee@airmail.biz',1,NULL,'allenlee@airmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(125,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Ashlie','Ms. Ashlie Nielsen',NULL,NULL,NULL,'3',NULL,'Both','89218160',NULL,'Sample Data','Ashlie','','Nielsen',2,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ms. Ashlie Nielsen',NULL,1,'1975-06-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(126,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'shadmller@testing.co.nz','shadmller@testing.co.nz',NULL,NULL,NULL,'2',NULL,'Both','1507946841',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear shadmller@testing.co.nz',1,NULL,'Dear shadmller@testing.co.nz',1,NULL,'shadmller@testing.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(127,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jacobs, Scott','Dr. Scott Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','2229288735',NULL,'Sample Data','Scott','F','Jacobs',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Jacobs',NULL,2,'1972-11-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(128,'Household',NULL,1,0,0,0,1,0,NULL,NULL,'Müller family','Müller family',NULL,NULL,NULL,'2',NULL,'Both','1144797465',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Müller family',5,NULL,'Dear Müller family',2,NULL,'Müller family',NULL,NULL,NULL,0,NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(129,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice, Valene','Dr. Valene Prentice',NULL,NULL,NULL,NULL,NULL,'Both','2953436948',NULL,'Sample Data','Valene','','Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Dr. Valene Prentice',NULL,1,'1977-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(130,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'justinamller@mymail.co.in','justinamller@mymail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','1563618154',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear justinamller@mymail.co.in',1,NULL,'Dear justinamller@mymail.co.in',1,NULL,'justinamller@mymail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(131,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'dimitrov.bernadette@fakemail.org','dimitrov.bernadette@fakemail.org',NULL,NULL,NULL,'1',NULL,'Both','3271603303',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear dimitrov.bernadette@fakemail.org',1,NULL,'Dear dimitrov.bernadette@fakemail.org',1,NULL,'dimitrov.bernadette@fakemail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(132,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Parker, Shad','Shad Parker',NULL,NULL,NULL,'2',NULL,'Both','23650208',NULL,'Sample Data','Shad','','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Parker',NULL,2,'2004-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(133,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Jackson','Jackson Jameson',NULL,NULL,NULL,'4',NULL,'Both','680754950',NULL,'Sample Data','Jackson','F','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Jameson',NULL,2,'2008-11-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(134,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Barkley, Kenny','Dr. Kenny Barkley',NULL,NULL,NULL,'4',NULL,'Both','3409558741',NULL,'Sample Data','Kenny','X','Barkley',4,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Dr. Kenny Barkley',NULL,NULL,'1991-08-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(135,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Reynolds, Claudio','Mr. Claudio Reynolds Jr.',NULL,NULL,NULL,'5',NULL,'Both','2468699495',NULL,'Sample Data','Claudio','','Reynolds',3,1,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Mr. Claudio Reynolds Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(136,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Barkley family','Barkley family',NULL,NULL,NULL,'1',NULL,'Both','2888062109',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(137,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Aptos Sustainability Center','Aptos Sustainability Center',NULL,NULL,NULL,'4',NULL,'Both','1081050098',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Aptos Sustainability Center',NULL,NULL,NULL,0,NULL,NULL,34,'Aptos Sustainability Center',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(138,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Heidi','Mrs. Heidi Parker',NULL,NULL,NULL,'3',NULL,'Both','3690123952',NULL,'Sample Data','Heidi','','Parker',1,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Mrs. Heidi Parker',NULL,1,'1978-04-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(139,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Kathleen','Kathleen Parker',NULL,NULL,NULL,NULL,NULL,'Both','295233156',NULL,'Sample Data','Kathleen','Q','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Parker',NULL,1,'1972-04-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(140,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Ashlie','Ashlie Müller',NULL,NULL,NULL,'2',NULL,'Both','3515081294',NULL,'Sample Data','Ashlie','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(141,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Brent','Brent Samuels',NULL,NULL,NULL,NULL,NULL,'Both','3250906077',NULL,'Sample Data','Brent','','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Samuels',NULL,2,'1959-05-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(142,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Global Technology Collective','Global Technology Collective',NULL,NULL,NULL,NULL,NULL,'Both','102297836',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Technology Collective',NULL,NULL,NULL,0,NULL,NULL,170,'Global Technology Collective',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(143,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Bernadette','Bernadette Wattson',NULL,NULL,NULL,'1',NULL,'Both','1191372822',NULL,'Sample Data','Bernadette','','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Wattson',NULL,1,'1973-05-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(144,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Global Empowerment Alliance','Global Empowerment Alliance',NULL,NULL,NULL,'3',NULL,'Both','180120760',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Empowerment Alliance',NULL,NULL,NULL,0,NULL,NULL,18,'Global Empowerment Alliance',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(145,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Clint','Clint Nielsen',NULL,NULL,NULL,'2',NULL,'Both','2083087169',NULL,'Sample Data','Clint','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Nielsen',NULL,NULL,'1936-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(146,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jacobs, Jay','Jay Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','281953359',NULL,'Sample Data','Jay','F','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Jacobs',NULL,2,'1937-11-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(147,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Herminia','Dr. Herminia Prentice',NULL,NULL,NULL,NULL,NULL,'Both','4072784830',NULL,'Sample Data','Herminia','','Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Dr. Herminia Prentice',NULL,1,'1973-07-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(148,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Dallas Peace Partnership','Dallas Peace Partnership',NULL,NULL,NULL,'3',NULL,'Both','762488419',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dallas Peace Partnership',NULL,NULL,NULL,0,NULL,NULL,104,'Dallas Peace Partnership',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(149,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Delana','Delana Grant',NULL,NULL,NULL,'3',NULL,'Both','2844860785',NULL,'Sample Data','Delana','','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Grant',NULL,1,'1981-08-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(150,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Müller family','Müller family',NULL,NULL,NULL,'3',NULL,'Both','1144797465',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Müller family',5,NULL,'Dear Müller family',2,NULL,'Müller family',NULL,NULL,NULL,0,NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(151,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Billy','Dr. Billy Prentice',NULL,NULL,NULL,'3',NULL,'Both','3571999002',NULL,'Sample Data','Billy','F','Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Dr. Billy Prentice',NULL,2,'1977-04-09',0,NULL,NULL,NULL,'Urban Culture Services',NULL,NULL,105,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(152,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'samuels.ray@fakemail.co.pl','samuels.ray@fakemail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','4175065650',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear samuels.ray@fakemail.co.pl',1,NULL,'Dear samuels.ray@fakemail.co.pl',1,NULL,'samuels.ray@fakemail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(153,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Kacey','Kacey Blackwell',NULL,NULL,NULL,'5',NULL,'Both','3163269089',NULL,'Sample Data','Kacey','F','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(154,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Irvin','Irvin Patel Jr.',NULL,NULL,NULL,'5',NULL,'Both','1842023876',NULL,'Sample Data','Irvin','K','Patel',NULL,1,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Patel Jr.',NULL,2,'1976-10-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(155,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'rodrigod11@sample.org','rodrigod11@sample.org',NULL,NULL,NULL,'4',NULL,'Both','1416913895',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear rodrigod11@sample.org',1,NULL,'Dear rodrigod11@sample.org',1,NULL,'rodrigod11@sample.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(156,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Damaris','Mrs. Damaris Samuels',NULL,NULL,NULL,NULL,NULL,'Both','3144894953',NULL,'Sample Data','Damaris','H','Samuels',1,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Mrs. Damaris Samuels',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(157,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Moxahala Development Alliance','Moxahala Development Alliance',NULL,NULL,NULL,NULL,NULL,'Both','1518555478',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Moxahala Development Alliance',NULL,NULL,NULL,0,NULL,NULL,57,'Moxahala Development Alliance',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(158,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Deforest-Cooper, Lashawnda','Lashawnda Deforest-Cooper',NULL,NULL,NULL,'3',NULL,'Both','303860140',NULL,'Sample Data','Lashawnda','N','Deforest-Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Deforest-Cooper',NULL,1,'1996-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(159,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'mller.billy29@testmail.info','mller.billy29@testmail.info',NULL,NULL,NULL,NULL,NULL,'Both','131366858',NULL,'Sample Data',NULL,NULL,NULL,3,4,NULL,NULL,1,NULL,'Dear mller.billy29@testmail.info',1,NULL,'Dear mller.billy29@testmail.info',1,NULL,'mller.billy29@testmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(160,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Prentice, Scarlet','Scarlet Prentice',NULL,NULL,NULL,NULL,NULL,'Both','3056236127',NULL,'Sample Data','Scarlet','A','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Prentice',NULL,NULL,'1977-08-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(161,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jensen, Shauna','Shauna Jensen',NULL,NULL,NULL,NULL,NULL,'Both','108136044',NULL,'Sample Data','Shauna','X','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Jensen',NULL,1,'1949-03-08',1,'2019-11-19',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(162,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Bernadette','Bernadette Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','527011185',NULL,'Sample Data','Bernadette','X','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(163,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest-Cooper family','Deforest-Cooper family',NULL,NULL,NULL,'1',NULL,'Both','1424194023',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest-Cooper family',5,NULL,'Dear Deforest-Cooper family',2,NULL,'Deforest-Cooper family',NULL,NULL,NULL,0,NULL,'Deforest-Cooper family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(164,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samuels, Brittney','Brittney Samuels',NULL,NULL,NULL,NULL,NULL,'Both','3183617598',NULL,'Sample Data','Brittney','A','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Samuels',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(165,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Wagner, Brigette','Brigette Wagner',NULL,NULL,NULL,'2',NULL,'Both','3285817434',NULL,'Sample Data','Brigette','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Wagner',NULL,NULL,'1950-02-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(166,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Zope, Jina','Jina Zope',NULL,NULL,NULL,NULL,NULL,'Both','2020833032',NULL,'Sample Data','Jina','K','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Zope',NULL,1,'2009-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(167,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Jay','Mr. Jay Smith',NULL,NULL,NULL,'2',NULL,'Both','2744125186',NULL,'Sample Data','Jay','G','Smith',3,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Mr. Jay Smith',NULL,2,NULL,1,'2020-03-27',NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(168,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Blackwell family','Blackwell family',NULL,NULL,NULL,NULL,NULL,'Both','3218641510',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(169,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Deforest, Tanya','Tanya Deforest',NULL,NULL,NULL,'2',NULL,'Both','3707213011',NULL,'Sample Data','Tanya','','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Deforest',NULL,1,'1981-05-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(170,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Barkley, Bernadette','Bernadette Barkley',NULL,NULL,NULL,NULL,NULL,'Both','2929366721',NULL,'Sample Data','Bernadette','','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Barkley',NULL,1,NULL,0,NULL,NULL,NULL,'Global Technology Collective',NULL,NULL,142,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(171,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González, Toby','Mr. Toby González III',NULL,NULL,NULL,'4',NULL,'Both','3133453740',NULL,'Sample Data','Toby','','González',3,4,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby González III',NULL,2,'1972-09-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(172,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Betty','Betty Cooper',NULL,NULL,NULL,NULL,NULL,'Both','2283344606',NULL,'Sample Data','Betty','I','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty Cooper',NULL,NULL,'1976-03-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(173,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bjameson@spamalot.co.nz','bjameson@spamalot.co.nz',NULL,NULL,NULL,'5',NULL,'Both','1343613532',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear bjameson@spamalot.co.nz',1,NULL,'Dear bjameson@spamalot.co.nz',1,NULL,'bjameson@spamalot.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(174,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Northpoint Development School','Northpoint Development School',NULL,NULL,NULL,'3',NULL,'Both','3168400042',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Northpoint Development School',NULL,NULL,NULL,0,NULL,NULL,185,'Northpoint Development School',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(175,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Kenny','Kenny Dimitrov Sr.',NULL,NULL,NULL,'3',NULL,'Both','2698867379',NULL,'Sample Data','Kenny','X','Dimitrov',NULL,2,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Dimitrov Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(176,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Dimitrov, Sherman','Mr. Sherman Dimitrov Sr.',NULL,NULL,NULL,NULL,NULL,'Both','2018073117',NULL,'Sample Data','Sherman','','Dimitrov',3,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Dimitrov Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(177,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,NULL,NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(178,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Sierra Software Solutions','Sierra Software Solutions',NULL,NULL,NULL,NULL,NULL,'Both','4103954497',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Software Solutions',NULL,NULL,NULL,0,NULL,NULL,186,'Sierra Software Solutions',NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(179,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Carylon','Carylon Samuels',NULL,NULL,NULL,'2',NULL,'Both','707612001',NULL,'Sample Data','Carylon','C','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Samuels',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(180,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest-Cooper, Eleonor','Dr. Eleonor Deforest-Cooper',NULL,NULL,NULL,NULL,NULL,'Both','303402137',NULL,'Sample Data','Eleonor','E','Deforest-Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Dr. Eleonor Deforest-Cooper',NULL,NULL,'1970-01-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(181,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice-Parker, Maria','Maria Prentice-Parker',NULL,NULL,NULL,NULL,NULL,'Both','265905038',NULL,'Sample Data','Maria','G','Prentice-Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Prentice-Parker',NULL,2,'2008-02-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(182,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Juliann','Juliann Müller',NULL,NULL,NULL,NULL,NULL,'Both','307897793',NULL,'Sample Data','Juliann','S','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Müller',NULL,NULL,'1954-04-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:00'),(183,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Sharyn','Mrs. Sharyn McReynolds',NULL,NULL,NULL,'1',NULL,'Both','1394669244',NULL,'Sample Data','Sharyn','','McReynolds',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn McReynolds',NULL,1,'1983-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(184,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Ivanov, Kiara','Kiara Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','1100955182',NULL,'Sample Data','Kiara','M','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Ivanov',NULL,1,'1955-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(185,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'mller.scott40@airmail.info','mller.scott40@airmail.info',NULL,NULL,NULL,'4',NULL,'Both','91445264',NULL,'Sample Data',NULL,NULL,NULL,NULL,2,NULL,NULL,1,NULL,'Dear mller.scott40@airmail.info',1,NULL,'Dear mller.scott40@airmail.info',1,NULL,'mller.scott40@airmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,'Northpoint Development School',NULL,NULL,174,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(186,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Jina','Jina Roberts',NULL,NULL,NULL,'5',NULL,'Both','3944144091',NULL,'Sample Data','Jina','P','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Roberts',NULL,1,'1986-12-20',0,NULL,NULL,NULL,'Sierra Software Solutions',NULL,NULL,178,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(187,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Troy','Troy Prentice',NULL,NULL,NULL,'1',NULL,'Both','2143976390',NULL,'Sample Data','Troy','W','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(188,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Felisha','Mrs. Felisha Wagner',NULL,NULL,NULL,NULL,NULL,'Both','2346582969',NULL,'Sample Data','Felisha','T','Wagner',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Wagner',NULL,1,'1986-11-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(189,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Margaret','Ms. Margaret Jameson',NULL,NULL,NULL,NULL,NULL,'Both','1719938872',NULL,'Sample Data','Margaret','S','Jameson',2,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Ms. Margaret Jameson',NULL,1,'1970-11-21',0,NULL,NULL,NULL,'Kentucky Software Initiative',NULL,NULL,56,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(190,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Carylon','Carylon Barkley',NULL,NULL,NULL,NULL,NULL,'Both','3982709827',NULL,'Sample Data','Carylon','L','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(191,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Toby','Dr. Toby Prentice',NULL,NULL,NULL,'5',NULL,'Both','3734648232',NULL,'Sample Data','Toby','E','Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Dr. Toby Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(192,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'lbarkley69@sample.net','lbarkley69@sample.net',NULL,NULL,NULL,'3',NULL,'Both','2275713838',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear lbarkley69@sample.net',1,NULL,'Dear lbarkley69@sample.net',1,NULL,'lbarkley69@sample.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(193,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'allanjameson35@infomail.net','allanjameson35@infomail.net',NULL,NULL,NULL,'1',NULL,'Both','2766671914',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear allanjameson35@infomail.net',1,NULL,'Dear allanjameson35@infomail.net',1,NULL,'allanjameson35@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(194,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terrell, Landon','Landon Terrell',NULL,NULL,NULL,NULL,NULL,'Both','4168752118',NULL,'Sample Data','Landon','H','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Terrell',NULL,2,'1962-03-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(195,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Kenny','Kenny Jameson Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3782185889',NULL,'Sample Data','Kenny','P','Jameson',NULL,1,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Jameson Jr.',NULL,NULL,'1990-03-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(196,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Kandace','Ms. Kandace Wagner',NULL,NULL,NULL,'2',NULL,'Both','34193694',NULL,'Sample Data','Kandace','Z','Wagner',2,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Ms. Kandace Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(197,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Yadav, Elina','Ms. Elina Yadav',NULL,NULL,NULL,'2',NULL,'Both','3672729828',NULL,'Sample Data','Elina','','Yadav',2,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Ms. Elina Yadav',NULL,1,'1995-04-06',0,NULL,NULL,NULL,'Beech Development Trust',NULL,NULL,86,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(198,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'parker.rolando@lol.org','parker.rolando@lol.org',NULL,NULL,NULL,'1',NULL,'Both','4169452322',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear parker.rolando@lol.org',1,NULL,'Dear parker.rolando@lol.org',1,NULL,'parker.rolando@lol.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:02'),(199,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Jed','Dr. Jed Wilson',NULL,NULL,NULL,'2',NULL,'Both','1260634010',NULL,'Sample Data','Jed','','Wilson',4,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Dr. Jed Wilson',NULL,NULL,'1966-05-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:01'),(200,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Blackwell-González, Felisha','Felisha Blackwell-González',NULL,NULL,NULL,'1',NULL,'Both','1633535452',NULL,'Sample Data','Felisha','Y','Blackwell-González',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Blackwell-González',NULL,NULL,'1970-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'),(201,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Parker-Jones, Iris','Iris Parker-Jones',NULL,NULL,NULL,NULL,NULL,'Both','803629539',NULL,'Sample Data','Iris','','Parker-Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Parker-Jones',NULL,NULL,'1965-05-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2020-07-24 05:34:00','2020-07-24 05:34:03'); /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -228,7 +228,7 @@ 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,'2010-04-11 00:00:00',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL,0),(2,4,1,NULL,1,'2010-03-21 00:00:00',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,'2010-04-29 00:00:00',0.00,25.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL,0),(4,8,1,NULL,4,'2010-04-11 00:00:00',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL,0),(5,16,1,NULL,4,'2010-04-15 00:00:00',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL,0),(6,19,1,NULL,4,'2010-04-11 00:00:00',0.00,175.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL,0),(7,82,1,NULL,1,'2010-03-27 00:00:00',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),(8,92,1,NULL,1,'2010-03-08 00:00:00',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),(9,34,1,NULL,1,'2010-04-22 00:00:00',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),(10,71,1,NULL,1,'2009-07-01 11:53:50',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(11,43,1,NULL,1,'2009-07-01 12:55:41',0.00,200.00,NULL,NULL,'PL43II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(12,32,1,NULL,1,'2009-10-01 11:53:50',0.00,200.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(13,32,1,NULL,1,'2009-12-01 12:55:41',0.00,200.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(14,158,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(15,9,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(16,154,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(17,59,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(18,52,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(19,185,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(20,73,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(21,12,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(22,41,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(23,18,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(24,126,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(25,4,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(26,92,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(27,62,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(28,117,2,NULL,1,'2020-06-10 14:45:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(29,164,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(30,174,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(31,173,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(32,109,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(33,10,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(34,190,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(35,110,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(36,81,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(37,112,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(38,15,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(39,134,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(40,32,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(41,107,2,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(42,147,2,NULL,1,'2020-06-10 14:45:52',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(43,98,2,NULL,1,'2020-06-10 14:45:52',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(45,1,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(46,3,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(47,4,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(48,7,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(49,11,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(50,12,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(51,18,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(52,20,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(53,23,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(54,27,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(55,30,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(56,33,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(57,51,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(58,52,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(59,57,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(60,59,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(61,61,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(62,68,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(63,70,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(64,74,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(65,75,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(66,76,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(67,83,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(68,110,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(69,113,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(70,118,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(71,119,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(72,121,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(73,124,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(74,134,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(75,139,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(76,141,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(77,142,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(78,146,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(79,151,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(80,152,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(81,154,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(82,159,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(83,161,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(84,162,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(85,164,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',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,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(87,173,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(88,177,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(89,180,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(90,183,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(91,188,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(92,197,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(93,198,4,NULL,1,'2020-06-10 14:45:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(94,199,4,NULL,1,'2020-06-10 14:45:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-06-10 14:45:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0); +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,'2010-04-11 00:00:00',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL,0),(2,4,1,NULL,1,'2010-03-21 00:00:00',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,'2010-04-29 00:00:00',0.00,25.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL,0),(4,8,1,NULL,4,'2010-04-11 00:00:00',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL,0),(5,16,1,NULL,4,'2010-04-15 00:00:00',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL,0),(6,19,1,NULL,4,'2010-04-11 00:00:00',0.00,175.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL,0),(7,82,1,NULL,1,'2010-03-27 00:00:00',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),(8,92,1,NULL,1,'2010-03-08 00:00:00',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),(9,34,1,NULL,1,'2010-04-22 00:00:00',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),(10,71,1,NULL,1,'2009-07-01 11:53:50',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(11,43,1,NULL,1,'2009-07-01 12:55:41',0.00,200.00,NULL,NULL,'PL43II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(12,32,1,NULL,1,'2009-10-01 11:53:50',0.00,200.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(13,32,1,NULL,1,'2009-12-01 12:55:41',0.00,200.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(14,103,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(15,179,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(16,12,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(17,173,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(18,127,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(19,63,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(20,188,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(21,80,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(22,131,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(23,161,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(24,41,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(25,20,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(26,195,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(27,164,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(28,78,2,NULL,1,'2020-07-24 15:34:04',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(29,132,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(30,5,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(31,108,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(32,39,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(33,159,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(34,67,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(35,17,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(36,7,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(37,95,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(38,134,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(39,74,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(40,13,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(41,156,2,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(42,145,2,NULL,1,'2020-07-24 15:34:04',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(43,99,2,NULL,1,'2020-07-24 15:34:04',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(45,5,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(46,6,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(47,8,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(48,18,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(49,19,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(50,21,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(51,23,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(52,24,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(53,30,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(54,31,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(55,41,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(56,44,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(57,49,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(58,54,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(59,56,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(60,57,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(61,60,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(62,68,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(63,70,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(64,73,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(65,90,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(66,94,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(67,95,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(68,98,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(69,99,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(70,102,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(71,103,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(72,105,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(73,106,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(74,109,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(75,110,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(76,111,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(77,114,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(78,120,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(79,129,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(80,130,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(81,133,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(82,140,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(83,155,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(84,162,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(85,165,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(86,167,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(87,170,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(88,172,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(89,175,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(90,180,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(91,194,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(92,195,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(93,196,4,NULL,1,'2020-07-24 15:34:04',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),(94,200,4,NULL,1,'2020-07-24 15:34:04',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2020-07-24 15:34:04',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; @@ -266,7 +266,7 @@ 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,8,177,10.00,'USD',1,1,'Jones Family','Helping Hands',10),(2,9,177,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); +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,8,57,10.00,'USD',1,1,'Jones Family','Helping Hands',10),(2,9,57,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */; UNLOCK TABLES; @@ -399,7 +399,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.28.4',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); +INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,'5.29.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */; UNLOCK TABLES; @@ -409,7 +409,7 @@ UNLOCK TABLES; 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',0,0,0,0,NULL,NULL,NULL,NULL),(2,43,1,'samuelst9@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(3,43,1,'samuels.q.toby35@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(4,71,1,'daz.lashawnda@example.com',1,0,0,0,NULL,NULL,NULL,NULL),(5,71,1,'daz.lashawnda@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(6,110,1,'jameson.errol57@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(7,91,1,'patel.claudio@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(8,91,1,'ca.patel@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(9,172,1,'blackwellm@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(10,172,1,'mx.blackwell95@mymail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(11,37,1,'roberts.roland51@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(12,37,1,'rolandroberts8@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),(13,175,1,'felishar2@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(14,15,1,'jinap@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(15,115,1,'krobertson12@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(16,147,1,'eriksamuels@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(17,147,1,'samuels.u.erik@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(18,198,1,'smithe22@example.com',1,0,0,0,NULL,NULL,NULL,NULL),(19,198,1,'errols79@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(20,53,1,'megand91@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(21,53,1,'dazm@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(22,22,1,'wilson.felisha77@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(23,22,1,'wilson.felisha@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(24,18,1,'wattson.brzczysaw@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(25,18,1,'brzczysawwattson97@airmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(26,108,1,'cruz.w.maria@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(27,92,1,'roberts.r.nicole@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(28,92,1,'roberts.r.nicole50@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),(29,44,1,'barryparker@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(30,44,1,'parker.barry@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(31,121,1,'nlee@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(32,47,1,'carylonchowski@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(33,47,1,'carylonchowski80@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),(34,138,1,'jameson.heidi@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(35,138,1,'jamesonh@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL),(36,85,1,'darena@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(37,85,1,'adamsd@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(38,66,1,'darenr@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(39,157,1,'allanzope81@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(40,157,1,'allanz28@spamalot.net',0,0,0,0,NULL,NULL,NULL,NULL),(41,119,1,'jinag@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(42,119,1,'jj.grant93@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(43,142,1,'scarletjones@example.info',1,0,0,0,NULL,NULL,NULL,NULL),(44,142,1,'jones.scarlet@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(45,164,1,'scottjensen23@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(46,134,1,'cruzl2@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(47,41,1,'samuels.russell@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(48,120,1,'roberts.lou48@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(49,16,1,'barkley.v.rosario65@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(50,29,1,'bachman.esta61@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(51,29,1,'bachman.esta@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(52,103,1,'jmller@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(53,103,1,'mllerj@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(54,149,1,'robertsr@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(55,136,1,'robertson.ivey@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(56,24,1,'smith.brittney@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(57,24,1,'smith.d.brittney@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL),(58,36,1,'brzczysawparker50@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(59,36,1,'brzczysawp31@notmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(60,7,1,'jacksonl@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),(61,7,1,'lee.jackson@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),(62,158,1,'ar.terry71@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(63,20,1,'allenroberts@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(64,20,1,'robertsa@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(65,93,1,'shadmcreynolds6@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(66,93,1,'mcreynolds.shad8@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(67,69,1,'chowski.ashlie52@example.info',1,0,0,0,NULL,NULL,NULL,NULL),(68,69,1,'ashlie82@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(69,21,1,'wilson.brigette49@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),(70,137,1,'cruz.sanford48@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(71,152,1,'reynolds.shad@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(72,185,1,'daz.sonny@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(73,30,1,'brittneywilson@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),(74,30,1,'brittneyw@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(75,62,1,'elbertmller39@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(76,9,1,'jacobjensen58@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(77,78,1,'prenticer36@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),(78,78,1,'prentice.t.rolando88@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(79,117,1,'bzope56@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),(80,117,1,'zope.bob93@airmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(81,196,1,'es.dimitrov@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(82,196,1,'dimitrove7@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(83,13,1,'cooperl@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(84,180,1,'daza@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(85,155,1,'kathleennielsen-daz79@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(86,165,1,'daz.toby@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(87,165,1,'tobydaz31@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL),(88,52,1,'bp.daz12@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(89,52,1,'bp.daz@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(90,132,1,'ajensen70@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(91,132,1,'allenjensen65@fakemail.org',0,0,0,0,NULL,NULL,NULL,NULL),(92,109,1,'ashleyj@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(93,109,1,'jensen-wilsona@lol.biz',0,0,0,0,NULL,NULL,NULL,NULL),(94,11,1,'smithr13@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(95,11,1,'ru.smith69@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(96,45,1,'smith.d.kandace@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(97,88,1,'jameson.q.teddy@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(98,200,1,'brentjameson@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(99,200,1,'brentjameson62@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),(100,124,1,'irisjameson76@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(101,125,1,'adams.rosario@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(102,14,1,'ivanovs70@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(103,14,1,'ivanov.shad38@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),(104,163,1,'ivanov-dimitrovm@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(105,163,1,'migueli@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(106,189,1,'troya@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(107,104,1,'adams.roland@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(108,151,1,'adams.e.allan86@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(109,190,1,'josefaadams@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(110,77,1,'edaz@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(111,77,1,'edaz@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),(112,176,1,'dazk@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),(113,139,1,'daz.scarlet@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(114,139,1,'sc.daz2@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(115,150,1,'kh.samson16@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(116,174,1,'samson.winford89@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(117,174,1,'samson.winford11@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(118,73,1,'bu.samson@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(119,73,1,'samsonb@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(120,107,1,'dt.wagner@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(121,173,1,'wagner.lou25@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(122,173,1,'lwagner95@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(123,33,1,'jacobsi6@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(124,59,1,'wagner-jacobs.scarlet97@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(125,59,1,'swagner-jacobs@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL),(126,5,1,'wagner-jacobsr9@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(127,64,1,'kp.deforest@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(128,64,1,'deforest.kenny95@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(129,87,1,'hh.roberts-deforest@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(130,201,1,'ki.deforest@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(131,126,1,'deforest.p.kandace89@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(132,126,1,'kandaced42@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(133,141,1,'smith-daz.l.eleonor@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(134,94,1,'daz.r.laree@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(135,153,1,'chowski.b.kathlyn@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(136,191,1,'chowski.billy@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(137,32,1,'chowski.justina@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(138,169,1,'reynoldsc@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(139,186,1,'reynolds.tanya14@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(140,133,1,'elizabethreynolds@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(141,133,1,'reynolds.elizabeth50@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(142,4,1,'errolreynolds@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(143,4,1,'reynolds.errol@testmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(144,197,1,'rl.robertson@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(145,171,1,'rosarioterrell-robertson82@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(146,184,1,'lawerencer@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(147,130,1,'carlosr@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(148,170,1,'chowski.shad@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(149,170,1,'shadchowski@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(150,114,1,'bernadetteg@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(151,114,1,'gonzlez.bernadette25@example.net',0,0,0,0,NULL,NULL,NULL,NULL),(152,160,1,'chowski-gonzlez.brittney@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(153,113,1,'dimitrov.b.brzczysaw@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(154,148,1,'dimitrov.d.lawerence@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(155,148,1,'dimitrov.d.lawerence@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(156,179,1,'scarletdimitrov53@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(157,72,1,'ou.blackwell@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(158,195,1,'bachman-blackwell.landon80@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(159,156,1,'ts.bachman-blackwell28@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(160,156,1,'bachman-blackwellt@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(161,74,3,'feedback@urbanpeacefund.org',1,0,0,0,NULL,NULL,NULL,NULL),(162,160,2,'brittneychowski-gonzlez@urbanpeacefund.org',0,0,0,0,NULL,NULL,NULL,NULL),(163,111,3,'service@sierrapeaceinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(164,154,2,'chowski-gonzlezo12@sierrapeaceinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(165,23,3,'service@creativeeducation.org',1,0,0,0,NULL,NULL,NULL,NULL),(166,121,2,'@creativeeducation.org',0,0,0,0,NULL,NULL,NULL,NULL),(167,65,3,'sales@indiahomahealthcollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(168,84,2,'scooper13@indiahomahealthcollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(169,82,3,'feedback@pineassociation.org',1,0,0,0,NULL,NULL,NULL,NULL),(170,123,3,'service@mlkingeducation.org',1,0,0,0,NULL,NULL,NULL,NULL),(171,21,2,'brigettew34@mlkingeducation.org',0,0,0,0,NULL,NULL,NULL,NULL),(172,55,3,'service@mainarts.org',1,0,0,0,NULL,NULL,NULL,NULL),(173,144,3,'feedback@urbaninitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(174,142,2,'scarletjones@urbaninitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),(175,63,3,'sales@nyhealthsystems.org',1,0,0,0,NULL,NULL,NULL,NULL),(176,193,2,'samson.o.carlos@nyhealthsystems.org',1,0,0,0,NULL,NULL,NULL,NULL),(177,178,3,'sales@wisconsinwellness.org',1,0,0,0,NULL,NULL,NULL,NULL),(178,18,2,'wattsonb@wisconsinwellness.org',0,0,0,0,NULL,NULL,NULL,NULL),(179,101,3,'contact@spactionservices.org',1,0,0,0,NULL,NULL,NULL,NULL),(180,119,2,'grant.j.jina@spactionservices.org',0,0,0,0,NULL,NULL,NULL,NULL),(181,135,3,'contact@austinhealth.org',1,0,0,0,NULL,NULL,NULL,NULL),(182,39,3,'info@farmingtonservices.org',1,0,0,0,NULL,NULL,NULL,NULL),(183,19,2,'adams-wilsonr7@farmingtonservices.org',1,0,0,0,NULL,NULL,NULL,NULL),(184,60,3,'info@paluxyenvironmental.org',1,0,0,0,NULL,NULL,NULL,NULL),(185,26,2,'ivanov.justina@paluxyenvironmental.org',1,0,0,0,NULL,NULL,NULL,NULL),(186,182,3,'contact@statespartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),(187,106,2,'mcreynoldsv@statespartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),(188,105,3,'feedback@unitedtechnology.org',1,0,0,0,NULL,NULL,NULL,NULL),(189,29,2,'11@unitedtechnology.org',0,0,0,0,NULL,NULL,NULL,NULL),(190,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(191,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(192,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); +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',0,0,0,0,NULL,NULL,NULL,NULL),(2,24,1,'jacobt@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(3,124,1,'allenlee47@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(4,124,1,'allenlee@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(5,17,1,'bb.samson59@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(6,182,1,'mllerj@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),(7,182,1,'js.mller@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(8,99,1,'terrye@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(9,81,1,'ivanov.maria@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(10,81,1,'mariai@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),(11,53,1,'wattsont@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),(12,53,1,'twattson@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),(13,15,1,'adams.merrie@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(14,179,1,'samuels.c.carylon19@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(15,83,1,'coopern43@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(16,83,1,'norrisc@example.info',0,0,0,0,NULL,NULL,NULL,NULL),(17,164,1,'samuels.a.brittney@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(18,146,1,'jacobs.f.jay51@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(19,120,1,'patelm@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(20,193,1,'allanjameson35@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),(21,76,1,'shado27@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(22,162,1,'bernadetteb@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(23,162,1,'bernadetteblackwell98@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(24,92,1,'allenm@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(25,65,1,'jedparker85@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),(26,190,1,'barkley.carylon21@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(27,184,1,'ivanov.kiara71@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(28,67,1,'chowski.juliann@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),(29,67,1,'juliann@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(30,185,1,'mller.scott40@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(31,175,1,'kx.dimitrov1@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(32,129,1,'vprentice@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(33,129,1,'vprentice@example.info',0,0,0,0,NULL,NULL,NULL,NULL),(34,197,1,'yadav.elina7@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(35,197,1,'elinay@testing.net',0,0,0,0,NULL,NULL,NULL,NULL),(36,122,1,'rebekaho@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(37,7,1,'patel.erik@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(38,154,1,'patel.k.irvin@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(39,154,1,'irvinpatel59@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(40,51,1,'spatel67@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(41,111,1,'robertson.elizabeth@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(42,111,1,'erobertson47@testmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(43,143,1,'bernadettewattson@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(44,143,1,'wattson.bernadette@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(45,77,1,'jameson.elbert@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(46,77,1,'elbertjameson47@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(47,8,1,'ashleyreynolds99@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(48,8,1,'ashleyr@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(49,84,1,'bachmanl95@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),(50,123,1,'lee.jed@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(51,119,1,'terrell.santina@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(52,119,1,'santinaterrell@example.com',0,0,0,0,NULL,NULL,NULL,NULL),(53,60,1,'wilson.maxwell@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(54,88,1,'elizabeths@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(55,41,1,'barkley.brittney@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(56,156,1,'damariss@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(57,118,1,'mp.prentice@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(58,118,1,'prentice.maria86@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(59,49,1,'fjones12@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(60,23,1,'rp.wattson@example.org',1,0,0,0,NULL,NULL,NULL,NULL),(61,5,1,'wilson.troy87@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(62,93,1,'darenc@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),(63,93,1,'cruz.daren@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(64,18,1,'cruz.russell41@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(65,176,1,'shermand10@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(66,132,1,'parker.shad@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(67,132,1,'shadp57@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),(68,45,1,'teresawilson92@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(69,44,1,'ef.cooper@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(70,96,1,'elbertt@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(71,96,1,'elbertt@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(72,166,1,'jinazope@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(73,166,1,'jk.zope21@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(74,16,1,'yadav.s.elbert@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(75,139,1,'parkerk91@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(76,125,1,'nielsen.ashlie@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(77,159,1,'mller.billy29@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(78,102,1,'rbachman-mller15@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(79,126,1,'shadm98@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(80,126,1,'shadmller@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(81,9,1,'tanyamller@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(82,198,1,'parker.rolando@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(83,149,1,'dgrant@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(84,40,1,'parker-grant.barry@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(85,85,1,'fu.parker-grant@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(86,192,1,'lawerenceb@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(87,192,1,'lbarkley69@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(88,134,1,'barkley.kenny92@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(89,134,1,'barkley.kenny@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),(90,113,1,'tw.parker@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(91,59,1,'mcreynolds-parkerw84@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(92,110,1,'mcreynolds-parker.norris@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(93,147,1,'prentice.herminia@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(94,82,1,'wagnert@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(95,82,1,'trumanwagner@testmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(96,196,1,'kandacewagner62@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(97,196,1,'kz.wagner@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(98,94,1,'angelikaw@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(99,195,1,'jameson.p.kenny@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(100,195,1,'kennyjameson3@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(101,173,1,'bjameson@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(102,133,1,'jamesonj8@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(103,133,1,'jamesonj@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL),(104,112,1,'samuels.i.nicole4@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(105,152,1,'rays@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(106,152,1,'samuels.ray@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(107,61,1,'meis62@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(108,54,1,'carylonblackwell-dimitrov@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(109,54,1,'carylonblackwell-dimitrov@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(110,155,1,'dimitrovr@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(111,155,1,'rodrigod11@sample.org',0,0,0,0,NULL,NULL,NULL,NULL),(112,29,1,'dimitrov.o.miguel@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(113,29,1,'migueldimitrov35@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(114,103,1,'winfordj26@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(115,103,1,'wy.jones@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(116,201,1,'parker-jones.iris54@example.info',1,0,0,0,NULL,NULL,NULL,NULL),(117,201,1,'irisp@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(118,63,1,'estajones@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(119,95,1,'kathlynjones@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(120,95,1,'jones.kathlyn3@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(121,107,1,'samson.truman@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(122,107,1,'samson.truman@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(123,68,1,'samson.delana@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(124,114,1,'lincolns72@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(125,70,1,'samson.lincoln@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(126,70,1,'lsamson18@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(127,130,1,'justinamller@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(128,140,1,'ashliemller@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(129,48,1,'parker.betty35@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(130,78,1,'aj.prentice-parker@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),(131,78,1,'prentice-parker.j.ashley@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(132,20,1,'reynoldsi@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(133,20,1,'iveyr@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(134,13,1,'russellreynolds35@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(135,13,1,'russellr2@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(136,194,1,'landonterrell60@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),(137,194,1,'terrelll23@airmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(138,131,1,'dimitrov.bernadette@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),(139,89,1,'terrell-dimitrov.miguel@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(140,75,1,'lashawndat70@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(141,75,1,'terrell-dimitrovl@lol.com',0,0,0,0,NULL,NULL,NULL,NULL),(142,121,1,'blackwell.brent@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(143,189,1,'margaretjameson65@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(144,189,1,'jameson.margaret@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(145,36,1,'meijameson@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),(146,26,1,'eleonorjameson@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(147,26,1,'et.jameson52@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(148,171,1,'tobyg37@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(149,171,1,'gonzlez.toby35@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(150,200,1,'blackwell-gonzlez.felisha@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(151,200,1,'felishab98@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),(152,69,1,'allengonzlez70@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(153,69,1,'gonzlez.allen60@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(154,180,1,'deforest-coopere@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(155,180,1,'ee.deforest-cooper@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),(156,4,1,'teddydeforest-cooper@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(157,174,3,'info@northpointdevelopmentschool.org',1,0,0,0,NULL,NULL,NULL,NULL),(158,185,2,'@northpointdevelopmentschool.org',0,0,0,0,NULL,NULL,NULL,NULL),(159,105,3,'info@urbanculture.org',1,0,0,0,NULL,NULL,NULL,NULL),(160,151,2,'billyp74@urbanculture.org',1,0,0,0,NULL,NULL,NULL,NULL),(161,144,3,'service@globalempowerment.org',1,0,0,0,NULL,NULL,NULL,NULL),(162,18,2,'russellcruz@globalempowerment.org',0,0,0,0,NULL,NULL,NULL,NULL),(163,148,3,'info@dallaspartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),(164,104,2,'blackwell.scott15@dallaspartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),(165,90,3,'service@rebeccafellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(166,86,3,'sales@beechdevelopmenttrust.org',1,0,0,0,NULL,NULL,NULL,NULL),(167,197,2,'eyadav83@beechdevelopmenttrust.org',0,0,0,0,NULL,NULL,NULL,NULL),(168,56,3,'service@kentuckyinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(169,189,2,'jamesonm@kentuckyinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),(170,137,3,'info@aptossustainability.org',1,0,0,0,NULL,NULL,NULL,NULL),(171,34,2,'carlosm4@aptossustainability.org',1,0,0,0,NULL,NULL,NULL,NULL),(172,14,3,'feedback@bltechnologyfund.org',1,0,0,0,NULL,NULL,NULL,NULL),(173,26,2,'81@bltechnologyfund.org',0,0,0,0,NULL,NULL,NULL,NULL),(174,178,3,'sales@sierrasoftwaresolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(175,186,2,'robertsj87@sierrasoftwaresolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(176,117,3,'feedback@maincollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(177,85,2,'fu.parker-grant@maincollective.org',0,0,0,0,NULL,NULL,NULL,NULL),(178,157,3,'contact@moxahaladevelopmentalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(179,57,2,'rolandonielsen@moxahaladevelopmentalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(180,91,3,'contact@greenpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),(181,120,2,'meganpatel@greenpoetry.org',0,0,0,0,NULL,NULL,NULL,NULL),(182,79,3,'sales@ogdensburgpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),(183,37,3,'contact@urbanactionschool.org',1,0,0,0,NULL,NULL,NULL,NULL),(184,36,2,'.28@urbanactionschool.org',0,0,0,0,NULL,NULL,NULL,NULL),(185,46,3,'sales@greeninitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(186,20,2,'11@greeninitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),(187,50,3,'contact@collegehealthassociation.org',1,0,0,0,NULL,NULL,NULL,NULL),(188,89,2,'miguelterrell-dimitrov@collegehealthassociation.org',0,0,0,0,NULL,NULL,NULL,NULL),(189,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(190,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(191,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */; UNLOCK TABLES; @@ -447,7 +447,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_entity_financial_trxn` WRITE; /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` DISABLE KEYS */; -INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, `financial_trxn_id`, `amount`) VALUES (1,'civicrm_contribution',1,1,125.00),(2,'civicrm_financial_item',1,1,125.00),(3,'civicrm_contribution',2,2,50.00),(4,'civicrm_financial_item',2,2,50.00),(5,'civicrm_contribution',3,3,25.00),(6,'civicrm_financial_item',3,3,25.00),(7,'civicrm_contribution',4,4,50.00),(8,'civicrm_financial_item',4,4,50.00),(9,'civicrm_contribution',5,5,500.00),(10,'civicrm_financial_item',5,5,500.00),(11,'civicrm_contribution',6,6,175.00),(12,'civicrm_financial_item',6,6,175.00),(13,'civicrm_contribution',7,7,50.00),(14,'civicrm_financial_item',7,7,50.00),(15,'civicrm_contribution',8,8,10.00),(16,'civicrm_financial_item',8,8,10.00),(17,'civicrm_contribution',9,9,250.00),(18,'civicrm_financial_item',9,9,250.00),(19,'civicrm_contribution',10,10,500.00),(20,'civicrm_financial_item',10,10,500.00),(21,'civicrm_contribution',11,11,200.00),(22,'civicrm_financial_item',11,11,200.00),(23,'civicrm_contribution',12,12,200.00),(24,'civicrm_financial_item',12,12,200.00),(25,'civicrm_contribution',13,13,200.00),(26,'civicrm_financial_item',13,13,200.00),(27,'civicrm_contribution',14,14,100.00),(28,'civicrm_financial_item',14,14,100.00),(29,'civicrm_contribution',15,15,100.00),(30,'civicrm_financial_item',15,15,100.00),(31,'civicrm_contribution',16,16,100.00),(32,'civicrm_financial_item',16,16,100.00),(33,'civicrm_contribution',17,17,100.00),(34,'civicrm_financial_item',17,17,100.00),(35,'civicrm_contribution',18,18,100.00),(36,'civicrm_financial_item',18,18,100.00),(37,'civicrm_contribution',19,19,100.00),(38,'civicrm_financial_item',19,19,100.00),(39,'civicrm_contribution',20,20,100.00),(40,'civicrm_financial_item',20,20,100.00),(41,'civicrm_contribution',21,21,100.00),(42,'civicrm_financial_item',21,21,100.00),(43,'civicrm_contribution',22,22,100.00),(44,'civicrm_financial_item',22,22,100.00),(45,'civicrm_contribution',23,23,100.00),(46,'civicrm_financial_item',23,23,100.00),(47,'civicrm_contribution',24,24,100.00),(48,'civicrm_financial_item',24,24,100.00),(49,'civicrm_contribution',25,25,100.00),(50,'civicrm_financial_item',25,25,100.00),(51,'civicrm_contribution',26,26,100.00),(52,'civicrm_financial_item',26,26,100.00),(53,'civicrm_contribution',27,27,100.00),(54,'civicrm_financial_item',27,27,100.00),(55,'civicrm_contribution',28,28,100.00),(56,'civicrm_financial_item',28,28,100.00),(57,'civicrm_contribution',29,29,50.00),(58,'civicrm_financial_item',29,29,50.00),(59,'civicrm_contribution',30,30,50.00),(60,'civicrm_financial_item',30,30,50.00),(61,'civicrm_contribution',31,31,50.00),(62,'civicrm_financial_item',31,31,50.00),(63,'civicrm_contribution',32,32,50.00),(64,'civicrm_financial_item',32,32,50.00),(65,'civicrm_contribution',33,33,50.00),(66,'civicrm_financial_item',33,33,50.00),(67,'civicrm_contribution',34,34,50.00),(68,'civicrm_financial_item',34,34,50.00),(69,'civicrm_contribution',35,35,50.00),(70,'civicrm_financial_item',35,35,50.00),(71,'civicrm_contribution',36,36,50.00),(72,'civicrm_financial_item',36,36,50.00),(73,'civicrm_contribution',37,37,50.00),(74,'civicrm_financial_item',37,37,50.00),(75,'civicrm_contribution',38,38,50.00),(76,'civicrm_financial_item',38,38,50.00),(77,'civicrm_contribution',39,39,50.00),(78,'civicrm_financial_item',39,39,50.00),(79,'civicrm_contribution',40,40,50.00),(80,'civicrm_financial_item',40,40,50.00),(81,'civicrm_contribution',41,41,50.00),(82,'civicrm_financial_item',41,41,50.00),(83,'civicrm_contribution',42,42,1200.00),(84,'civicrm_financial_item',42,42,1200.00),(85,'civicrm_contribution',43,43,1200.00),(86,'civicrm_financial_item',43,43,1200.00),(87,'civicrm_contribution',59,44,50.00),(88,'civicrm_financial_item',44,44,50.00),(89,'civicrm_contribution',69,45,50.00),(90,'civicrm_financial_item',45,45,50.00),(91,'civicrm_contribution',86,46,50.00),(92,'civicrm_financial_item',46,46,50.00),(93,'civicrm_contribution',45,47,50.00),(94,'civicrm_financial_item',47,47,50.00),(95,'civicrm_contribution',93,48,50.00),(96,'civicrm_financial_item',48,48,50.00),(97,'civicrm_contribution',82,49,50.00),(98,'civicrm_financial_item',49,49,50.00),(99,'civicrm_contribution',89,50,50.00),(100,'civicrm_financial_item',50,50,50.00),(101,'civicrm_contribution',57,51,50.00),(102,'civicrm_financial_item',51,51,50.00),(103,'civicrm_contribution',58,52,50.00),(104,'civicrm_financial_item',52,52,50.00),(105,'civicrm_contribution',54,53,50.00),(106,'civicrm_financial_item',53,53,50.00),(107,'civicrm_contribution',67,54,50.00),(108,'civicrm_financial_item',54,54,50.00),(109,'civicrm_contribution',65,55,50.00),(110,'civicrm_financial_item',55,55,50.00),(111,'civicrm_contribution',72,56,50.00),(112,'civicrm_financial_item',56,56,50.00),(113,'civicrm_contribution',62,57,50.00),(114,'civicrm_financial_item',57,57,50.00),(115,'civicrm_contribution',49,58,50.00),(116,'civicrm_financial_item',58,58,50.00),(117,'civicrm_contribution',85,59,50.00),(118,'civicrm_financial_item',59,59,50.00),(119,'civicrm_contribution',60,60,800.00),(120,'civicrm_financial_item',60,60,800.00),(121,'civicrm_contribution',88,61,800.00),(122,'civicrm_financial_item',61,61,800.00),(123,'civicrm_contribution',80,62,800.00),(124,'civicrm_financial_item',62,62,800.00),(125,'civicrm_contribution',53,63,800.00),(126,'civicrm_financial_item',63,63,800.00),(127,'civicrm_contribution',52,64,800.00),(128,'civicrm_financial_item',64,64,800.00),(129,'civicrm_contribution',68,65,800.00),(130,'civicrm_financial_item',65,65,800.00),(131,'civicrm_contribution',83,66,800.00),(132,'civicrm_financial_item',66,66,800.00),(133,'civicrm_contribution',78,67,800.00),(134,'civicrm_financial_item',67,67,800.00),(135,'civicrm_contribution',64,68,800.00),(136,'civicrm_financial_item',68,68,800.00),(137,'civicrm_contribution',47,69,800.00),(138,'civicrm_financial_item',69,69,800.00),(139,'civicrm_contribution',70,70,800.00),(140,'civicrm_financial_item',70,70,800.00),(141,'civicrm_contribution',79,71,800.00),(142,'civicrm_financial_item',71,71,800.00),(143,'civicrm_contribution',61,72,800.00),(144,'civicrm_financial_item',72,72,800.00),(145,'civicrm_contribution',51,73,800.00),(146,'civicrm_financial_item',73,73,800.00),(147,'civicrm_contribution',48,74,800.00),(148,'civicrm_financial_item',74,74,800.00),(149,'civicrm_contribution',94,75,800.00),(150,'civicrm_financial_item',75,75,800.00),(151,'civicrm_contribution',77,76,800.00),(152,'civicrm_financial_item',76,76,800.00),(153,'civicrm_contribution',56,77,800.00),(154,'civicrm_financial_item',77,77,800.00),(155,'civicrm_contribution',74,78,50.00),(156,'civicrm_financial_item',78,78,50.00),(157,'civicrm_contribution',66,79,50.00),(158,'civicrm_financial_item',79,79,50.00),(159,'civicrm_contribution',63,80,50.00),(160,'civicrm_financial_item',80,80,50.00),(161,'civicrm_contribution',73,81,50.00),(162,'civicrm_financial_item',81,81,50.00),(163,'civicrm_contribution',75,82,50.00),(164,'civicrm_financial_item',82,82,50.00),(165,'civicrm_contribution',71,83,50.00),(166,'civicrm_financial_item',83,83,50.00),(167,'civicrm_contribution',81,84,50.00),(168,'civicrm_financial_item',84,84,50.00),(169,'civicrm_contribution',90,85,50.00),(170,'civicrm_financial_item',85,85,50.00),(171,'civicrm_contribution',55,86,50.00),(172,'civicrm_financial_item',86,86,50.00),(173,'civicrm_contribution',87,87,50.00),(174,'civicrm_financial_item',87,87,50.00),(175,'civicrm_contribution',46,88,50.00),(176,'civicrm_financial_item',88,88,50.00),(177,'civicrm_contribution',91,89,50.00),(178,'civicrm_financial_item',89,89,50.00),(179,'civicrm_contribution',92,90,50.00),(180,'civicrm_financial_item',90,90,50.00),(181,'civicrm_contribution',84,91,50.00),(182,'civicrm_financial_item',91,91,50.00),(183,'civicrm_contribution',50,92,50.00),(184,'civicrm_financial_item',92,92,50.00),(185,'civicrm_contribution',76,93,50.00),(186,'civicrm_financial_item',93,93,50.00); +INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, `financial_trxn_id`, `amount`) VALUES (1,'civicrm_contribution',1,1,125.00),(2,'civicrm_financial_item',1,1,125.00),(3,'civicrm_contribution',2,2,50.00),(4,'civicrm_financial_item',2,2,50.00),(5,'civicrm_contribution',3,3,25.00),(6,'civicrm_financial_item',3,3,25.00),(7,'civicrm_contribution',4,4,50.00),(8,'civicrm_financial_item',4,4,50.00),(9,'civicrm_contribution',5,5,500.00),(10,'civicrm_financial_item',5,5,500.00),(11,'civicrm_contribution',6,6,175.00),(12,'civicrm_financial_item',6,6,175.00),(13,'civicrm_contribution',7,7,50.00),(14,'civicrm_financial_item',7,7,50.00),(15,'civicrm_contribution',8,8,10.00),(16,'civicrm_financial_item',8,8,10.00),(17,'civicrm_contribution',9,9,250.00),(18,'civicrm_financial_item',9,9,250.00),(19,'civicrm_contribution',10,10,500.00),(20,'civicrm_financial_item',10,10,500.00),(21,'civicrm_contribution',11,11,200.00),(22,'civicrm_financial_item',11,11,200.00),(23,'civicrm_contribution',12,12,200.00),(24,'civicrm_financial_item',12,12,200.00),(25,'civicrm_contribution',13,13,200.00),(26,'civicrm_financial_item',13,13,200.00),(27,'civicrm_contribution',14,14,100.00),(28,'civicrm_financial_item',14,14,100.00),(29,'civicrm_contribution',15,15,100.00),(30,'civicrm_financial_item',15,15,100.00),(31,'civicrm_contribution',16,16,100.00),(32,'civicrm_financial_item',16,16,100.00),(33,'civicrm_contribution',17,17,100.00),(34,'civicrm_financial_item',17,17,100.00),(35,'civicrm_contribution',18,18,100.00),(36,'civicrm_financial_item',18,18,100.00),(37,'civicrm_contribution',19,19,100.00),(38,'civicrm_financial_item',19,19,100.00),(39,'civicrm_contribution',20,20,100.00),(40,'civicrm_financial_item',20,20,100.00),(41,'civicrm_contribution',21,21,100.00),(42,'civicrm_financial_item',21,21,100.00),(43,'civicrm_contribution',22,22,100.00),(44,'civicrm_financial_item',22,22,100.00),(45,'civicrm_contribution',23,23,100.00),(46,'civicrm_financial_item',23,23,100.00),(47,'civicrm_contribution',24,24,100.00),(48,'civicrm_financial_item',24,24,100.00),(49,'civicrm_contribution',25,25,100.00),(50,'civicrm_financial_item',25,25,100.00),(51,'civicrm_contribution',26,26,100.00),(52,'civicrm_financial_item',26,26,100.00),(53,'civicrm_contribution',27,27,100.00),(54,'civicrm_financial_item',27,27,100.00),(55,'civicrm_contribution',28,28,100.00),(56,'civicrm_financial_item',28,28,100.00),(57,'civicrm_contribution',29,29,50.00),(58,'civicrm_financial_item',29,29,50.00),(59,'civicrm_contribution',30,30,50.00),(60,'civicrm_financial_item',30,30,50.00),(61,'civicrm_contribution',31,31,50.00),(62,'civicrm_financial_item',31,31,50.00),(63,'civicrm_contribution',32,32,50.00),(64,'civicrm_financial_item',32,32,50.00),(65,'civicrm_contribution',33,33,50.00),(66,'civicrm_financial_item',33,33,50.00),(67,'civicrm_contribution',34,34,50.00),(68,'civicrm_financial_item',34,34,50.00),(69,'civicrm_contribution',35,35,50.00),(70,'civicrm_financial_item',35,35,50.00),(71,'civicrm_contribution',36,36,50.00),(72,'civicrm_financial_item',36,36,50.00),(73,'civicrm_contribution',37,37,50.00),(74,'civicrm_financial_item',37,37,50.00),(75,'civicrm_contribution',38,38,50.00),(76,'civicrm_financial_item',38,38,50.00),(77,'civicrm_contribution',39,39,50.00),(78,'civicrm_financial_item',39,39,50.00),(79,'civicrm_contribution',40,40,50.00),(80,'civicrm_financial_item',40,40,50.00),(81,'civicrm_contribution',41,41,50.00),(82,'civicrm_financial_item',41,41,50.00),(83,'civicrm_contribution',42,42,1200.00),(84,'civicrm_financial_item',42,42,1200.00),(85,'civicrm_contribution',43,43,1200.00),(86,'civicrm_financial_item',43,43,1200.00),(87,'civicrm_contribution',86,44,50.00),(88,'civicrm_financial_item',44,44,50.00),(89,'civicrm_contribution',64,45,50.00),(90,'civicrm_financial_item',45,45,50.00),(91,'civicrm_contribution',59,46,50.00),(92,'civicrm_financial_item',46,46,50.00),(93,'civicrm_contribution',81,47,50.00),(94,'civicrm_financial_item',47,47,50.00),(95,'civicrm_contribution',76,48,50.00),(96,'civicrm_financial_item',48,48,50.00),(97,'civicrm_contribution',92,49,50.00),(98,'civicrm_financial_item',49,49,50.00),(99,'civicrm_contribution',66,50,50.00),(100,'civicrm_financial_item',50,50,50.00),(101,'civicrm_contribution',70,51,50.00),(102,'civicrm_financial_item',51,51,50.00),(103,'civicrm_contribution',49,52,50.00),(104,'civicrm_financial_item',52,52,50.00),(105,'civicrm_contribution',77,53,50.00),(106,'civicrm_financial_item',53,53,50.00),(107,'civicrm_contribution',79,54,50.00),(108,'civicrm_financial_item',54,54,50.00),(109,'civicrm_contribution',78,55,50.00),(110,'civicrm_financial_item',55,55,50.00),(111,'civicrm_contribution',48,56,50.00),(112,'civicrm_financial_item',56,56,50.00),(113,'civicrm_contribution',93,57,50.00),(114,'civicrm_financial_item',57,57,50.00),(115,'civicrm_contribution',68,58,50.00),(116,'civicrm_financial_item',58,58,50.00),(117,'civicrm_contribution',72,59,50.00),(118,'civicrm_financial_item',59,59,50.00),(119,'civicrm_contribution',67,60,800.00),(120,'civicrm_financial_item',60,60,800.00),(121,'civicrm_contribution',83,61,800.00),(122,'civicrm_financial_item',61,61,800.00),(123,'civicrm_contribution',62,62,800.00),(124,'civicrm_financial_item',62,62,800.00),(125,'civicrm_contribution',54,63,800.00),(126,'civicrm_financial_item',63,63,800.00),(127,'civicrm_contribution',47,64,800.00),(128,'civicrm_financial_item',64,64,800.00),(129,'civicrm_contribution',84,65,800.00),(130,'civicrm_financial_item',65,65,800.00),(131,'civicrm_contribution',55,66,800.00),(132,'civicrm_financial_item',66,66,800.00),(133,'civicrm_contribution',52,67,800.00),(134,'civicrm_financial_item',67,67,800.00),(135,'civicrm_contribution',90,68,800.00),(136,'civicrm_financial_item',68,68,800.00),(137,'civicrm_contribution',89,69,800.00),(138,'civicrm_financial_item',69,69,800.00),(139,'civicrm_contribution',46,70,800.00),(140,'civicrm_financial_item',70,70,800.00),(141,'civicrm_contribution',61,71,800.00),(142,'civicrm_financial_item',71,71,800.00),(143,'civicrm_contribution',57,72,800.00),(144,'civicrm_financial_item',72,72,800.00),(145,'civicrm_contribution',94,73,800.00),(146,'civicrm_financial_item',73,73,800.00),(147,'civicrm_contribution',80,74,800.00),(148,'civicrm_financial_item',74,74,800.00),(149,'civicrm_contribution',63,75,800.00),(150,'civicrm_financial_item',75,75,800.00),(151,'civicrm_contribution',75,76,800.00),(152,'civicrm_financial_item',76,76,800.00),(153,'civicrm_contribution',73,77,800.00),(154,'civicrm_financial_item',77,77,800.00),(155,'civicrm_contribution',82,78,50.00),(156,'civicrm_financial_item',78,78,50.00),(157,'civicrm_contribution',71,79,50.00),(158,'civicrm_financial_item',79,79,50.00),(159,'civicrm_contribution',87,80,50.00),(160,'civicrm_financial_item',80,80,50.00),(161,'civicrm_contribution',88,81,50.00),(162,'civicrm_financial_item',81,81,50.00),(163,'civicrm_contribution',60,82,50.00),(164,'civicrm_financial_item',82,82,50.00),(165,'civicrm_contribution',74,83,50.00),(166,'civicrm_financial_item',83,83,50.00),(167,'civicrm_contribution',45,84,50.00),(168,'civicrm_financial_item',84,84,50.00),(169,'civicrm_contribution',58,85,50.00),(170,'civicrm_financial_item',85,85,50.00),(171,'civicrm_contribution',50,86,50.00),(172,'civicrm_financial_item',86,86,50.00),(173,'civicrm_contribution',53,87,50.00),(174,'civicrm_financial_item',87,87,50.00),(175,'civicrm_contribution',56,88,50.00),(176,'civicrm_financial_item',88,88,50.00),(177,'civicrm_contribution',85,89,50.00),(178,'civicrm_financial_item',89,89,50.00),(179,'civicrm_contribution',51,90,50.00),(180,'civicrm_financial_item',90,90,50.00),(181,'civicrm_contribution',69,91,50.00),(182,'civicrm_financial_item',91,91,50.00),(183,'civicrm_contribution',65,92,50.00),(184,'civicrm_financial_item',92,92,50.00),(185,'civicrm_contribution',91,93,50.00),(186,'civicrm_financial_item',93,93,50.00); /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -457,7 +457,7 @@ 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 (46,'civicrm_contact',7,4),(73,'civicrm_contact',11,4),(79,'civicrm_contact',14,4),(17,'civicrm_contact',15,4),(18,'civicrm_contact',15,5),(40,'civicrm_contact',16,5),(52,'civicrm_contact',21,4),(53,'civicrm_contact',21,5),(24,'civicrm_contact',22,5),(3,'civicrm_contact',23,1),(44,'civicrm_contact',24,4),(45,'civicrm_contact',24,5),(27,'civicrm_contact',26,5),(47,'civicrm_contact',28,5),(7,'civicrm_contact',31,2),(30,'civicrm_contact',34,5),(16,'civicrm_contact',37,4),(9,'civicrm_contact',39,1),(38,'civicrm_contact',41,4),(28,'civicrm_contact',44,5),(29,'civicrm_contact',47,5),(11,'civicrm_contact',50,4),(5,'civicrm_contact',55,2),(14,'civicrm_contact',56,5),(90,'civicrm_contact',58,5),(93,'civicrm_contact',59,4),(58,'civicrm_contact',62,5),(6,'civicrm_contact',63,3),(94,'civicrm_contact',64,5),(31,'civicrm_contact',66,4),(32,'civicrm_contact',66,5),(74,'civicrm_contact',67,4),(12,'civicrm_contact',71,5),(111,'civicrm_contact',72,4),(112,'civicrm_contact',72,5),(84,'civicrm_contact',77,5),(59,'civicrm_contact',78,4),(60,'civicrm_contact',78,5),(4,'civicrm_contact',82,2),(64,'civicrm_contact',84,4),(65,'civicrm_contact',84,5),(61,'civicrm_contact',86,5),(75,'civicrm_contact',88,4),(15,'civicrm_contact',91,5),(50,'civicrm_contact',93,4),(51,'civicrm_contact',93,5),(99,'civicrm_contact',94,4),(8,'civicrm_contact',95,3),(97,'civicrm_contact',96,4),(98,'civicrm_contact',96,5),(22,'civicrm_contact',99,4),(23,'civicrm_contact',99,5),(42,'civicrm_contact',103,5),(91,'civicrm_contact',107,4),(25,'civicrm_contact',108,4),(26,'civicrm_contact',108,5),(72,'civicrm_contact',109,4),(13,'civicrm_contact',110,4),(109,'civicrm_contact',113,5),(19,'civicrm_contact',115,4),(33,'civicrm_contact',119,4),(77,'civicrm_contact',125,4),(2,'civicrm_contact',127,2),(41,'civicrm_contact',128,4),(55,'civicrm_contact',129,4),(56,'civicrm_contact',129,5),(70,'civicrm_contact',132,4),(71,'civicrm_contact',132,5),(104,'civicrm_contact',133,4),(85,'civicrm_contact',139,5),(36,'civicrm_contact',142,5),(110,'civicrm_contact',148,5),(43,'civicrm_contact',149,4),(86,'civicrm_contact',150,4),(87,'civicrm_contact',150,5),(83,'civicrm_contact',151,4),(54,'civicrm_contact',152,4),(100,'civicrm_contact',153,4),(101,'civicrm_contact',153,5),(108,'civicrm_contact',154,4),(48,'civicrm_contact',158,5),(34,'civicrm_contact',159,4),(35,'civicrm_contact',159,5),(62,'civicrm_contact',162,4),(63,'civicrm_contact',162,5),(80,'civicrm_contact',163,4),(37,'civicrm_contact',164,4),(68,'civicrm_contact',165,4),(69,'civicrm_contact',165,5),(78,'civicrm_contact',166,4),(103,'civicrm_contact',169,4),(107,'civicrm_contact',170,5),(92,'civicrm_contact',173,5),(88,'civicrm_contact',174,4),(89,'civicrm_contact',174,5),(66,'civicrm_contact',180,4),(67,'civicrm_contact',180,5),(10,'civicrm_contact',182,3),(106,'civicrm_contact',184,4),(57,'civicrm_contact',185,5),(39,'civicrm_contact',188,4),(81,'civicrm_contact',189,4),(82,'civicrm_contact',189,5),(102,'civicrm_contact',191,4),(1,'civicrm_contact',192,3),(113,'civicrm_contact',195,4),(114,'civicrm_contact',195,5),(105,'civicrm_contact',197,4),(20,'civicrm_contact',198,4),(21,'civicrm_contact',198,5),(49,'civicrm_contact',199,4),(76,'civicrm_contact',200,4),(95,'civicrm_contact',201,4),(96,'civicrm_contact',201,5); +INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES (58,'civicrm_contact',6,4),(59,'civicrm_contact',6,5),(40,'civicrm_contact',8,5),(101,'civicrm_contact',10,5),(6,'civicrm_contact',14,3),(18,'civicrm_contact',15,4),(19,'civicrm_contact',15,5),(13,'civicrm_contact',17,5),(108,'civicrm_contact',20,4),(55,'civicrm_contact',23,5),(121,'civicrm_contact',25,5),(88,'civicrm_contact',28,4),(49,'civicrm_contact',30,4),(50,'civicrm_contact',30,5),(79,'civicrm_contact',34,4),(115,'civicrm_contact',36,4),(116,'civicrm_contact',36,5),(75,'civicrm_contact',40,4),(113,'civicrm_contact',42,4),(114,'civicrm_contact',42,5),(62,'civicrm_contact',44,4),(10,'civicrm_contact',46,1),(47,'civicrm_contact',55,4),(80,'civicrm_contact',59,4),(45,'civicrm_contact',60,4),(46,'civicrm_contact',60,5),(5,'civicrm_contact',62,3),(96,'civicrm_contact',63,4),(97,'civicrm_contact',63,5),(48,'civicrm_contact',64,4),(25,'civicrm_contact',66,4),(26,'civicrm_contact',66,5),(29,'civicrm_contact',67,5),(119,'civicrm_contact',69,4),(120,'civicrm_contact',69,5),(41,'civicrm_contact',71,5),(68,'civicrm_contact',74,5),(24,'civicrm_contact',76,4),(104,'civicrm_contact',78,4),(105,'civicrm_contact',78,5),(9,'civicrm_contact',79,3),(61,'civicrm_contact',80,5),(16,'civicrm_contact',81,4),(17,'civicrm_contact',81,5),(84,'civicrm_contact',82,5),(4,'civicrm_contact',86,1),(53,'civicrm_contact',87,4),(54,'civicrm_contact',87,5),(110,'civicrm_contact',89,5),(8,'civicrm_contact',91,1),(56,'civicrm_contact',93,4),(57,'civicrm_contact',93,5),(85,'civicrm_contact',94,4),(36,'civicrm_contact',97,4),(14,'civicrm_contact',99,4),(15,'civicrm_contact',99,5),(95,'civicrm_contact',103,5),(111,'civicrm_contact',104,4),(2,'civicrm_contact',105,1),(98,'civicrm_contact',107,5),(92,'civicrm_contact',108,4),(93,'civicrm_contact',108,5),(99,'civicrm_contact',114,4),(100,'civicrm_contact',114,5),(7,'civicrm_contact',117,1),(22,'civicrm_contact',120,4),(23,'civicrm_contact',120,5),(112,'civicrm_contact',121,4),(34,'civicrm_contact',122,5),(42,'civicrm_contact',123,4),(43,'civicrm_contact',123,5),(12,'civicrm_contact',124,5),(71,'civicrm_contact',126,4),(72,'civicrm_contact',126,5),(32,'civicrm_contact',129,4),(33,'civicrm_contact',129,5),(78,'civicrm_contact',134,5),(106,'civicrm_contact',135,4),(107,'civicrm_contact',135,5),(66,'civicrm_contact',139,5),(102,'civicrm_contact',140,5),(89,'civicrm_contact',141,4),(90,'civicrm_contact',141,5),(1,'civicrm_contact',142,3),(37,'civicrm_contact',143,5),(82,'civicrm_contact',147,4),(83,'civicrm_contact',147,5),(3,'civicrm_contact',148,3),(91,'civicrm_contact',152,5),(35,'civicrm_contact',154,4),(94,'civicrm_contact',155,5),(51,'civicrm_contact',156,4),(52,'civicrm_contact',156,5),(122,'civicrm_contact',158,4),(69,'civicrm_contact',159,4),(70,'civicrm_contact',159,5),(44,'civicrm_contact',161,5),(21,'civicrm_contact',164,4),(64,'civicrm_contact',165,4),(65,'civicrm_contact',165,5),(63,'civicrm_contact',166,5),(27,'civicrm_contact',167,4),(11,'civicrm_contact',169,5),(117,'civicrm_contact',171,4),(118,'civicrm_contact',171,5),(67,'civicrm_contact',172,5),(60,'civicrm_contact',176,4),(20,'civicrm_contact',179,5),(30,'civicrm_contact',183,4),(31,'civicrm_contact',183,5),(38,'civicrm_contact',186,4),(39,'civicrm_contact',186,5),(103,'civicrm_contact',187,4),(28,'civicrm_contact',190,5),(81,'civicrm_contact',191,5),(76,'civicrm_contact',192,4),(77,'civicrm_contact',192,5),(109,'civicrm_contact',194,4),(86,'civicrm_contact',195,4),(87,'civicrm_contact',195,5),(73,'civicrm_contact',198,4),(74,'civicrm_contact',198,5); /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -467,7 +467,7 @@ 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,'2020-12-10 17:00:00','2020-12-12 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,NULL,NULL,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,'2020-06-09 12:00:00','2020-06-09 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,NULL,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,NULL,NULL,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,'2021-01-10 07:00:00','2021-01-13 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,NULL,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,NULL,NULL,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,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,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,NULL,NULL,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,NULL,NULL,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0); +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,'2021-01-24 17:00:00','2021-01-26 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,NULL,NULL,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,'2020-07-23 12:00:00','2020-07-23 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,NULL,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,NULL,NULL,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,'2021-02-24 07:00:00','2021-02-27 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,NULL,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,NULL,NULL,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,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,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,NULL,NULL,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,NULL,NULL,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0); /*!40000 ALTER TABLE `civicrm_event` ENABLE KEYS */; UNLOCK TABLES; @@ -495,7 +495,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_extension` WRITE; /*!40000 ALTER TABLE `civicrm_extension` DISABLE KEYS */; -INSERT INTO `civicrm_extension` (`id`, `type`, `full_name`, `name`, `label`, `file`, `schema_version`, `is_active`) VALUES (1,'module','sequentialcreditnotes','Sequential credit notes','Sequential credit notes','sequentialcreditnotes',NULL,1); +INSERT INTO `civicrm_extension` (`id`, `type`, `full_name`, `name`, `label`, `file`, `schema_version`, `is_active`) VALUES (1,'module','sequentialcreditnotes','Sequential credit notes','Sequential credit notes','sequentialcreditnotes',NULL,1),(2,'module','eventcart','Event cart','Event cart','eventcart',NULL,1); /*!40000 ALTER TABLE `civicrm_extension` ENABLE KEYS */; UNLOCK TABLES; @@ -524,7 +524,7 @@ 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,'2020-06-10 02:45:52','2010-04-11 00:00:00',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),(2,'2020-06-10 02:45:52','2010-03-21 00:00:00',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),(3,'2020-06-10 02:45:52','2010-04-29 00:00:00',6,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',3),(4,'2020-06-10 02:45:52','2010-04-11 00:00:00',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),(5,'2020-06-10 02:45:52','2010-04-15 00:00:00',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',5),(6,'2020-06-10 02:45:52','2010-04-11 00:00:00',19,'Contribution Amount',175.00,'USD',1,1,'civicrm_line_item',6),(7,'2020-06-10 02:45:52','2010-03-27 00:00:00',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',7),(8,'2020-06-10 02:45:52','2010-03-08 00:00:00',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',8),(9,'2020-06-10 02:45:52','2010-04-22 00:00:00',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',9),(10,'2020-06-10 02:45:52','2009-07-01 11:53:50',71,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',10),(11,'2020-06-10 02:45:52','2009-07-01 12:55:41',43,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',11),(12,'2020-06-10 02:45:52','2009-10-01 11:53:50',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',12),(13,'2020-06-10 02:45:52','2009-12-01 12:55:41',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',13),(14,'2020-06-10 02:45:53','2020-06-10 14:45:52',158,'General',100.00,'USD',2,1,'civicrm_line_item',16),(15,'2020-06-10 02:45:53','2020-06-10 14:45:52',9,'General',100.00,'USD',2,1,'civicrm_line_item',17),(16,'2020-06-10 02:45:53','2020-06-10 14:45:52',154,'General',100.00,'USD',2,1,'civicrm_line_item',18),(17,'2020-06-10 02:45:53','2020-06-10 14:45:52',59,'General',100.00,'USD',2,1,'civicrm_line_item',19),(18,'2020-06-10 02:45:53','2020-06-10 14:45:52',52,'General',100.00,'USD',2,1,'civicrm_line_item',20),(19,'2020-06-10 02:45:53','2020-06-10 14:45:52',185,'General',100.00,'USD',2,1,'civicrm_line_item',21),(20,'2020-06-10 02:45:53','2020-06-10 14:45:52',73,'General',100.00,'USD',2,1,'civicrm_line_item',22),(21,'2020-06-10 02:45:53','2020-06-10 14:45:52',12,'General',100.00,'USD',2,1,'civicrm_line_item',23),(22,'2020-06-10 02:45:53','2020-06-10 14:45:52',41,'General',100.00,'USD',2,1,'civicrm_line_item',24),(23,'2020-06-10 02:45:53','2020-06-10 14:45:52',18,'General',100.00,'USD',2,1,'civicrm_line_item',25),(24,'2020-06-10 02:45:53','2020-06-10 14:45:52',126,'General',100.00,'USD',2,1,'civicrm_line_item',26),(25,'2020-06-10 02:45:53','2020-06-10 14:45:52',4,'General',100.00,'USD',2,1,'civicrm_line_item',27),(26,'2020-06-10 02:45:53','2020-06-10 14:45:52',92,'General',100.00,'USD',2,1,'civicrm_line_item',28),(27,'2020-06-10 02:45:53','2020-06-10 14:45:52',62,'General',100.00,'USD',2,1,'civicrm_line_item',29),(28,'2020-06-10 02:45:53','2020-06-10 14:45:52',117,'General',100.00,'USD',2,1,'civicrm_line_item',30),(29,'2020-06-10 02:45:53','2020-06-10 14:45:52',164,'Student',50.00,'USD',2,1,'civicrm_line_item',31),(30,'2020-06-10 02:45:53','2020-06-10 14:45:52',174,'Student',50.00,'USD',2,1,'civicrm_line_item',32),(31,'2020-06-10 02:45:53','2020-06-10 14:45:52',173,'Student',50.00,'USD',2,1,'civicrm_line_item',33),(32,'2020-06-10 02:45:53','2020-06-10 14:45:52',109,'Student',50.00,'USD',2,1,'civicrm_line_item',34),(33,'2020-06-10 02:45:53','2020-06-10 14:45:52',10,'Student',50.00,'USD',2,1,'civicrm_line_item',35),(34,'2020-06-10 02:45:53','2020-06-10 14:45:52',190,'Student',50.00,'USD',2,1,'civicrm_line_item',36),(35,'2020-06-10 02:45:53','2020-06-10 14:45:52',110,'Student',50.00,'USD',2,1,'civicrm_line_item',37),(36,'2020-06-10 02:45:53','2020-06-10 14:45:52',81,'Student',50.00,'USD',2,1,'civicrm_line_item',38),(37,'2020-06-10 02:45:53','2020-06-10 14:45:52',112,'Student',50.00,'USD',2,1,'civicrm_line_item',39),(38,'2020-06-10 02:45:53','2020-06-10 14:45:52',15,'Student',50.00,'USD',2,1,'civicrm_line_item',40),(39,'2020-06-10 02:45:53','2020-06-10 14:45:52',134,'Student',50.00,'USD',2,1,'civicrm_line_item',41),(40,'2020-06-10 02:45:53','2020-06-10 14:45:52',32,'Student',50.00,'USD',2,1,'civicrm_line_item',42),(41,'2020-06-10 02:45:53','2020-06-10 14:45:52',107,'Student',50.00,'USD',2,1,'civicrm_line_item',43),(42,'2020-06-10 02:45:53','2020-06-10 14:45:52',147,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',44),(43,'2020-06-10 02:45:53','2020-06-10 14:45:52',98,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',45),(44,'2020-06-10 02:45:53','2020-06-10 14:45:52',57,'Soprano',50.00,'USD',2,1,'civicrm_line_item',81),(45,'2020-06-10 02:45:53','2020-06-10 14:45:52',113,'Soprano',50.00,'USD',2,1,'civicrm_line_item',82),(46,'2020-06-10 02:45:53','2020-06-10 14:45:52',171,'Soprano',50.00,'USD',2,1,'civicrm_line_item',83),(47,'2020-06-10 02:45:53','2020-06-10 14:45:52',1,'Soprano',50.00,'USD',2,1,'civicrm_line_item',84),(48,'2020-06-10 02:45:53','2020-06-10 14:45:52',198,'Soprano',50.00,'USD',2,1,'civicrm_line_item',85),(49,'2020-06-10 02:45:53','2020-06-10 14:45:52',159,'Soprano',50.00,'USD',2,1,'civicrm_line_item',86),(50,'2020-06-10 02:45:53','2020-06-10 14:45:52',180,'Soprano',50.00,'USD',2,1,'civicrm_line_item',87),(51,'2020-06-10 02:45:53','2020-06-10 14:45:52',51,'Soprano',50.00,'USD',2,1,'civicrm_line_item',88),(52,'2020-06-10 02:45:53','2020-06-10 14:45:52',52,'Soprano',50.00,'USD',2,1,'civicrm_line_item',89),(53,'2020-06-10 02:45:53','2020-06-10 14:45:52',27,'Soprano',50.00,'USD',2,1,'civicrm_line_item',90),(54,'2020-06-10 02:45:53','2020-06-10 14:45:52',83,'Soprano',50.00,'USD',2,1,'civicrm_line_item',91),(55,'2020-06-10 02:45:53','2020-06-10 14:45:52',75,'Soprano',50.00,'USD',2,1,'civicrm_line_item',92),(56,'2020-06-10 02:45:53','2020-06-10 14:45:52',121,'Soprano',50.00,'USD',2,1,'civicrm_line_item',93),(57,'2020-06-10 02:45:53','2020-06-10 14:45:52',68,'Soprano',50.00,'USD',2,1,'civicrm_line_item',94),(58,'2020-06-10 02:45:53','2020-06-10 14:45:52',11,'Soprano',50.00,'USD',2,1,'civicrm_line_item',95),(59,'2020-06-10 02:45:53','2020-06-10 14:45:52',164,'Soprano',50.00,'USD',2,1,'civicrm_line_item',96),(60,'2020-06-10 02:45:53','2020-06-10 14:45:52',59,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',47),(61,'2020-06-10 02:45:53','2020-06-10 14:45:52',177,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',48),(62,'2020-06-10 02:45:53','2020-06-10 14:45:52',152,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',49),(63,'2020-06-10 02:45:53','2020-06-10 14:45:52',23,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',50),(64,'2020-06-10 02:45:53','2020-06-10 14:45:52',20,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',51),(65,'2020-06-10 02:45:53','2020-06-10 14:45:52',110,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',52),(66,'2020-06-10 02:45:53','2020-06-10 14:45:52',161,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',53),(67,'2020-06-10 02:45:53','2020-06-10 14:45:52',146,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',54),(68,'2020-06-10 02:45:53','2020-06-10 14:45:52',74,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',55),(69,'2020-06-10 02:45:53','2020-06-10 14:45:52',4,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',56),(70,'2020-06-10 02:45:53','2020-06-10 14:45:52',118,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',57),(71,'2020-06-10 02:45:53','2020-06-10 14:45:52',151,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',58),(72,'2020-06-10 02:45:53','2020-06-10 14:45:52',61,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',59),(73,'2020-06-10 02:45:53','2020-06-10 14:45:52',18,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',60),(74,'2020-06-10 02:45:53','2020-06-10 14:45:52',7,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',61),(75,'2020-06-10 02:45:53','2020-06-10 14:45:52',199,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',62),(76,'2020-06-10 02:45:53','2020-06-10 14:45:52',142,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),(77,'2020-06-10 02:45:53','2020-06-10 14:45:52',33,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),(78,'2020-06-10 02:45:53','2020-06-10 14:45:52',134,'Single',50.00,'USD',4,1,'civicrm_line_item',65),(79,'2020-06-10 02:45:53','2020-06-10 14:45:52',76,'Single',50.00,'USD',4,1,'civicrm_line_item',66),(80,'2020-06-10 02:45:53','2020-06-10 14:45:52',70,'Single',50.00,'USD',4,1,'civicrm_line_item',67),(81,'2020-06-10 02:45:53','2020-06-10 14:45:52',124,'Single',50.00,'USD',4,1,'civicrm_line_item',68),(82,'2020-06-10 02:45:53','2020-06-10 14:45:52',139,'Single',50.00,'USD',4,1,'civicrm_line_item',69),(83,'2020-06-10 02:45:53','2020-06-10 14:45:52',119,'Single',50.00,'USD',4,1,'civicrm_line_item',70),(84,'2020-06-10 02:45:53','2020-06-10 14:45:52',154,'Single',50.00,'USD',4,1,'civicrm_line_item',71),(85,'2020-06-10 02:45:53','2020-06-10 14:45:52',183,'Single',50.00,'USD',4,1,'civicrm_line_item',72),(86,'2020-06-10 02:45:53','2020-06-10 14:45:52',30,'Single',50.00,'USD',4,1,'civicrm_line_item',73),(87,'2020-06-10 02:45:53','2020-06-10 14:45:52',173,'Single',50.00,'USD',4,1,'civicrm_line_item',74),(88,'2020-06-10 02:45:53','2020-06-10 14:45:52',3,'Single',50.00,'USD',4,1,'civicrm_line_item',75),(89,'2020-06-10 02:45:53','2020-06-10 14:45:52',188,'Single',50.00,'USD',4,1,'civicrm_line_item',76),(90,'2020-06-10 02:45:53','2020-06-10 14:45:52',197,'Single',50.00,'USD',4,1,'civicrm_line_item',77),(91,'2020-06-10 02:45:53','2020-06-10 14:45:52',162,'Single',50.00,'USD',4,1,'civicrm_line_item',78),(92,'2020-06-10 02:45:53','2020-06-10 14:45:52',12,'Single',50.00,'USD',4,1,'civicrm_line_item',79),(93,'2020-06-10 02:45:53','2020-06-10 14:45:52',141,'Single',50.00,'USD',4,1,'civicrm_line_item',80); +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,'2020-07-24 05:34:04','2010-04-11 00:00:00',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),(2,'2020-07-24 05:34:04','2010-03-21 00:00:00',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),(3,'2020-07-24 05:34:04','2010-04-29 00:00:00',6,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',3),(4,'2020-07-24 05:34:04','2010-04-11 00:00:00',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),(5,'2020-07-24 05:34:04','2010-04-15 00:00:00',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',5),(6,'2020-07-24 05:34:04','2010-04-11 00:00:00',19,'Contribution Amount',175.00,'USD',1,1,'civicrm_line_item',6),(7,'2020-07-24 05:34:04','2010-03-27 00:00:00',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',7),(8,'2020-07-24 05:34:04','2010-03-08 00:00:00',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',8),(9,'2020-07-24 05:34:04','2010-04-22 00:00:00',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',9),(10,'2020-07-24 05:34:04','2009-07-01 11:53:50',71,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',10),(11,'2020-07-24 05:34:04','2009-07-01 12:55:41',43,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',11),(12,'2020-07-24 05:34:04','2009-10-01 11:53:50',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',12),(13,'2020-07-24 05:34:04','2009-12-01 12:55:41',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',13),(14,'2020-07-24 05:34:04','2020-07-24 15:34:04',103,'General',100.00,'USD',2,1,'civicrm_line_item',16),(15,'2020-07-24 05:34:04','2020-07-24 15:34:04',179,'General',100.00,'USD',2,1,'civicrm_line_item',17),(16,'2020-07-24 05:34:04','2020-07-24 15:34:04',12,'General',100.00,'USD',2,1,'civicrm_line_item',18),(17,'2020-07-24 05:34:04','2020-07-24 15:34:04',173,'General',100.00,'USD',2,1,'civicrm_line_item',19),(18,'2020-07-24 05:34:04','2020-07-24 15:34:04',127,'General',100.00,'USD',2,1,'civicrm_line_item',20),(19,'2020-07-24 05:34:04','2020-07-24 15:34:04',63,'General',100.00,'USD',2,1,'civicrm_line_item',21),(20,'2020-07-24 05:34:04','2020-07-24 15:34:04',188,'General',100.00,'USD',2,1,'civicrm_line_item',22),(21,'2020-07-24 05:34:04','2020-07-24 15:34:04',80,'General',100.00,'USD',2,1,'civicrm_line_item',23),(22,'2020-07-24 05:34:04','2020-07-24 15:34:04',131,'General',100.00,'USD',2,1,'civicrm_line_item',24),(23,'2020-07-24 05:34:04','2020-07-24 15:34:04',161,'General',100.00,'USD',2,1,'civicrm_line_item',25),(24,'2020-07-24 05:34:04','2020-07-24 15:34:04',41,'General',100.00,'USD',2,1,'civicrm_line_item',26),(25,'2020-07-24 05:34:04','2020-07-24 15:34:04',20,'General',100.00,'USD',2,1,'civicrm_line_item',27),(26,'2020-07-24 05:34:04','2020-07-24 15:34:04',195,'General',100.00,'USD',2,1,'civicrm_line_item',28),(27,'2020-07-24 05:34:04','2020-07-24 15:34:04',164,'General',100.00,'USD',2,1,'civicrm_line_item',29),(28,'2020-07-24 05:34:04','2020-07-24 15:34:04',78,'General',100.00,'USD',2,1,'civicrm_line_item',30),(29,'2020-07-24 05:34:04','2020-07-24 15:34:04',132,'Student',50.00,'USD',2,1,'civicrm_line_item',31),(30,'2020-07-24 05:34:04','2020-07-24 15:34:04',5,'Student',50.00,'USD',2,1,'civicrm_line_item',32),(31,'2020-07-24 05:34:04','2020-07-24 15:34:04',108,'Student',50.00,'USD',2,1,'civicrm_line_item',33),(32,'2020-07-24 05:34:04','2020-07-24 15:34:04',39,'Student',50.00,'USD',2,1,'civicrm_line_item',34),(33,'2020-07-24 05:34:04','2020-07-24 15:34:04',159,'Student',50.00,'USD',2,1,'civicrm_line_item',35),(34,'2020-07-24 05:34:04','2020-07-24 15:34:04',67,'Student',50.00,'USD',2,1,'civicrm_line_item',36),(35,'2020-07-24 05:34:04','2020-07-24 15:34:04',17,'Student',50.00,'USD',2,1,'civicrm_line_item',37),(36,'2020-07-24 05:34:04','2020-07-24 15:34:04',7,'Student',50.00,'USD',2,1,'civicrm_line_item',38),(37,'2020-07-24 05:34:05','2020-07-24 15:34:04',95,'Student',50.00,'USD',2,1,'civicrm_line_item',39),(38,'2020-07-24 05:34:05','2020-07-24 15:34:04',134,'Student',50.00,'USD',2,1,'civicrm_line_item',40),(39,'2020-07-24 05:34:05','2020-07-24 15:34:04',74,'Student',50.00,'USD',2,1,'civicrm_line_item',41),(40,'2020-07-24 05:34:05','2020-07-24 15:34:04',13,'Student',50.00,'USD',2,1,'civicrm_line_item',42),(41,'2020-07-24 05:34:05','2020-07-24 15:34:04',156,'Student',50.00,'USD',2,1,'civicrm_line_item',43),(42,'2020-07-24 05:34:05','2020-07-24 15:34:04',145,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',44),(43,'2020-07-24 05:34:05','2020-07-24 15:34:04',99,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',45),(44,'2020-07-24 05:34:05','2020-07-24 15:34:04',167,'Soprano',50.00,'USD',2,1,'civicrm_line_item',81),(45,'2020-07-24 05:34:05','2020-07-24 15:34:04',73,'Soprano',50.00,'USD',2,1,'civicrm_line_item',82),(46,'2020-07-24 05:34:05','2020-07-24 15:34:04',56,'Soprano',50.00,'USD',2,1,'civicrm_line_item',83),(47,'2020-07-24 05:34:05','2020-07-24 15:34:04',133,'Soprano',50.00,'USD',2,1,'civicrm_line_item',84),(48,'2020-07-24 05:34:05','2020-07-24 15:34:04',111,'Soprano',50.00,'USD',2,1,'civicrm_line_item',85),(49,'2020-07-24 05:34:05','2020-07-24 15:34:04',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',86),(50,'2020-07-24 05:34:05','2020-07-24 15:34:04',94,'Soprano',50.00,'USD',2,1,'civicrm_line_item',87),(51,'2020-07-24 05:34:05','2020-07-24 15:34:04',102,'Soprano',50.00,'USD',2,1,'civicrm_line_item',88),(52,'2020-07-24 05:34:05','2020-07-24 15:34:04',19,'Soprano',50.00,'USD',2,1,'civicrm_line_item',89),(53,'2020-07-24 05:34:05','2020-07-24 15:34:04',114,'Soprano',50.00,'USD',2,1,'civicrm_line_item',90),(54,'2020-07-24 05:34:05','2020-07-24 15:34:04',129,'Soprano',50.00,'USD',2,1,'civicrm_line_item',91),(55,'2020-07-24 05:34:05','2020-07-24 15:34:04',120,'Soprano',50.00,'USD',2,1,'civicrm_line_item',92),(56,'2020-07-24 05:34:05','2020-07-24 15:34:04',18,'Soprano',50.00,'USD',2,1,'civicrm_line_item',93),(57,'2020-07-24 05:34:05','2020-07-24 15:34:04',196,'Soprano',50.00,'USD',2,1,'civicrm_line_item',94),(58,'2020-07-24 05:34:05','2020-07-24 15:34:04',98,'Soprano',50.00,'USD',2,1,'civicrm_line_item',95),(59,'2020-07-24 05:34:05','2020-07-24 15:34:04',105,'Soprano',50.00,'USD',2,1,'civicrm_line_item',96),(60,'2020-07-24 05:34:05','2020-07-24 15:34:04',95,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',47),(61,'2020-07-24 05:34:05','2020-07-24 15:34:04',155,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',48),(62,'2020-07-24 05:34:05','2020-07-24 15:34:04',68,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',49),(63,'2020-07-24 05:34:05','2020-07-24 15:34:04',31,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',50),(64,'2020-07-24 05:34:05','2020-07-24 15:34:04',8,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',51),(65,'2020-07-24 05:34:05','2020-07-24 15:34:04',162,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',52),(66,'2020-07-24 05:34:05','2020-07-24 15:34:04',41,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',53),(67,'2020-07-24 05:34:05','2020-07-24 15:34:04',24,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',54),(68,'2020-07-24 05:34:05','2020-07-24 15:34:04',180,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',55),(69,'2020-07-24 05:34:05','2020-07-24 15:34:04',175,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',56),(70,'2020-07-24 05:34:05','2020-07-24 15:34:04',6,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',57),(71,'2020-07-24 05:34:05','2020-07-24 15:34:04',60,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',58),(72,'2020-07-24 05:34:05','2020-07-24 15:34:04',49,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',59),(73,'2020-07-24 05:34:05','2020-07-24 15:34:04',200,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',60),(74,'2020-07-24 05:34:05','2020-07-24 15:34:04',130,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',61),(75,'2020-07-24 05:34:05','2020-07-24 15:34:04',70,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',62),(76,'2020-07-24 05:34:05','2020-07-24 15:34:04',110,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),(77,'2020-07-24 05:34:05','2020-07-24 15:34:04',106,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),(78,'2020-07-24 05:34:05','2020-07-24 15:34:04',140,'Single',50.00,'USD',4,1,'civicrm_line_item',65),(79,'2020-07-24 05:34:05','2020-07-24 15:34:04',103,'Single',50.00,'USD',4,1,'civicrm_line_item',66),(80,'2020-07-24 05:34:05','2020-07-24 15:34:04',170,'Single',50.00,'USD',4,1,'civicrm_line_item',67),(81,'2020-07-24 05:34:05','2020-07-24 15:34:04',172,'Single',50.00,'USD',4,1,'civicrm_line_item',68),(82,'2020-07-24 05:34:05','2020-07-24 15:34:04',57,'Single',50.00,'USD',4,1,'civicrm_line_item',69),(83,'2020-07-24 05:34:05','2020-07-24 15:34:04',109,'Single',50.00,'USD',4,1,'civicrm_line_item',70),(84,'2020-07-24 05:34:05','2020-07-24 15:34:04',5,'Single',50.00,'USD',4,1,'civicrm_line_item',71),(85,'2020-07-24 05:34:05','2020-07-24 15:34:04',54,'Single',50.00,'USD',4,1,'civicrm_line_item',72),(86,'2020-07-24 05:34:05','2020-07-24 15:34:04',21,'Single',50.00,'USD',4,1,'civicrm_line_item',73),(87,'2020-07-24 05:34:05','2020-07-24 15:34:04',30,'Single',50.00,'USD',4,1,'civicrm_line_item',74),(88,'2020-07-24 05:34:05','2020-07-24 15:34:04',44,'Single',50.00,'USD',4,1,'civicrm_line_item',75),(89,'2020-07-24 05:34:05','2020-07-24 15:34:04',165,'Single',50.00,'USD',4,1,'civicrm_line_item',76),(90,'2020-07-24 05:34:05','2020-07-24 15:34:04',23,'Single',50.00,'USD',4,1,'civicrm_line_item',77),(91,'2020-07-24 05:34:05','2020-07-24 15:34:04',99,'Single',50.00,'USD',4,1,'civicrm_line_item',78),(92,'2020-07-24 05:34:05','2020-07-24 15:34:04',90,'Single',50.00,'USD',4,1,'civicrm_line_item',79),(93,'2020-07-24 05:34:05','2020-07-24 15:34:04',194,'Single',50.00,'USD',4,1,'civicrm_line_item',80); /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */; UNLOCK TABLES; @@ -534,7 +534,7 @@ 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,1,'2010-04-11 00:00:00',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),(2,NULL,1,'2010-03-21 00:00:00',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(3,NULL,1,'2010-04-29 00:00:00',25.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'2095',NULL,NULL),(4,NULL,1,'2010-04-11 00:00:00',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),(5,NULL,1,'2010-04-15 00:00:00',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),(6,NULL,1,'2010-04-11 00:00:00',175.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'102',NULL,NULL),(7,NULL,1,'2010-03-27 00:00:00',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(8,NULL,1,'2010-03-08 00:00:00',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(9,NULL,1,'2010-04-22 00:00:00',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(10,NULL,1,'2009-07-01 11:53:50',500.00,NULL,NULL,'USD',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(11,NULL,1,'2009-07-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL43II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(12,NULL,1,'2009-10-01 11:53:50',200.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(13,NULL,1,'2009-12-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(14,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(15,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(16,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(17,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(18,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(19,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(20,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(21,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(22,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(23,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(24,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(25,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(26,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(27,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(28,NULL,1,'2020-06-10 14:45:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(29,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(30,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(31,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(32,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(33,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(34,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(35,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(36,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(37,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(38,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(39,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(40,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(41,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(42,NULL,1,'2020-06-10 14:45:52',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(43,NULL,1,'2020-06-10 14:45:52',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(44,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(45,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(46,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(47,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(48,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(49,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(50,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(51,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(52,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(53,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(54,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(55,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(56,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(57,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(58,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(59,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(60,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(61,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(62,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(63,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(64,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(65,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(66,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(67,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(68,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(69,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(70,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(71,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(72,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(73,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(74,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(75,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(76,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(77,NULL,1,'2020-06-10 14:45:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(78,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(79,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(80,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(81,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(82,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(83,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(84,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(85,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(86,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(87,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(88,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(89,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(90,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(91,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(92,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(93,NULL,1,'2020-06-10 14:45:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL); +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,'2010-04-11 00:00:00',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),(2,NULL,6,'2010-03-21 00:00:00',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(3,NULL,6,'2010-04-29 00:00:00',25.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'2095',NULL,NULL),(4,NULL,6,'2010-04-11 00:00:00',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),(5,NULL,6,'2010-04-15 00:00:00',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),(6,NULL,6,'2010-04-11 00:00:00',175.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'102',NULL,NULL),(7,NULL,6,'2010-03-27 00:00:00',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(8,NULL,6,'2010-03-08 00:00:00',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(9,NULL,6,'2010-04-22 00:00:00',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(10,NULL,6,'2009-07-01 11:53:50',500.00,NULL,NULL,'USD',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(11,NULL,6,'2009-07-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL43II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(12,NULL,6,'2009-10-01 11:53:50',200.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(13,NULL,6,'2009-12-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),(14,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(15,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(16,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(17,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(18,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(19,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(20,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(21,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(22,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(23,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(24,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(25,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(26,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(27,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(28,NULL,6,'2020-07-24 15:34:04',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(29,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(30,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(31,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(32,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(33,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(34,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(35,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(36,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(37,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(38,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(39,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(40,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(41,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(42,NULL,6,'2020-07-24 15:34:04',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(43,NULL,6,'2020-07-24 15:34:04',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(44,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(45,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(46,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(47,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(48,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(49,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(50,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(51,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(52,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(53,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(54,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(55,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(56,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(57,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(58,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(59,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(60,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(61,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(62,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(63,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(64,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(65,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(66,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(67,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(68,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(69,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(70,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(71,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(72,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(73,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(74,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(75,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(76,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(77,NULL,6,'2020-07-24 15:34:04',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(78,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(79,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(80,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(81,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(82,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(83,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(84,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(85,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(86,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(87,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(88,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(89,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(90,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(91,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(92,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL),(93,NULL,6,'2020-07-24 15:34:04',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -573,7 +573,7 @@ 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,50,'Added',NULL,NULL),(2,2,43,'Added',NULL,NULL),(3,2,71,'Added',NULL,NULL),(4,2,177,'Added',NULL,NULL),(5,2,110,'Added',NULL,NULL),(6,2,97,'Added',NULL,NULL),(7,2,56,'Added',NULL,NULL),(8,2,75,'Added',NULL,NULL),(9,2,91,'Added',NULL,NULL),(10,2,172,'Added',NULL,NULL),(11,2,37,'Added',NULL,NULL),(12,2,175,'Added',NULL,NULL),(13,2,15,'Added',NULL,NULL),(14,2,106,'Added',NULL,NULL),(15,2,115,'Added',NULL,NULL),(16,2,147,'Added',NULL,NULL),(17,2,198,'Added',NULL,NULL),(18,2,53,'Added',NULL,NULL),(19,2,99,'Added',NULL,NULL),(20,2,146,'Added',NULL,NULL),(21,2,22,'Added',NULL,NULL),(22,2,18,'Added',NULL,NULL),(23,2,108,'Added',NULL,NULL),(24,2,27,'Added',NULL,NULL),(25,2,26,'Added',NULL,NULL),(26,2,92,'Added',NULL,NULL),(27,2,44,'Added',NULL,NULL),(28,2,121,'Added',NULL,NULL),(29,2,47,'Added',NULL,NULL),(30,2,138,'Added',NULL,NULL),(31,2,34,'Added',NULL,NULL),(32,2,85,'Added',NULL,NULL),(33,2,66,'Added',NULL,NULL),(34,2,157,'Added',NULL,NULL),(35,2,119,'Added',NULL,NULL),(36,2,10,'Added',NULL,NULL),(37,2,159,'Added',NULL,NULL),(38,2,194,'Added',NULL,NULL),(39,2,142,'Added',NULL,NULL),(40,2,61,'Added',NULL,NULL),(41,2,164,'Added',NULL,NULL),(42,2,134,'Added',NULL,NULL),(43,2,41,'Added',NULL,NULL),(44,2,116,'Added',NULL,NULL),(45,2,188,'Added',NULL,NULL),(46,2,120,'Added',NULL,NULL),(47,2,16,'Added',NULL,NULL),(48,2,29,'Added',NULL,NULL),(49,2,128,'Added',NULL,NULL),(50,2,118,'Added',NULL,NULL),(51,2,103,'Added',NULL,NULL),(52,2,143,'Added',NULL,NULL),(53,2,149,'Added',NULL,NULL),(54,2,136,'Added',NULL,NULL),(55,2,24,'Added',NULL,NULL),(56,2,36,'Added',NULL,NULL),(57,2,7,'Added',NULL,NULL),(58,2,167,'Added',NULL,NULL),(59,2,28,'Added',NULL,NULL),(60,2,145,'Added',NULL,NULL),(61,3,158,'Added',NULL,NULL),(62,3,20,'Added',NULL,NULL),(63,3,199,'Added',NULL,NULL),(64,3,112,'Added',NULL,NULL),(65,3,93,'Added',NULL,NULL),(66,3,69,'Added',NULL,NULL),(67,3,21,'Added',NULL,NULL),(68,3,137,'Added',NULL,NULL),(69,3,152,'Added',NULL,NULL),(70,3,12,'Added',NULL,NULL),(71,3,129,'Added',NULL,NULL),(72,3,81,'Added',NULL,NULL),(73,3,185,'Added',NULL,NULL),(74,3,30,'Added',NULL,NULL),(75,3,62,'Added',NULL,NULL),(76,4,50,'Added',NULL,NULL),(77,4,75,'Added',NULL,NULL),(78,4,115,'Added',NULL,NULL),(79,4,18,'Added',NULL,NULL),(80,4,47,'Added',NULL,NULL),(81,4,10,'Added',NULL,NULL),(82,4,41,'Added',NULL,NULL),(83,4,118,'Added',NULL,NULL); +INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES (1,2,169,'Added',NULL,NULL),(2,2,24,'Added',NULL,NULL),(3,2,124,'Added',NULL,NULL),(4,2,57,'Added',NULL,NULL),(5,2,17,'Added',NULL,NULL),(6,2,182,'Added',NULL,NULL),(7,2,99,'Added',NULL,NULL),(8,2,138,'Added',NULL,NULL),(9,2,81,'Added',NULL,NULL),(10,2,53,'Added',NULL,NULL),(11,2,15,'Added',NULL,NULL),(12,2,33,'Added',NULL,NULL),(13,2,179,'Added',NULL,NULL),(14,2,83,'Added',NULL,NULL),(15,2,164,'Added',NULL,NULL),(16,2,146,'Added',NULL,NULL),(17,2,120,'Added',NULL,NULL),(18,2,193,'Added',NULL,NULL),(19,2,76,'Added',NULL,NULL),(20,2,162,'Added',NULL,NULL),(21,2,66,'Added',NULL,NULL),(22,2,92,'Added',NULL,NULL),(23,2,167,'Added',NULL,NULL),(24,2,65,'Added',NULL,NULL),(25,2,190,'Added',NULL,NULL),(26,2,184,'Added',NULL,NULL),(27,2,67,'Added',NULL,NULL),(28,2,185,'Added',NULL,NULL),(29,2,183,'Added',NULL,NULL),(30,2,175,'Added',NULL,NULL),(31,2,129,'Added',NULL,NULL),(32,2,197,'Added',NULL,NULL),(33,2,122,'Added',NULL,NULL),(34,2,7,'Added',NULL,NULL),(35,2,154,'Added',NULL,NULL),(36,2,51,'Added',NULL,NULL),(37,2,97,'Added',NULL,NULL),(38,2,111,'Added',NULL,NULL),(39,2,143,'Added',NULL,NULL),(40,2,77,'Added',NULL,NULL),(41,2,186,'Added',NULL,NULL),(42,2,12,'Added',NULL,NULL),(43,2,8,'Added',NULL,NULL),(44,2,84,'Added',NULL,NULL),(45,2,71,'Added',NULL,NULL),(46,2,3,'Added',NULL,NULL),(47,2,123,'Added',NULL,NULL),(48,2,119,'Added',NULL,NULL),(49,2,161,'Added',NULL,NULL),(50,2,145,'Added',NULL,NULL),(51,2,60,'Added',NULL,NULL),(52,2,31,'Added',NULL,NULL),(53,2,55,'Added',NULL,NULL),(54,2,88,'Added',NULL,NULL),(55,2,64,'Added',NULL,NULL),(56,2,41,'Added',NULL,NULL),(57,2,30,'Added',NULL,NULL),(58,2,2,'Added',NULL,NULL),(59,2,156,'Added',NULL,NULL),(60,2,118,'Added',NULL,NULL),(61,3,87,'Added',NULL,NULL),(62,3,49,'Added',NULL,NULL),(63,3,23,'Added',NULL,NULL),(64,3,5,'Added',NULL,NULL),(65,3,93,'Added',NULL,NULL),(66,3,18,'Added',NULL,NULL),(67,3,6,'Added',NULL,NULL),(68,3,199,'Added',NULL,NULL),(69,3,176,'Added',NULL,NULL),(70,3,132,'Added',NULL,NULL),(71,3,80,'Added',NULL,NULL),(72,3,45,'Added',NULL,NULL),(73,3,44,'Added',NULL,NULL),(74,3,96,'Added',NULL,NULL),(75,3,166,'Added',NULL,NULL),(76,4,169,'Added',NULL,NULL),(77,4,138,'Added',NULL,NULL),(78,4,164,'Added',NULL,NULL),(79,4,92,'Added',NULL,NULL),(80,4,183,'Added',NULL,NULL),(81,4,51,'Added',NULL,NULL),(82,4,8,'Added',NULL,NULL),(83,4,145,'Added',NULL,NULL); /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -638,7 +638,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_line_item` WRITE; /*!40000 ALTER TABLE `civicrm_line_item` DISABLE KEYS */; -INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`) VALUES (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL),(2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL),(4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,175.00,175.00,0,1,1,0.00,NULL),(7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL),(9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL),(10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(16,'civicrm_membership',1,14,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(17,'civicrm_membership',3,15,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(18,'civicrm_membership',5,16,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(19,'civicrm_membership',7,17,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(20,'civicrm_membership',9,18,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(21,'civicrm_membership',10,19,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(22,'civicrm_membership',13,20,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(23,'civicrm_membership',15,21,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(24,'civicrm_membership',17,22,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(25,'civicrm_membership',19,23,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(26,'civicrm_membership',21,24,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(27,'civicrm_membership',23,25,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(28,'civicrm_membership',25,26,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(29,'civicrm_membership',27,27,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(30,'civicrm_membership',29,28,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(31,'civicrm_membership',2,29,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(32,'civicrm_membership',4,30,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(33,'civicrm_membership',6,31,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(34,'civicrm_membership',8,32,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(35,'civicrm_membership',12,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(36,'civicrm_membership',14,34,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(37,'civicrm_membership',16,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(38,'civicrm_membership',18,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(39,'civicrm_membership',20,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(40,'civicrm_membership',24,38,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(41,'civicrm_membership',26,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(42,'civicrm_membership',28,40,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(43,'civicrm_membership',30,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(44,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(45,'civicrm_membership',22,43,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(47,'civicrm_participant',3,60,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(48,'civicrm_participant',6,88,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(49,'civicrm_participant',9,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(50,'civicrm_participant',12,53,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(51,'civicrm_participant',15,52,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(52,'civicrm_participant',18,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(53,'civicrm_participant',21,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(54,'civicrm_participant',24,78,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(55,'civicrm_participant',25,64,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(56,'civicrm_participant',28,47,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(57,'civicrm_participant',31,70,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(58,'civicrm_participant',34,79,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(59,'civicrm_participant',37,61,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(60,'civicrm_participant',40,51,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(61,'civicrm_participant',43,48,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(62,'civicrm_participant',46,94,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(63,'civicrm_participant',49,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(64,'civicrm_participant',50,56,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(65,'civicrm_participant',1,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(66,'civicrm_participant',4,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(67,'civicrm_participant',7,63,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(68,'civicrm_participant',10,73,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(69,'civicrm_participant',13,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(70,'civicrm_participant',16,71,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(71,'civicrm_participant',19,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(72,'civicrm_participant',22,90,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(73,'civicrm_participant',26,55,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(74,'civicrm_participant',29,87,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(75,'civicrm_participant',32,46,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(76,'civicrm_participant',35,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(77,'civicrm_participant',38,92,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(78,'civicrm_participant',41,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(79,'civicrm_participant',44,50,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(80,'civicrm_participant',47,76,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(81,'civicrm_participant',2,59,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(82,'civicrm_participant',5,69,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(83,'civicrm_participant',8,86,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(84,'civicrm_participant',11,45,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(85,'civicrm_participant',14,93,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(86,'civicrm_participant',17,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(87,'civicrm_participant',20,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(88,'civicrm_participant',23,57,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(89,'civicrm_participant',27,58,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(90,'civicrm_participant',30,54,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(91,'civicrm_participant',33,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(92,'civicrm_participant',36,65,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(93,'civicrm_participant',39,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(94,'civicrm_participant',42,62,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(95,'civicrm_participant',45,49,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(96,'civicrm_participant',48,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL); +INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`) VALUES (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL),(2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL),(4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,175.00,175.00,0,1,1,0.00,NULL),(7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL),(9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL),(10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(16,'civicrm_membership',1,14,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(17,'civicrm_membership',3,15,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(18,'civicrm_membership',5,16,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(19,'civicrm_membership',7,17,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(20,'civicrm_membership',9,18,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(21,'civicrm_membership',10,19,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(22,'civicrm_membership',13,20,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(23,'civicrm_membership',15,21,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(24,'civicrm_membership',17,22,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(25,'civicrm_membership',19,23,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(26,'civicrm_membership',21,24,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(27,'civicrm_membership',23,25,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(28,'civicrm_membership',25,26,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(29,'civicrm_membership',27,27,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(30,'civicrm_membership',29,28,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(31,'civicrm_membership',2,29,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(32,'civicrm_membership',4,30,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(33,'civicrm_membership',6,31,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(34,'civicrm_membership',8,32,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(35,'civicrm_membership',12,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(36,'civicrm_membership',14,34,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(37,'civicrm_membership',16,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(38,'civicrm_membership',18,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(39,'civicrm_membership',20,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(40,'civicrm_membership',24,38,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(41,'civicrm_membership',26,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(42,'civicrm_membership',28,40,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(43,'civicrm_membership',30,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(44,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(45,'civicrm_membership',22,43,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(47,'civicrm_participant',3,67,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(48,'civicrm_participant',6,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(49,'civicrm_participant',9,62,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(50,'civicrm_participant',12,54,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(51,'civicrm_participant',15,47,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(52,'civicrm_participant',18,84,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(53,'civicrm_participant',21,55,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(54,'civicrm_participant',24,52,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(55,'civicrm_participant',25,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(56,'civicrm_participant',28,89,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(57,'civicrm_participant',31,46,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(58,'civicrm_participant',34,61,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(59,'civicrm_participant',37,57,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(60,'civicrm_participant',40,94,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(61,'civicrm_participant',43,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(62,'civicrm_participant',46,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(63,'civicrm_participant',49,75,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(64,'civicrm_participant',50,73,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(65,'civicrm_participant',1,82,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(66,'civicrm_participant',4,71,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(67,'civicrm_participant',7,87,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(68,'civicrm_participant',10,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(69,'civicrm_participant',13,60,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(70,'civicrm_participant',16,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(71,'civicrm_participant',19,45,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(72,'civicrm_participant',22,58,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(73,'civicrm_participant',26,50,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(74,'civicrm_participant',29,53,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(75,'civicrm_participant',32,56,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(76,'civicrm_participant',35,85,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(77,'civicrm_participant',38,51,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(78,'civicrm_participant',41,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(79,'civicrm_participant',44,65,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(80,'civicrm_participant',47,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(81,'civicrm_participant',2,86,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(82,'civicrm_participant',5,64,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(83,'civicrm_participant',8,59,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(84,'civicrm_participant',11,81,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(85,'civicrm_participant',14,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(86,'civicrm_participant',17,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(87,'civicrm_participant',20,66,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(88,'civicrm_participant',23,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(89,'civicrm_participant',27,49,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(90,'civicrm_participant',30,77,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(91,'civicrm_participant',33,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(92,'civicrm_participant',36,78,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(93,'civicrm_participant',39,48,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(94,'civicrm_participant',42,93,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(95,'civicrm_participant',45,68,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(96,'civicrm_participant',48,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL); /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */; UNLOCK TABLES; @@ -648,7 +648,7 @@ 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,174,190,158,NULL,NULL,NULL,NULL,NULL),(2,175,191,159,NULL,NULL,NULL,NULL,NULL),(3,176,192,160,NULL,NULL,NULL,NULL,NULL); +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,180,189,158,NULL,NULL,NULL,NULL,NULL),(2,181,190,159,NULL,NULL,NULL,NULL,NULL),(3,182,191,160,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */; UNLOCK TABLES; @@ -725,7 +725,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_mailing_component` WRITE; /*!40000 ALTER TABLE `civicrm_mailing_component` DISABLE KEYS */; -INSERT INTO `civicrm_mailing_component` (`id`, `name`, `component_type`, `subject`, `body_html`, `body_text`, `is_default`, `is_active`) VALUES (1,'Mailing Header','Header','Descriptive Title for this Header','Sample Header for HTML formatted content.','Sample Header for TEXT formatted content.',1,1),(2,'Mailing Footer','Footer','Descriptive Title for this Footer.','Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a> <br/> {domain.address}','to unsubscribe: {action.optOutUrl}\n{domain.address}',1,1),(3,'Subscribe Message','Subscribe','Subscription Confirmation Request','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click <a href=\"{subscribe.url}\">here</a>.','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click on this link: {subscribe.url}',1,1),(4,'Welcome Message','Welcome','Your Subscription has been Activated','Welcome. Your subscription to the {welcome.group} mailing list has been activated.','Welcome. Your subscription to the {welcome.group} mailing list has been activated.',1,1),(5,'Unsubscribe Message','Unsubscribe','Un-subscribe Confirmation','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking ',1,1),(6,'Resubscribe Message','Resubscribe','Re-subscribe Confirmation','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking <a href=\"{action.unsubscribeUrl}\">here</a>.','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking {action.unsubscribeUrl}',1,1),(7,'Opt-out Message','OptOut','Opt-out Confirmation','Your email address has been removed from {domain.name} mailing lists.','Your email address has been removed from {domain.name} mailing lists.',1,1),(8,'Auto-responder','Reply','Please Send Inquiries to Our Contact Email Address','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.',1,1); +INSERT INTO `civicrm_mailing_component` (`id`, `name`, `component_type`, `subject`, `body_html`, `body_text`, `is_default`, `is_active`) VALUES (1,'Mailing Header','Header','Descriptive Title for this Header','Sample Header for HTML formatted content.','Sample Header for TEXT formatted content.',1,1),(2,'Mailing Footer','Footer','Descriptive Title for this Footer.','Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a> <br/> {domain.address}','to unsubscribe: {action.optOutUrl}\n{domain.address}',1,1),(3,'Subscribe Message','Subscribe','Subscription Confirmation Request','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click <a href=\"{subscribe.url}\">here</a>.','You have a pending subscription to the {subscribe.group} mailing list. To confirm this subscription, reply to this email or click on this link: {subscribe.url}',1,1),(4,'Welcome Message','Welcome','Your Subscription has been Activated','Welcome. Your subscription to the {welcome.group} mailing list has been activated.','Welcome. Your subscription to the {welcome.group} mailing list has been activated.',1,1),(5,'Unsubscribe Message','Unsubscribe','Un-subscribe Confirmation','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking <a href=\"{action.resubscribeUrl}\">here</a>.','You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking {action.resubscribeUrl}',1,1),(6,'Resubscribe Message','Resubscribe','Re-subscribe Confirmation','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking <a href=\"{action.unsubscribeUrl}\">here</a>.','You have been re-subscribed to the following groups: {resubscribe.group}. You can un-subscribe by mailing {action.unsubscribe} or clicking {action.unsubscribeUrl}',1,1),(7,'Opt-out Message','OptOut','Opt-out Confirmation','Your email address has been removed from {domain.name} mailing lists.','Your email address has been removed from {domain.name} mailing lists.',1,1),(8,'Auto-responder','Reply','Please Send Inquiries to Our Contact Email Address','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.','This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.',1,1); /*!40000 ALTER TABLE `civicrm_mailing_component` ENABLE KEYS */; UNLOCK TABLES; @@ -897,7 +897,7 @@ 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,158,1,'2020-06-10','2020-06-10','2022-06-09','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,164,2,'2020-06-09','2020-06-09','2021-06-08','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,9,1,'2020-06-08','2020-06-08','2022-06-07','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,174,2,'2020-06-07','2020-06-07','2021-06-06','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(5,154,1,'2018-05-09','2018-05-09','2020-05-08','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(6,173,2,'2020-06-05','2020-06-05','2021-06-04','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(7,59,1,'2020-06-04','2020-06-04','2022-06-03','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(8,109,2,'2020-06-03','2020-06-03','2021-06-02','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(9,52,1,'2020-06-02','2020-06-02','2022-06-01','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(10,185,1,'2018-03-30','2018-03-30','2020-03-29','Payment',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(11,147,3,'2020-05-31','2020-05-31',NULL,'Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(12,10,2,'2020-05-30','2020-05-30','2021-05-29','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(13,73,1,'2020-05-29','2020-05-29','2022-05-28','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(14,190,2,'2020-05-28','2020-05-28','2021-05-27','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(15,12,1,'2018-02-18','2018-02-18','2020-02-17','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(16,110,2,'2020-05-26','2020-05-26','2021-05-25','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(17,41,1,'2020-05-25','2020-05-25','2022-05-24','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(18,81,2,'2020-05-24','2020-05-24','2021-05-23','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(19,18,1,'2020-05-23','2020-05-23','2022-05-22','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(20,112,2,'2019-05-22','2019-05-22','2020-05-21','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(21,126,1,'2020-05-21','2020-05-21','2022-05-20','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(22,98,3,'2020-05-20','2020-05-20',NULL,'Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(23,4,1,'2020-05-19','2020-05-19','2022-05-18','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(24,15,2,'2020-05-18','2020-05-18','2021-05-17','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(25,92,1,'2017-11-30','2017-11-30','2019-11-29','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(26,134,2,'2020-05-16','2020-05-16','2021-05-15','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(27,62,1,'2020-05-15','2020-05-15','2022-05-14','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(28,32,2,'2020-05-14','2020-05-14','2021-05-13','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(29,117,1,'2020-05-13','2020-05-13','2022-05-12','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(30,107,2,'2019-05-12','2019-05-12','2020-05-11','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL); +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,103,1,'2020-07-24','2020-07-24','2022-07-23','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,132,2,'2020-07-23','2020-07-23','2021-07-22','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,179,1,'2020-07-22','2020-07-22','2022-07-21','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,5,2,'2020-07-21','2020-07-21','2021-07-20','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(5,12,1,'2018-06-22','2018-06-22','2020-06-21','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(6,108,2,'2020-07-19','2020-07-19','2021-07-18','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(7,173,1,'2020-07-18','2020-07-18','2022-07-17','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(8,39,2,'2020-07-17','2020-07-17','2021-07-16','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(9,127,1,'2020-07-16','2020-07-16','2022-07-15','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(10,63,1,'2018-05-13','2018-05-13','2020-05-12','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(11,145,3,'2020-07-14','2020-07-14',NULL,'Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(12,159,2,'2020-07-13','2020-07-13','2021-07-12','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(13,188,1,'2020-07-12','2020-07-12','2022-07-11','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(14,67,2,'2020-07-11','2020-07-11','2021-07-10','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(15,80,1,'2018-04-03','2018-04-03','2020-04-02','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(16,17,2,'2020-07-09','2020-07-09','2021-07-08','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(17,131,1,'2020-07-08','2020-07-08','2022-07-07','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(18,7,2,'2020-07-07','2020-07-07','2021-07-06','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(19,161,1,'2020-07-06','2020-07-06','2022-07-05','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(20,95,2,'2019-07-05','2019-07-05','2020-07-04','Check',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(21,41,1,'2020-07-04','2020-07-04','2022-07-03','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(22,99,3,'2020-07-03','2020-07-03',NULL,'Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(23,20,1,'2020-07-02','2020-07-02','2022-07-01','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(24,134,2,'2020-07-01','2020-07-01','2021-06-30','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(25,195,1,'2018-01-13','2018-01-13','2020-01-12','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(26,74,2,'2020-06-29','2020-06-29','2021-06-28','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(27,164,1,'2020-06-28','2020-06-28','2022-06-27','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(28,13,2,'2020-06-27','2020-06-27','2021-06-26','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(29,78,1,'2020-06-26','2020-06-26','2022-06-25','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(30,156,2,'2019-06-25','2019-06-25','2020-06-24','Check',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL); /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */; UNLOCK TABLES; @@ -917,7 +917,7 @@ 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,'2020-05-19','2022-05-18',4,'2020-06-10',1,NULL),(2,3,1,'2020-06-08','2022-06-07',9,'2020-06-10',1,NULL),(3,12,1,'2020-05-30','2021-05-29',10,'2020-06-10',2,NULL),(4,15,3,'2018-02-18','2020-02-17',12,'2020-06-10',1,NULL),(5,24,1,'2020-05-18','2021-05-17',15,'2020-06-10',2,NULL),(6,19,1,'2020-05-23','2022-05-22',18,'2020-06-10',1,NULL),(7,28,1,'2020-05-14','2021-05-13',32,'2020-06-10',2,NULL),(8,17,1,'2020-05-25','2022-05-24',41,'2020-06-10',1,NULL),(9,9,1,'2020-06-02','2022-06-01',52,'2020-06-10',1,NULL),(10,7,1,'2020-06-04','2022-06-03',59,'2020-06-10',1,NULL),(11,27,1,'2020-05-15','2022-05-14',62,'2020-06-10',1,NULL),(12,13,1,'2020-05-29','2022-05-28',73,'2020-06-10',1,NULL),(13,18,1,'2020-05-24','2021-05-23',81,'2020-06-10',2,NULL),(14,25,3,'2017-11-30','2019-11-29',92,'2020-06-10',1,NULL),(15,22,1,'2020-05-20',NULL,98,'2020-06-10',3,NULL),(16,30,4,'2019-05-12','2020-05-11',107,'2020-06-10',2,NULL),(17,8,1,'2020-06-03','2021-06-02',109,'2020-06-10',2,NULL),(18,16,1,'2020-05-26','2021-05-25',110,'2020-06-10',2,NULL),(19,20,4,'2019-05-22','2020-05-21',112,'2020-06-10',2,NULL),(20,29,1,'2020-05-13','2022-05-12',117,'2020-06-10',1,NULL),(21,21,1,'2020-05-21','2022-05-20',126,'2020-06-10',1,NULL),(22,26,1,'2020-05-16','2021-05-15',134,'2020-06-10',2,NULL),(23,11,1,'2020-05-31',NULL,147,'2020-06-10',3,NULL),(24,5,3,'2018-05-09','2020-05-08',154,'2020-06-10',1,NULL),(25,1,1,'2020-06-10','2022-06-09',158,'2020-06-10',1,NULL),(26,2,1,'2020-06-09','2021-06-08',164,'2020-06-10',2,NULL),(27,6,1,'2020-06-05','2021-06-04',173,'2020-06-10',2,NULL),(28,4,1,'2020-06-07','2021-06-06',174,'2020-06-10',2,NULL),(29,10,3,'2018-03-30','2020-03-29',185,'2020-06-10',1,NULL),(30,14,1,'2020-05-28','2021-05-27',190,'2020-06-10',2,NULL); +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,4,1,'2020-07-21','2021-07-20',5,'2020-07-24',2,NULL),(2,18,1,'2020-07-07','2021-07-06',7,'2020-07-24',2,NULL),(3,5,3,'2018-06-22','2020-06-21',12,'2020-07-24',1,NULL),(4,28,1,'2020-06-27','2021-06-26',13,'2020-07-24',2,NULL),(5,16,1,'2020-07-09','2021-07-08',17,'2020-07-24',2,NULL),(6,23,1,'2020-07-02','2022-07-01',20,'2020-07-24',1,NULL),(7,8,1,'2020-07-17','2021-07-16',39,'2020-07-24',2,NULL),(8,21,1,'2020-07-04','2022-07-03',41,'2020-07-24',1,NULL),(9,10,3,'2018-05-13','2020-05-12',63,'2020-07-24',1,NULL),(10,14,1,'2020-07-11','2021-07-10',67,'2020-07-24',2,NULL),(11,26,1,'2020-06-29','2021-06-28',74,'2020-07-24',2,NULL),(12,29,1,'2020-06-26','2022-06-25',78,'2020-07-24',1,NULL),(13,15,3,'2018-04-03','2020-04-02',80,'2020-07-24',1,NULL),(14,20,4,'2019-07-05','2020-07-04',95,'2020-07-24',2,NULL),(15,22,1,'2020-07-03',NULL,99,'2020-07-24',3,NULL),(16,1,1,'2020-07-24','2022-07-23',103,'2020-07-24',1,NULL),(17,6,1,'2020-07-19','2021-07-18',108,'2020-07-24',2,NULL),(18,9,1,'2020-07-16','2022-07-15',127,'2020-07-24',1,NULL),(19,17,1,'2020-07-08','2022-07-07',131,'2020-07-24',1,NULL),(20,2,1,'2020-07-23','2021-07-22',132,'2020-07-24',2,NULL),(21,24,1,'2020-07-01','2021-06-30',134,'2020-07-24',2,NULL),(22,11,1,'2020-07-14',NULL,145,'2020-07-24',3,NULL),(23,30,4,'2019-06-25','2020-06-24',156,'2020-07-24',2,NULL),(24,12,1,'2020-07-13','2021-07-12',159,'2020-07-24',2,NULL),(25,19,1,'2020-07-06','2022-07-05',161,'2020-07-24',1,NULL),(26,27,1,'2020-06-28','2022-06-27',164,'2020-07-24',1,NULL),(27,7,1,'2020-07-18','2022-07-17',173,'2020-07-24',1,NULL),(28,3,1,'2020-07-22','2022-07-21',179,'2020-07-24',1,NULL),(29,13,1,'2020-07-12','2022-07-11',188,'2020-07-24',1,NULL),(30,25,3,'2018-01-13','2020-01-12',195,'2020-07-24',1,NULL); /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */; UNLOCK TABLES; @@ -957,7 +957,7 @@ 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_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\";}','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,NULL,NULL,NULL,0,1,1,0,NULL,'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,NULL,NULL,NULL,0,1,1,0,NULL,'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,NULL,NULL,NULL,0,400,1,1,NULL,'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,NULL,NULL,NULL,0,410,1,1,NULL,'a:0:{}'),(5,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,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(6,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,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(7,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(8,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(9,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(10,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(11,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(12,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,NULL,NULL,NULL,0,30,1,1,NULL,'a:0:{}'),(13,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,NULL,NULL,NULL,0,1,1,0,NULL,'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\";}'),(14,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(15,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(16,1,'civicrm/tag',NULL,'Tags (Categories)','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,NULL,NULL,NULL,0,25,1,0,NULL,'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\";}'),(17,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:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(18,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:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(19,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(20,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(21,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(22,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,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(23,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,NULL,NULL,NULL,0,0,1,1,NULL,'a:0:{}'),(24,1,'civicrm/dashlet',NULL,'CiviCRM Dashlets','a:2:{i:0;s:19:\"CRM_Core_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_Contact_Page_Dashlet\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,1,NULL,'a:0:{}'),(25,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,NULL,NULL,NULL,0,10,1,1,NULL,'a:0:{}'),(26,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(27,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(28,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(29,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,NULL,NULL,NULL,0,12,1,1,NULL,'a:0:{}'),(30,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,NULL,NULL,NULL,0,14,1,1,NULL,'a:0:{}'),(31,1,'civicrm/contact/search/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:29:\"CRM_Contact_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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(32,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:2:{i:0;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,NULL,NULL,NULL,0,16,1,1,NULL,'a:0:{}'),(33,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(34,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(35,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(36,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(37,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(38,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(39,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(40,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(41,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(42,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(43,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(44,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(45,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(46,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(47,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(48,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(49,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(50,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(51,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(52,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(53,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(54,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(55,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(56,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(57,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(58,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(59,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(60,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(61,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(62,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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(63,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(64,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(65,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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(66,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(67,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(68,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(69,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(70,1,'civicrm/ajax/dashboard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_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:\"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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(71,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(72,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(73,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(74,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(75,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(76,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(77,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(78,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,NULL,NULL,NULL,0,105,1,0,NULL,'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\";}'),(79,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(80,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(81,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(82,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,NULL,NULL,NULL,0,110,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),(83,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(84,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(85,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(86,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(87,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(88,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(89,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(90,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(91,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(92,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(93,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,362,1,0,NULL,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(94,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(95,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(96,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(97,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(98,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(99,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(100,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(101,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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(102,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(103,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(104,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(105,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(106,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(107,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(108,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(109,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,10,1,0,NULL,'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\";}'),(110,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,11,1,0,0,'a:0:{}'),(111,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(112,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(113,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(114,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(115,1,'civicrm/admin/custom/group/field/changetype',NULL,'Custom Field - Change Type','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:31:\"CRM_Custom_Form_ChangeFieldType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s: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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(116,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,20,1,0,NULL,'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\";}'),(117,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,21,1,0,0,'a:0:{}'),(118,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,22,1,0,NULL,'a:0:{}'),(119,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,23,1,0,NULL,'a:0:{}'),(120,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,24,1,0,NULL,'a:0:{}'),(121,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,25,1,0,NULL,'a:0:{}'),(122,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,0,1,0,NULL,'a:0:{}'),(123,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: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,NULL,NULL,NULL,1,30,1,0,NULL,'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\";}'),(124,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,35,1,0,NULL,'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\";}'),(125,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,40,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(126,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: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,NULL,NULL,NULL,1,45,1,0,NULL,'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\";}'),(127,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: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,NULL,NULL,NULL,1,50,1,0,NULL,'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\";}'),(128,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: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,NULL,NULL,NULL,1,55,1,0,NULL,'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\";}'),(129,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,60,1,0,NULL,'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\";}'),(130,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: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,NULL,NULL,NULL,1,65,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(131,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: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,NULL,NULL,NULL,1,70,1,0,NULL,'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\";}'),(132,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: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,NULL,NULL,NULL,1,75,1,0,NULL,'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\";}'),(133,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: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,NULL,NULL,NULL,1,80,1,0,NULL,'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\";}'),(134,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,90,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(135,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,95,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(136,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(137,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,100,1,0,NULL,'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\";}'),(138,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(139,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: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,NULL,NULL,NULL,1,110,1,0,NULL,'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\";}'),(140,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'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\";}'),(141,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: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,NULL,NULL,NULL,1,20,1,0,NULL,'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\";}'),(142,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,NULL,NULL,NULL,1,30,1,0,NULL,'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\";}'),(143,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,NULL,NULL,NULL,1,262,1,0,NULL,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),(144,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";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,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(145,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(146,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: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,NULL,NULL,NULL,1,50,1,0,NULL,'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\";}'),(147,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,60,1,0,NULL,'a:2:{s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(148,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,70,1,0,NULL,'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\";}'),(149,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: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,NULL,NULL,NULL,1,75,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(150,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: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,NULL,NULL,NULL,1,80,1,0,NULL,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(151,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: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,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(152,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: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,NULL,NULL,NULL,1,100,1,0,NULL,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(153,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(154,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,20,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(155,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,30,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(156,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: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,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),(157,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'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\";}'),(158,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),(159,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,20,1,0,NULL,'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\";}'),(160,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(161,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'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\";}'),(162,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:18:\"administer CiviCRM\";}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,NULL,NULL,NULL,1,120,1,0,NULL,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(163,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:18:\"administer CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(164,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,20,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(165,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,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(166,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,40,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(167,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','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: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,NULL,NULL,NULL,1,50,1,0,NULL,'a:2:{s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(168,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,60,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(169,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,70,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(170,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,80,1,0,NULL,'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\";}'),(171,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,90,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(172,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: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,NULL,NULL,NULL,1,100,1,0,NULL,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(173,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: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:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s: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,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(174,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,110,1,0,NULL,'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\";}'),(175,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,120,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(176,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,130,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(177,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(178,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,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(179,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,NULL,NULL,NULL,1,430,1,0,NULL,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(180,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,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(181,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:18:\"administer CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),(182,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:18:\"administer CiviCRM\";}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,NULL,NULL,NULL,1,1370,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(183,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:18:\"administer CiviCRM\";}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,NULL,NULL,NULL,1,1380,1,0,NULL,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),(184,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: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,NULL,NULL,NULL,1,385,1,0,NULL,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'),(185,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,390,1,0,NULL,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),(186,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,9000,1,1,NULL,'a:0:{}'),(187,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(188,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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(189,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(190,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,NULL,NULL,NULL,1,380,1,0,NULL,'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\";}'),(191,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,NULL,NULL,NULL,1,1,1,0,NULL,'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.\";}'),(192,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,NULL,NULL,NULL,1,1,1,0,0,'a:0:{}'),(193,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(194,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(195,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(196,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,NULL,NULL,NULL,1,500,1,0,NULL,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(197,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,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(198,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(199,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,399,1,0,NULL,'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\";}'),(200,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(201,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor','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:29:\"CRM_Admin_Page_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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(202,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(203,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(204,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,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(205,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(206,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(207,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(208,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(209,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(210,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(211,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(212,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(213,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,NULL,NULL,NULL,0,9999,1,1,NULL,'a:0:{}'),(214,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(215,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(216,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(217,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(218,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(219,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(220,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(221,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(222,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(223,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(224,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(225,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(226,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(227,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(228,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(229,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(230,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(231,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(232,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(233,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(234,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(235,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(236,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(237,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(238,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(239,1,'civicrm/ajax/l10n-js',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:18:\"CRM_Core_Resources\";i:1;s:20:\"outputLocalizationJS\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(240,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(241,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(242,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(243,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(244,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(245,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(246,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(247,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(248,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(249,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(250,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(251,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(252,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,NULL,NULL,NULL,0,800,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(253,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(254,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(255,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,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(256,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,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(257,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(258,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(259,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(260,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,NULL,NULL,NULL,1,370,1,0,NULL,'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\";}'),(261,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,NULL,NULL,NULL,1,375,1,0,NULL,'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\";}'),(262,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,NULL,NULL,NULL,1,385,1,0,NULL,'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\";}'),(263,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,NULL,NULL,NULL,1,390,1,0,NULL,'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\";}'),(264,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,NULL,NULL,NULL,1,395,1,0,NULL,'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\";}'),(265,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: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,NULL,NULL,NULL,1,398,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(266,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,NULL,NULL,NULL,1,415,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(267,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,NULL,NULL,NULL,0,810,1,1,NULL,'a:0:{}'),(268,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,NULL,NULL,NULL,1,820,1,1,NULL,'a:0:{}'),(269,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(270,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,NULL,NULL,NULL,1,910,1,0,NULL,'a:0:{}'),(271,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,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(272,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,NULL,NULL,NULL,1,920,1,0,NULL,'a:0:{}'),(273,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,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(274,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,NULL,NULL,NULL,1,940,1,0,NULL,'a:0:{}'),(275,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,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(276,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,NULL,NULL,NULL,1,960,1,0,NULL,'a:0:{}'),(277,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,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(278,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,NULL,NULL,NULL,0,830,1,0,NULL,'a:0:{}'),(279,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,NULL,NULL,NULL,0,840,1,1,NULL,'a:0:{}'),(280,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,NULL,NULL,NULL,0,850,1,1,NULL,'a:0:{}'),(281,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,NULL,1,NULL,0,880,1,1,NULL,'a:0:{}'),(282,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,NULL,1,NULL,0,890,1,1,NULL,'a:0:{}'),(283,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,NULL,NULL,NULL,0,4,1,0,NULL,'a:0:{}'),(284,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(285,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(286,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(287,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(288,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(289,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,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(290,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(291,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(292,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(293,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,NULL,NULL,NULL,1,540,1,1,NULL,'a:0:{}'),(294,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(295,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(296,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,NULL,NULL,NULL,0,500,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(297,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,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(298,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(299,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,NULL,1,NULL,1,0,1,0,NULL,'a:0:{}'),(300,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,360,1,0,NULL,'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\";}'),(301,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,400,1,0,NULL,'a:0:{}'),(302,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,410,1,0,NULL,'a:0:{}'),(303,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,420,1,0,NULL,'a:0:{}'),(304,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(305,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(306,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,440,1,0,NULL,'a:0:{}'),(307,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,460,1,0,NULL,'a:0:{}'),(308,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,470,1,0,NULL,'a:0:{}'),(309,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,480,1,0,NULL,'a:0:{}'),(310,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(311,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,365,1,0,NULL,'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\";}'),(312,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,580,1,0,NULL,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(313,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,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(314,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,370,1,0,NULL,'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\";}'),(315,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: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,NULL,NULL,NULL,1,380,1,0,NULL,'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\";}'),(316,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: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,NULL,NULL,NULL,1,395,1,0,NULL,'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\";}'),(317,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: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,NULL,NULL,NULL,1,1,1,0,NULL,'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\";}'),(318,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(319,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(320,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(321,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,NULL,NULL,NULL,0,510,1,1,NULL,'a:0:{}'),(322,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,NULL,NULL,NULL,0,588,1,1,NULL,'a:0:{}'),(323,1,'civicrm/contribute/import',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:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,520,1,1,NULL,'a:0:{}'),(324,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,NULL,NULL,NULL,0,530,1,1,NULL,'a:0:{}'),(325,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,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(326,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(327,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(328,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(329,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(330,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(331,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(332,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,581,1,0,NULL,'a:0:{}'),(333,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,NULL,NULL,NULL,0,585,1,0,NULL,'a:0:{}'),(334,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,NULL,NULL,NULL,0,586,1,0,NULL,'a:0:{}'),(335,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,NULL,NULL,NULL,0,600,1,0,NULL,'a:0:{}'),(336,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,NULL,NULL,NULL,0,610,1,0,NULL,'a:0:{}'),(337,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,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(338,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(339,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,NULL,NULL,NULL,0,620,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(340,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,NULL,NULL,NULL,0,630,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(341,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(342,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(343,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(344,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,450,1,0,NULL,'a:0:{}'),(345,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(346,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,NULL,NULL,NULL,0,700,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(347,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(348,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,370,1,0,NULL,'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\";}'),(349,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,380,1,0,NULL,'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\";}'),(350,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,NULL,NULL,NULL,0,2,1,0,NULL,'a:0:{}'),(351,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,NULL,NULL,NULL,0,390,1,0,NULL,'a:0:{}'),(352,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,NULL,NULL,NULL,0,710,1,1,NULL,'a:0:{}'),(353,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,NULL,NULL,NULL,0,720,1,1,NULL,'a:0:{}'),(354,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(355,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(356,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,NULL,NULL,NULL,0,600,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),(357,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,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(358,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,NULL,NULL,NULL,1,410,1,0,NULL,'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\";}'),(359,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: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: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,NULL,NULL,NULL,1,415,1,0,NULL,'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\";}'),(360,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,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(361,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,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(362,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,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(363,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,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(364,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,NULL,NULL,NULL,0,625,1,1,NULL,'a:0:{}'),(365,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,NULL,NULL,NULL,0,630,1,1,NULL,'a:0:{}'),(366,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,NULL,1,NULL,0,640,1,0,NULL,'a:0:{}'),(367,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,NULL,1,NULL,0,645,1,0,NULL,'a:0:{}'),(368,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,NULL,1,NULL,0,650,1,0,NULL,'a:0:{}'),(369,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,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(370,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,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(371,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,NULL,NULL,NULL,0,670,1,0,NULL,'a:0:{}'),(372,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,NULL,NULL,NULL,0,680,1,0,NULL,'a:0:{}'),(373,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,NULL,1,NULL,0,685,1,0,NULL,'a:0:{}'),(374,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,NULL,NULL,NULL,0,690,1,0,NULL,'a:0:{}'),(375,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,NULL,NULL,NULL,0,695,1,0,NULL,'a:0:{}'),(376,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(377,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,NULL,1,NULL,0,800,1,0,NULL,'a:0:{}'),(378,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,NULL,NULL,NULL,0,850,1,0,NULL,'a:0:{}'),(379,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(380,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(381,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(382,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(383,1,'civicrm/grant',NULL,'CiviGrant Dashboard','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 CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_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,5,NULL,NULL,NULL,0,1000,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(384,1,'civicrm/grant/info',NULL,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 CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_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:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(385,1,'civicrm/grant/search',NULL,'Find Grants','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 CiviGrant\";}i:1;s:3:\"and\";}','s:27:\"CRM_Grant_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:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1010,1,1,NULL,'a:0:{}'),(386,1,'civicrm/grant/add','action=add','New Grant','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 CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_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:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(387,1,'civicrm/contact/view/grant',NULL,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 CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(388,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,NULL,NULL,NULL,0,550,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(389,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,NULL,NULL,NULL,0,560,1,1,NULL,'a:0:{}'),(390,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,NULL,NULL,NULL,0,570,1,0,NULL,'a:0:{}'),(391,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,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(392,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,NULL,NULL,NULL,0,580,1,0,NULL,'a:0:{}'),(393,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(394,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,NULL,NULL,NULL,0,900,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(395,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,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(396,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,NULL,NULL,NULL,0,910,1,1,NULL,'a:0:{}'),(397,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(398,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(399,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(400,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(401,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(402,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(403,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(404,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(405,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,380,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(406,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,NULL,NULL,NULL,1,390,1,0,NULL,'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\";}'),(407,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,NULL,NULL,NULL,1,400,1,0,NULL,'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\";}'),(408,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,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(409,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,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(410,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(411,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(412,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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(413,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(414,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(415,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(416,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,NULL,NULL,NULL,0,1200,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),(417,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(418,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,NULL,NULL,NULL,0,1220,1,1,NULL,'a:0:{}'),(419,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,NULL,NULL,NULL,0,1241,1,1,NULL,'a:0:{}'),(420,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),(421,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(422,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(423,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(424,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(425,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(426,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(427,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(428,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(429,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(430,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: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,NULL,NULL,NULL,1,2,1,0,NULL,'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\";}'),(431,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: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,NULL,NULL,NULL,1,3,1,0,NULL,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(432,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: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,NULL,NULL,NULL,1,4,1,0,NULL,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(433,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(434,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(435,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(436,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(437,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(438,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(439,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(440,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(441,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(442,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(443,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(444,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(445,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:26:\"{weight}.Tags (Categories)\";a:6:{s:5:\"title\";s:17:\"Tags (Categories)\";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:15:\"Tags_Categories\";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:18:{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:62:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";a:6:{s:5:\"title\";s:53:\"Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:2:\"id\";s:46:\"Misc_Undelete_PDFs_Limits_Logging_Captcha_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: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: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 > Systme 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,NULL,NULL,NULL,NULL,1,1,1,NULL,'a:0:{}'); +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/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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(2,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(3,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(4,1,'civicrm/ajax/api4',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\";}','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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(5,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(6,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(7,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(8,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(9,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(10,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(11,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(12,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(13,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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(14,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(15,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(16,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(17,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(18,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,362,1,0,NULL,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(19,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(20,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(21,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,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(22,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(23,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(24,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(25,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(26,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(27,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(28,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(29,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(30,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,NULL,NULL,NULL,0,9999,1,1,NULL,'a:0:{}'),(31,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(32,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(33,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(34,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(35,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(36,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(37,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(38,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(39,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(40,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(41,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(42,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(43,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(44,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(45,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(46,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(47,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(48,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(49,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(50,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(51,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(52,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(53,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(54,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(55,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(56,1,'civicrm/ajax/l10n-js',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:18:\"CRM_Core_Resources\";i:1;s:20:\"outputLocalizationJS\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(57,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(58,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(59,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(60,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(61,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(62,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(63,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(64,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(65,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(66,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(67,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(68,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(69,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(70,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(71,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,NULL,NULL,NULL,0,400,1,1,NULL,'a:0:{}'),(72,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,NULL,NULL,NULL,0,410,1,1,NULL,'a:0:{}'),(73,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,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(74,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,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(75,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(76,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(77,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(78,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(79,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(80,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,10,1,0,NULL,'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\";}'),(81,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,11,1,0,0,'a:0:{}'),(82,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(83,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(84,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(85,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(86,1,'civicrm/admin/custom/group/field/changetype',NULL,'Custom Field - Change Type','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:31:\"CRM_Custom_Form_ChangeFieldType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s: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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(87,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,20,1,0,NULL,'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\";}'),(88,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,21,1,0,0,'a:0:{}'),(89,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,22,1,0,NULL,'a:0:{}'),(90,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,23,1,0,NULL,'a:0:{}'),(91,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,24,1,0,NULL,'a:0:{}'),(92,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,25,1,0,NULL,'a:0:{}'),(93,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,0,1,0,NULL,'a:0:{}'),(94,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: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,NULL,NULL,NULL,1,30,1,0,NULL,'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\";}'),(95,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,35,1,0,NULL,'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\";}'),(96,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,40,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(97,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: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,NULL,NULL,NULL,1,45,1,0,NULL,'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\";}'),(98,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: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,NULL,NULL,NULL,1,50,1,0,NULL,'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\";}'),(99,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: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,NULL,NULL,NULL,1,55,1,0,NULL,'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\";}'),(100,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,60,1,0,NULL,'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\";}'),(101,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: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,NULL,NULL,NULL,1,65,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(102,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: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,NULL,NULL,NULL,1,70,1,0,NULL,'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\";}'),(103,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: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,NULL,NULL,NULL,1,75,1,0,NULL,'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\";}'),(104,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: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,NULL,NULL,NULL,1,80,1,0,NULL,'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\";}'),(105,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,90,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(106,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,95,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(107,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(108,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,100,1,0,NULL,'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\";}'),(109,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(110,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: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,NULL,NULL,NULL,1,110,1,0,NULL,'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\";}'),(111,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'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\";}'),(112,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: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,NULL,NULL,NULL,1,20,1,0,NULL,'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\";}'),(113,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,NULL,NULL,NULL,1,30,1,0,NULL,'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\";}'),(114,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,NULL,NULL,NULL,1,262,1,0,NULL,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),(115,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";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,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(116,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(117,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: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,NULL,NULL,NULL,1,50,1,0,NULL,'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\";}'),(118,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,60,1,0,NULL,'a:2:{s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(119,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,70,1,0,NULL,'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\";}'),(120,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: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,NULL,NULL,NULL,1,75,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(121,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: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,NULL,NULL,NULL,1,80,1,0,NULL,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(122,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: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,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(123,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: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,NULL,NULL,NULL,1,100,1,0,NULL,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),(124,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(125,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,20,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(126,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,30,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),(127,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: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,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),(128,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'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\";}'),(129,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),(130,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,20,1,0,NULL,'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\";}'),(131,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(132,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'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\";}'),(133,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:18:\"administer CiviCRM\";}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,NULL,NULL,NULL,1,120,1,0,NULL,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(134,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:18:\"administer CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(135,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}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,NULL,NULL,NULL,1,20,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(136,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,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(137,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,40,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(138,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','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: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,NULL,NULL,NULL,1,50,1,0,NULL,'a:2:{s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(139,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,60,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(140,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,70,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(141,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,80,1,0,NULL,'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\";}'),(142,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,90,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(143,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: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,NULL,NULL,NULL,1,100,1,0,NULL,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(144,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: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:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s: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,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(145,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,110,1,0,NULL,'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\";}'),(146,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,120,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(147,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,130,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),(148,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(149,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,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(150,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,NULL,NULL,NULL,1,430,1,0,NULL,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(151,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,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(152,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:18:\"administer CiviCRM\";}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,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),(153,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:18:\"administer CiviCRM\";}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,NULL,NULL,NULL,1,1370,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(154,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:18:\"administer CiviCRM\";}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,NULL,NULL,NULL,1,1380,1,0,NULL,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),(155,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: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,NULL,NULL,NULL,1,385,1,0,NULL,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'),(156,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,390,1,0,NULL,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),(157,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,9000,1,1,NULL,'a:0:{}'),(158,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(159,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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(160,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(161,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,NULL,NULL,NULL,1,380,1,0,NULL,'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\";}'),(162,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,NULL,NULL,NULL,1,1,1,0,NULL,'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.\";}'),(163,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,NULL,NULL,NULL,1,1,1,0,0,'a:0:{}'),(164,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(165,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(166,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(167,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,NULL,NULL,NULL,1,500,1,0,NULL,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),(168,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,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(169,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(170,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,399,1,0,NULL,'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\";}'),(171,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(172,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor','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:29:\"CRM_Admin_Page_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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(173,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,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(174,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,NULL,NULL,NULL,0,0,1,1,NULL,'a:0:{}'),(175,1,'civicrm/dashlet',NULL,'CiviCRM Dashlets','a:2:{i:0;s:19:\"CRM_Core_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_Contact_Page_Dashlet\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,1,NULL,'a:0:{}'),(176,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,NULL,NULL,NULL,0,10,1,1,NULL,'a:0:{}'),(177,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(178,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(179,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(180,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,NULL,NULL,NULL,0,12,1,1,NULL,'a:0:{}'),(181,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,NULL,NULL,NULL,0,14,1,1,NULL,'a:0:{}'),(182,1,'civicrm/contact/search/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:29:\"CRM_Contact_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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(183,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:2:{i:0;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,NULL,NULL,NULL,0,16,1,1,NULL,'a:0:{}'),(184,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(185,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(186,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(187,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(188,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(189,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(190,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(191,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(192,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(193,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(194,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(195,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(196,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(197,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(198,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(199,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(200,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(201,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(202,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(203,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(204,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(205,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(206,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(207,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(208,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(209,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(210,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(211,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(212,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(213,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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(214,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(215,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(216,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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(217,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(218,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(219,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(220,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(221,1,'civicrm/ajax/dashboard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_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:\"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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(222,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(223,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(224,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(225,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(226,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(227,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(228,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:2:{i:0;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:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(229,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,NULL,NULL,NULL,0,105,1,0,NULL,'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\";}'),(230,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(231,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(232,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(233,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,NULL,NULL,NULL,0,110,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),(234,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(235,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(236,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(237,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(238,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(239,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(240,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(241,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(242,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(243,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,NULL,NULL,NULL,0,30,1,1,NULL,'a:0:{}'),(244,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,NULL,NULL,NULL,0,1,1,0,NULL,'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\";}'),(245,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(246,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(247,1,'civicrm/tag',NULL,'Tags (Categories)','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,NULL,NULL,NULL,0,25,1,0,NULL,'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\";}'),(248,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:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(249,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:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(250,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(251,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(252,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,NULL,NULL,NULL,1,540,1,1,NULL,'a:0:{}'),(253,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(254,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(255,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,NULL,NULL,NULL,0,800,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(256,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(257,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(258,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,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(259,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,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(260,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(261,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(262,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(263,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,NULL,NULL,NULL,1,370,1,0,NULL,'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\";}'),(264,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,NULL,NULL,NULL,1,375,1,0,NULL,'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\";}'),(265,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,NULL,NULL,NULL,1,385,1,0,NULL,'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\";}'),(266,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,NULL,NULL,NULL,1,390,1,0,NULL,'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\";}'),(267,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,NULL,NULL,NULL,1,395,1,0,NULL,'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\";}'),(268,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: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,NULL,NULL,NULL,1,398,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(269,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,NULL,NULL,NULL,1,415,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(270,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,NULL,NULL,NULL,0,810,1,1,NULL,'a:0:{}'),(271,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,NULL,NULL,NULL,1,820,1,1,NULL,'a:0:{}'),(272,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(273,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,NULL,NULL,NULL,1,910,1,0,NULL,'a:0:{}'),(274,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,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(275,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,NULL,NULL,NULL,1,920,1,0,NULL,'a:0:{}'),(276,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,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(277,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,NULL,NULL,NULL,1,940,1,0,NULL,'a:0:{}'),(278,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,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(279,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,NULL,NULL,NULL,1,960,1,0,NULL,'a:0:{}'),(280,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,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(281,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,NULL,NULL,NULL,0,830,1,0,NULL,'a:0:{}'),(282,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,NULL,NULL,NULL,0,840,1,1,NULL,'a:0:{}'),(283,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,NULL,NULL,NULL,0,850,1,1,NULL,'a:0:{}'),(284,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,NULL,1,NULL,0,880,1,1,NULL,'a:0:{}'),(285,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,NULL,1,NULL,0,890,1,1,NULL,'a:0:{}'),(286,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,NULL,NULL,NULL,0,4,1,0,NULL,'a:0:{}'),(287,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(288,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(289,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(290,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,450,1,0,NULL,'a:0:{}'),(291,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,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(292,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,NULL,NULL,NULL,0,500,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(293,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,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(294,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(295,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,NULL,1,NULL,1,0,1,0,NULL,'a:0:{}'),(296,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,360,1,0,NULL,'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\";}'),(297,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,400,1,0,NULL,'a:0:{}'),(298,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,410,1,0,NULL,'a:0:{}'),(299,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,420,1,0,NULL,'a:0:{}'),(300,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(301,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(302,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,440,1,0,NULL,'a:0:{}'),(303,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,460,1,0,NULL,'a:0:{}'),(304,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,470,1,0,NULL,'a:0:{}'),(305,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,480,1,0,NULL,'a:0:{}'),(306,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(307,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,365,1,0,NULL,'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\";}'),(308,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,580,1,0,NULL,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(309,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,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(310,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,370,1,0,NULL,'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\";}'),(311,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: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,NULL,NULL,NULL,1,380,1,0,NULL,'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\";}'),(312,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: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,NULL,NULL,NULL,1,395,1,0,NULL,'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\";}'),(313,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: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,NULL,NULL,NULL,1,1,1,0,NULL,'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\";}'),(314,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(315,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(316,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(317,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,NULL,NULL,NULL,0,510,1,1,NULL,'a:0:{}'),(318,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,NULL,NULL,NULL,0,588,1,1,NULL,'a:0:{}'),(319,1,'civicrm/contribute/import',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:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,520,1,1,NULL,'a:0:{}'),(320,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,NULL,NULL,NULL,0,530,1,1,NULL,'a:0:{}'),(321,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,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(322,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(323,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(324,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(325,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(326,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(327,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(328,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,581,1,0,NULL,'a:0:{}'),(329,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,NULL,NULL,NULL,0,585,1,0,NULL,'a:0:{}'),(330,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,NULL,NULL,NULL,0,586,1,0,NULL,'a:0:{}'),(331,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,NULL,NULL,NULL,0,600,1,0,NULL,'a:0:{}'),(332,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,NULL,NULL,NULL,0,610,1,0,NULL,'a:0:{}'),(333,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,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(334,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(335,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,NULL,NULL,NULL,0,620,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(336,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,NULL,NULL,NULL,0,630,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(337,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(338,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(339,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(340,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,NULL,NULL,NULL,0,700,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(341,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(342,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,370,1,0,NULL,'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\";}'),(343,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,380,1,0,NULL,'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\";}'),(344,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,NULL,NULL,NULL,0,2,1,0,NULL,'a:0:{}'),(345,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,NULL,NULL,NULL,0,390,1,0,NULL,'a:0:{}'),(346,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,NULL,NULL,NULL,0,710,1,1,NULL,'a:0:{}'),(347,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,NULL,NULL,NULL,0,720,1,1,NULL,'a:0:{}'),(348,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(349,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(350,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,NULL,NULL,NULL,0,600,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),(351,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,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(352,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,NULL,NULL,NULL,1,410,1,0,NULL,'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\";}'),(353,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: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: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,NULL,NULL,NULL,1,415,1,0,NULL,'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\";}'),(354,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,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(355,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,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(356,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,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(357,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,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(358,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,NULL,NULL,NULL,0,625,1,1,NULL,'a:0:{}'),(359,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,NULL,NULL,NULL,0,630,1,1,NULL,'a:0:{}'),(360,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,NULL,1,NULL,0,640,1,0,NULL,'a:0:{}'),(361,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,NULL,1,NULL,0,645,1,0,NULL,'a:0:{}'),(362,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,NULL,1,NULL,0,650,1,0,NULL,'a:0:{}'),(363,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,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(364,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,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(365,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,NULL,NULL,NULL,0,670,1,0,NULL,'a:0:{}'),(366,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,NULL,NULL,NULL,0,680,1,0,NULL,'a:0:{}'),(367,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,NULL,1,NULL,0,685,1,0,NULL,'a:0:{}'),(368,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,NULL,NULL,NULL,0,690,1,0,NULL,'a:0:{}'),(369,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,NULL,NULL,NULL,0,695,1,0,NULL,'a:0:{}'),(370,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(371,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,NULL,1,NULL,0,800,1,0,NULL,'a:0:{}'),(372,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,NULL,NULL,NULL,0,850,1,0,NULL,'a:0:{}'),(373,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(374,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(375,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(376,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(377,1,'civicrm/grant',NULL,'CiviGrant Dashboard','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 CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_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,5,NULL,NULL,NULL,0,1000,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(378,1,'civicrm/grant/info',NULL,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 CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_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:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(379,1,'civicrm/grant/search',NULL,'Find Grants','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 CiviGrant\";}i:1;s:3:\"and\";}','s:27:\"CRM_Grant_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:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1010,1,1,NULL,'a:0:{}'),(380,1,'civicrm/grant/add','action=add','New Grant','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 CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_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:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(381,1,'civicrm/contact/view/grant',NULL,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 CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(382,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,NULL,NULL,NULL,0,550,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(383,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,NULL,NULL,NULL,0,560,1,1,NULL,'a:0:{}'),(384,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,NULL,NULL,NULL,0,570,1,0,NULL,'a:0:{}'),(385,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,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(386,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,NULL,NULL,NULL,0,580,1,0,NULL,'a:0:{}'),(387,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(388,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,NULL,NULL,NULL,0,900,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(389,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,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(390,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,NULL,NULL,NULL,0,910,1,1,NULL,'a:0:{}'),(391,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(392,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(393,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(394,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(395,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(396,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(397,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(398,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(399,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,380,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(400,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,NULL,NULL,NULL,1,390,1,0,NULL,'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\";}'),(401,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,NULL,NULL,NULL,1,400,1,0,NULL,'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\";}'),(402,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,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(403,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,NULL,NULL,NULL,1,400,1,0,NULL,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),(404,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(405,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(406,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,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(407,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(408,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(409,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(410,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,NULL,NULL,NULL,0,1200,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),(411,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(412,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,NULL,NULL,NULL,0,1220,1,1,NULL,'a:0:{}'),(413,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,NULL,NULL,NULL,0,1241,1,1,NULL,'a:0:{}'),(414,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),(415,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(416,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(417,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(418,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:2:{i:0;s:18:\"administer CiviCRM\";i:1;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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),(419,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(420,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(421,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(422,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(423,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,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(424,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: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,NULL,NULL,NULL,1,2,1,0,NULL,'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\";}'),(425,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: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,NULL,NULL,NULL,1,3,1,0,NULL,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(426,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: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,NULL,NULL,NULL,1,4,1,0,NULL,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(427,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(428,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(429,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(430,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(431,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(432,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(433,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(434,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(435,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(436,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(437,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(438,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,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(439,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(440,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(441,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(442,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,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(443,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(444,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,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(445,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Tags (Categories)\";a:6:{s:5:\"title\";s:17:\"Tags (Categories)\";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:15:\"Tags_Categories\";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:18:{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:62:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";a:6:{s:5:\"title\";s:53:\"Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:2:\"id\";s:46:\"Misc_Undelete_PDFs_Limits_Logging_Captcha_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: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: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:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme 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,NULL,NULL,NULL,NULL,1,1,1,NULL,'a:0:{}'); /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */; UNLOCK TABLES; @@ -987,7 +987,7 @@ 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`, `modified_date`, `subject`, `privacy`) VALUES (1,'civicrm_contact',111,'Organize the Terry Fox run',1,'2020-03-15 13:56:17',NULL,'0'),(2,'civicrm_contact',180,'Invite members for the Steve Prefontaine 10k dream run',1,'2019-12-27 08:16:05',NULL,'0'),(3,'civicrm_contact',144,'Reminder screening of \"Black\" on next Friday',1,'2019-08-13 00:36:17',NULL,'0'),(4,'civicrm_contact',144,'Invite members for the Steve Prefontaine 10k dream run',1,'2019-12-08 18:56:53',NULL,'0'),(5,'civicrm_contact',37,'Send newsletter for April 2005',1,'2019-06-27 07:32:14',NULL,'0'),(6,'civicrm_contact',90,'Contact the Commissioner of Charities',1,'2020-05-17 06:21:42',NULL,'0'),(7,'civicrm_contact',76,'Reminder screening of \"Black\" on next Friday',1,'2019-06-30 09:38:54',NULL,'0'),(8,'civicrm_contact',80,'Contact the Commissioner of Charities',1,'2019-12-30 12:22:47',NULL,'0'),(9,'civicrm_contact',129,'Contact the Commissioner of Charities',1,'2019-11-03 06:00:26',NULL,'0'),(10,'civicrm_contact',114,'Organize the Terry Fox run',1,'2019-10-21 16:48:05',NULL,'0'),(11,'civicrm_contact',194,'Get the registration done for NGO status',1,'2019-07-15 09:46:22',NULL,'0'),(12,'civicrm_contact',129,'Send newsletter for April 2005',1,'2019-09-25 20:24:51',NULL,'0'),(13,'civicrm_contact',90,'Send reminder for annual dinner',1,'2019-12-18 08:59:41',NULL,'0'),(14,'civicrm_contact',71,'Arrange collection of funds from members',1,'2019-07-15 18:17:01',NULL,'0'),(15,'civicrm_contact',93,'Get the registration done for NGO status',1,'2020-05-07 01:26:49',NULL,'0'),(16,'civicrm_contact',151,'Get the registration done for NGO status',1,'2019-09-06 03:53:33',NULL,'0'),(17,'civicrm_contact',180,'Contact the Commissioner of Charities',1,'2019-12-14 07:56:34',NULL,'0'),(18,'civicrm_contact',36,'Send reminder for annual dinner',1,'2019-08-07 14:15:32',NULL,'0'),(19,'civicrm_contact',186,'Reminder screening of \"Black\" on next Friday',1,'2020-02-14 02:41:51',NULL,'0'),(20,'civicrm_contact',126,'Arrange for cricket match with Sunil Gavaskar',1,'2020-04-23 20:03:44',NULL,'0'); +INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `modified_date`, `subject`, `privacy`) VALUES (1,'civicrm_contact',28,'Send newsletter for April 2005',1,'2019-09-02 00:41:40',NULL,'0'),(2,'civicrm_contact',107,'Arrange collection of funds from members',1,'2019-09-09 01:52:24',NULL,'0'),(3,'civicrm_contact',55,'Arrange for cricket match with Sunil Gavaskar',1,'2020-03-17 05:55:57',NULL,'0'),(4,'civicrm_contact',127,'Arrange for cricket match with Sunil Gavaskar',1,'2020-01-06 16:42:05',NULL,'0'),(5,'civicrm_contact',11,'Get the registration done for NGO status',1,'2020-03-14 21:36:20',NULL,'0'),(6,'civicrm_contact',31,'Arrange for cricket match with Sunil Gavaskar',1,'2020-01-15 12:34:59',NULL,'0'),(7,'civicrm_contact',9,'Get the registration done for NGO status',1,'2020-04-04 16:34:03',NULL,'0'),(8,'civicrm_contact',156,'Organize the Terry Fox run',1,'2020-06-11 17:14:32',NULL,'0'),(9,'civicrm_contact',184,'Organize the Terry Fox run',1,'2019-08-28 14:26:46',NULL,'0'),(10,'civicrm_contact',145,'Connect for presentation',1,'2020-04-11 06:37:49',NULL,'0'),(11,'civicrm_contact',142,'Get the registration done for NGO status',1,'2019-12-25 10:02:53',NULL,'0'),(12,'civicrm_contact',171,'Send reminder for annual dinner',1,'2020-01-31 09:23:45',NULL,'0'),(13,'civicrm_contact',134,'Connect for presentation',1,'2019-08-12 07:42:08',NULL,'0'),(14,'civicrm_contact',111,'Arrange collection of funds from members',1,'2020-06-17 02:20:44',NULL,'0'),(15,'civicrm_contact',50,'Arrange for cricket match with Sunil Gavaskar',1,'2020-06-25 17:58:48',NULL,'0'),(16,'civicrm_contact',122,'Contact the Commissioner of Charities',1,'2020-02-03 07:57:20',NULL,'0'),(17,'civicrm_contact',118,'Contact the Commissioner of Charities',1,'2020-07-15 08:44:29',NULL,'0'),(18,'civicrm_contact',71,'Get the registration done for NGO status',1,'2019-12-13 18:51:30',NULL,'0'),(19,'civicrm_contact',131,'Chart out route map for next 10k run',1,'2020-02-17 08:34:21',NULL,'0'),(20,'civicrm_contact',71,'Send newsletter for April 2005',1,'2019-08-13 01:44:38',NULL,'0'); /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */; UNLOCK TABLES; @@ -1016,7 +1016,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_option_value` WRITE; /*!40000 ALTER TABLE `civicrm_option_value` DISABLE KEYS */; -INSERT INTO `civicrm_option_value` (`id`, `option_group_id`, `label`, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `description`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `domain_id`, `visibility_id`, `icon`, `color`) VALUES (1,1,'Phone','1','Phone',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(2,1,'Email','2','Email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(3,1,'Postal Mail','3','Postal Mail',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(4,1,'SMS','4','SMS',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(5,1,'Fax','5','Fax',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(6,2,'Meeting','1','Meeting',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,'fa-slideshare',NULL),(7,2,'Phone Call','2','Phone Call',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,'fa-phone',NULL),(8,2,'Email','3','Email',NULL,1,NULL,3,'Email sent.',0,1,1,NULL,NULL,NULL,'fa-envelope-o',NULL),(9,2,'Outbound SMS','4','SMS',NULL,1,NULL,4,'Text message (SMS) sent.',0,1,1,NULL,NULL,NULL,'fa-mobile',NULL),(10,2,'Event Registration','5','Event Registration',NULL,1,NULL,5,'Online or offline event registration.',0,1,1,1,NULL,NULL,NULL,NULL),(11,2,'Contribution','6','Contribution',NULL,1,NULL,6,'Online or offline contribution.',0,1,1,2,NULL,NULL,NULL,NULL),(12,2,'Membership Signup','7','Membership Signup',NULL,1,NULL,7,'Online or offline membership signup.',0,1,1,3,NULL,NULL,NULL,NULL),(13,2,'Membership Renewal','8','Membership Renewal',NULL,1,NULL,8,'Online or offline membership renewal.',0,1,1,3,NULL,NULL,NULL,NULL),(14,2,'Tell a Friend','9','Tell a Friend',NULL,1,NULL,9,'Send information about a contribution campaign or event to a friend.',0,1,1,NULL,NULL,NULL,NULL,NULL),(15,2,'Pledge Acknowledgment','10','Pledge Acknowledgment',NULL,1,NULL,10,'Send Pledge Acknowledgment.',0,1,1,6,NULL,NULL,NULL,NULL),(16,2,'Pledge Reminder','11','Pledge Reminder',NULL,1,NULL,11,'Send Pledge Reminder.',0,1,1,6,NULL,NULL,NULL,NULL),(17,2,'Inbound Email','12','Inbound Email',NULL,1,NULL,12,'Inbound Email.',0,1,1,NULL,NULL,NULL,NULL,NULL),(18,2,'Open Case','13','Open Case',NULL,0,0,13,'',0,1,1,7,NULL,NULL,'fa-folder-open-o',NULL),(19,2,'Follow up','14','Follow up',NULL,0,0,14,'',0,1,1,7,NULL,NULL,'fa-share-square-o',NULL),(20,2,'Change Case Type','15','Change Case Type',NULL,0,0,15,'',0,1,1,7,NULL,NULL,'fa-random',NULL),(21,2,'Change Case Status','16','Change Case Status',NULL,0,0,16,'',0,1,1,7,NULL,NULL,'fa-pencil-square-o',NULL),(22,2,'Change Case Subject','53','Change Case Subject',NULL,0,0,53,'',0,1,1,7,NULL,NULL,'fa-pencil-square-o',NULL),(23,2,'Change Custom Data','33','Change Custom Data',NULL,0,0,33,'',0,1,1,7,NULL,NULL,'fa-table',NULL),(24,2,'Membership Renewal Reminder','17','Membership Renewal Reminder',NULL,1,NULL,17,'offline membership renewal reminder.',0,1,1,3,NULL,NULL,NULL,NULL),(25,2,'Change Case Start Date','18','Change Case Start Date',NULL,0,0,18,'',0,1,1,7,NULL,NULL,'fa-calendar',NULL),(26,2,'Bulk Email','19','Bulk Email',NULL,1,NULL,19,'Bulk Email Sent.',0,1,1,NULL,NULL,NULL,NULL,NULL),(27,2,'Assign Case Role','20','Assign Case Role',NULL,0,0,20,'',0,1,1,7,NULL,NULL,'fa-user-plus',NULL),(28,2,'Remove Case Role','21','Remove Case Role',NULL,0,0,21,'',0,1,1,7,NULL,NULL,'fa-user-times',NULL),(29,2,'Print/Merge Document','22','Print PDF Letter',NULL,0,NULL,22,'Export letters and other printable documents.',0,1,1,NULL,NULL,NULL,'fa-file-pdf-o',NULL),(30,2,'Merge Case','23','Merge Case',NULL,0,NULL,23,'',0,1,1,7,NULL,NULL,'fa-compress',NULL),(31,2,'Reassigned Case','24','Reassigned Case',NULL,0,NULL,24,'',0,1,1,7,NULL,NULL,'fa-user-circle-o',NULL),(32,2,'Link Cases','25','Link Cases',NULL,0,NULL,25,'',0,1,1,7,NULL,NULL,'fa-link',NULL),(33,2,'Change Case Tags','26','Change Case Tags',NULL,0,0,26,'',0,1,1,7,NULL,NULL,'fa-tags',NULL),(34,2,'Add Client To Case','27','Add Client To Case',NULL,0,0,26,'',0,1,1,7,NULL,NULL,'fa-users',NULL),(35,2,'Survey','28','Survey',NULL,0,0,27,'',0,1,1,9,NULL,NULL,NULL,NULL),(36,2,'Canvass','29','Canvass',NULL,0,0,28,'',0,1,1,9,NULL,NULL,NULL,NULL),(37,2,'PhoneBank','30','PhoneBank',NULL,0,0,29,'',0,1,1,9,NULL,NULL,NULL,NULL),(38,2,'WalkList','31','WalkList',NULL,0,0,30,'',0,1,1,9,NULL,NULL,NULL,NULL),(39,2,'Petition Signature','32','Petition',NULL,0,0,31,'',0,1,1,9,NULL,NULL,NULL,NULL),(40,2,'Mass SMS','34','Mass SMS',NULL,1,NULL,34,'Mass SMS',0,1,1,NULL,NULL,NULL,NULL,NULL),(41,2,'Change Membership Status','35','Change Membership Status',NULL,1,NULL,35,'Change Membership Status.',0,1,1,3,NULL,NULL,NULL,NULL),(42,2,'Change Membership Type','36','Change Membership Type',NULL,1,NULL,36,'Change Membership Type.',0,1,1,3,NULL,NULL,NULL,NULL),(43,2,'Cancel Recurring Contribution','37','Cancel Recurring Contribution',NULL,1,0,37,'',0,1,1,2,NULL,NULL,NULL,NULL),(44,2,'Update Recurring Contribution Billing Details','38','Update Recurring Contribution Billing Details',NULL,1,0,38,'',0,1,1,2,NULL,NULL,NULL,NULL),(45,2,'Update Recurring Contribution','39','Update Recurring Contribution',NULL,1,0,39,'',0,1,1,2,NULL,NULL,NULL,NULL),(46,2,'Reminder Sent','40','Reminder Sent',NULL,1,0,40,'',0,1,1,NULL,NULL,NULL,NULL,NULL),(47,2,'Export Accounting Batch','41','Export Accounting Batch',NULL,1,0,41,'Export Accounting Batch',0,1,1,2,NULL,NULL,NULL,NULL),(48,2,'Create Batch','42','Create Batch',NULL,1,0,42,'Create Batch',0,1,1,2,NULL,NULL,NULL,NULL),(49,2,'Edit Batch','43','Edit Batch',NULL,1,0,43,'Edit Batch',0,1,1,2,NULL,NULL,NULL,NULL),(50,2,'SMS delivery','44','SMS delivery',NULL,1,NULL,44,'SMS delivery',0,1,1,NULL,NULL,NULL,NULL,NULL),(51,2,'Inbound SMS','45','Inbound SMS',NULL,1,NULL,45,'Inbound SMS',0,1,1,NULL,NULL,NULL,NULL,NULL),(52,2,'Payment','46','Payment',NULL,1,NULL,46,'Additional payment recorded for event or membership fee.',0,1,1,2,NULL,NULL,NULL,NULL),(53,2,'Refund','47','Refund',NULL,1,NULL,47,'Refund recorded for event or membership fee.',0,1,1,2,NULL,NULL,NULL,NULL),(54,2,'Change Registration','48','Change Registration',NULL,1,NULL,48,'Changes to an existing event registration.',0,1,1,1,NULL,NULL,NULL,NULL),(55,2,'Downloaded Invoice','49','Downloaded Invoice',NULL,1,NULL,49,'Downloaded Invoice.',0,1,1,NULL,NULL,NULL,NULL,NULL),(56,2,'Emailed Invoice','50','Emailed Invoice',NULL,1,NULL,50,'Emailed Invoice.',0,1,1,NULL,NULL,NULL,NULL,NULL),(57,2,'Contact Merged','51','Contact Merged',NULL,1,NULL,51,'Contact Merged',0,1,1,NULL,NULL,NULL,NULL,NULL),(58,2,'Contact Deleted by Merge','52','Contact Deleted by Merge',NULL,1,NULL,52,'Contact was merged into another contact',0,1,1,NULL,NULL,NULL,NULL,NULL),(59,2,'Failed Payment','54','Failed Payment',NULL,1,0,54,'Failed Payment',0,1,1,2,NULL,NULL,NULL,NULL),(60,3,'Female','1','Female',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(61,3,'Male','2','Male',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(62,3,'Other','3','Other',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(63,4,'Yahoo','1','Yahoo',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(64,4,'MSN','2','Msn',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(65,4,'AIM','3','Aim',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(66,4,'GTalk','4','Gtalk',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(67,4,'Jabber','5','Jabber',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(68,4,'Skype','6','Skype',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(69,5,'Sprint','1','Sprint',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(70,5,'Verizon','2','Verizon',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(71,5,'Cingular','3','Cingular',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(72,6,'Mrs.','1','Mrs.',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(73,6,'Ms.','2','Ms.',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(74,6,'Mr.','3','Mr.',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(75,6,'Dr.','4','Dr.',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(76,7,'Jr.','1','Jr.',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(77,7,'Sr.','2','Sr.',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(78,7,'II','3','II',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(79,7,'III','4','III',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(80,7,'IV','5','IV',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(81,7,'V','6','V',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(82,7,'VI','7','VI',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(83,7,'VII','8','VII',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(84,8,'Administrator','1','Admin',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(85,8,'Authenticated','2','Auth',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(86,9,'Visa','1','Visa',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(87,9,'MasterCard','2','MasterCard',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(88,9,'Amex','3','Amex',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(89,9,'Discover','4','Discover',NULL,0,NULL,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,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(96,11,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(97,11,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(98,11,'Failed','4','Failed',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(99,11,'In Progress','5','In Progress',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(100,11,'Overdue','6','Overdue',NULL,0,NULL,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(101,11,'Refunded','7','Refunded',NULL,0,NULL,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(102,11,'Partially paid','8','Partially paid',NULL,0,NULL,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(103,11,'Pending refund','9','Pending refund',NULL,0,NULL,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(104,11,'Chargeback','10','Chargeback',NULL,0,NULL,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(105,11,'Template','11','Template',NULL,0,NULL,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),(106,12,'Waiting Review','1','Waiting Review',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(107,12,'Approved','2','Approved',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(108,12,'Not Approved','3','Not Approved',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(109,13,'Owner chooses whether to receive notifications','1','owner_chooses',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(110,13,'Notifications are sent to ALL owners','2','all_owners',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(111,13,'Notifications are NOT available','3','no_notifications',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(112,14,'Attendee','1','Attendee',NULL,1,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(113,14,'Volunteer','2','Volunteer',NULL,1,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(114,14,'Host','3','Host',NULL,1,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(115,14,'Speaker','4','Speaker',NULL,1,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(116,15,'Conference','1','Conference',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(117,15,'Exhibition','2','Exhibition',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(118,15,'Fundraiser','3','Fundraiser',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(119,15,'Meeting','4','Meeting',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(120,15,'Performance','5','Performance',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(121,15,'Workshop','6','Workshop',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(122,16,'Activities','1','activity',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(123,16,'Relationships','2','rel',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(124,16,'Groups','3','group',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(125,16,'Notes','4','note',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(126,16,'Tags','5','tag',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(127,16,'Change Log','6','log',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(128,16,'Contributions','7','CiviContribute',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(129,16,'Memberships','8','CiviMember',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(130,16,'Events','9','CiviEvent',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(131,16,'Cases','10','CiviCase',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(132,16,'Grants','11','CiviGrant',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(133,16,'Pledges','13','CiviPledge',NULL,0,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(134,16,'Mailings','14','CiviMail',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(135,17,'Show Smart Groups on Demand','1','showondemand',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(136,17,'Always Show Smart Groups','2','alwaysshow',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(137,17,'Hide Smart Groups','3','hide',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(138,18,'Custom Data','1','CustomData',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(139,18,'Address','2','Address',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(140,18,'Communication Preferences','3','CommunicationPreferences',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(141,18,'Notes','4','Notes',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(142,18,'Demographics','5','Demographics',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(143,18,'Tags and Groups','6','TagsAndGroups',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(144,18,'Email','7','Email',NULL,1,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(145,18,'Phone','8','Phone',NULL,1,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(146,18,'Instant Messenger','9','IM',NULL,1,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(147,18,'Open ID','10','OpenID',NULL,1,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(148,18,'Website','11','Website',NULL,1,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(149,18,'Prefix','12','Prefix',NULL,2,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(150,18,'Formal Title','13','Formal Title',NULL,2,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(151,18,'First Name','14','First Name',NULL,2,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(152,18,'Middle Name','15','Middle Name',NULL,2,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(153,18,'Last Name','16','Last Name',NULL,2,NULL,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(154,18,'Suffix','17','Suffix',NULL,2,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(155,19,'Address Fields','1','location',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(156,19,'Custom Fields','2','custom',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(157,19,'Activities','3','activity',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(158,19,'Relationships','4','relationship',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(159,19,'Notes','5','notes',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(160,19,'Change Log','6','changeLog',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(161,19,'Contributions','7','CiviContribute',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(162,19,'Memberships','8','CiviMember',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(163,19,'Events','9','CiviEvent',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(164,19,'Cases','10','CiviCase',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(165,19,'Grants','12','CiviGrant',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(166,19,'Demographics','13','demographics',NULL,0,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(167,19,'Pledges','15','CiviPledge',NULL,0,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(168,19,'Contact Type','16','contactType',NULL,0,NULL,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(169,19,'Groups','17','groups',NULL,0,NULL,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(170,19,'Tags','18','tags',NULL,0,NULL,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(171,19,'Mailing','19','CiviMail',NULL,0,NULL,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(172,20,'Groups','1','Groups',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(173,20,'Contributions','2','CiviContribute',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(174,20,'Memberships','3','CiviMember',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(175,20,'Events','4','CiviEvent',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(176,20,'My Contacts / Organizations','5','Permissioned Orgs',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(177,20,'Pledges','7','CiviPledge',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(178,20,'Personal Campaign Pages','8','PCP',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(179,20,'Assigned Activities','9','Assigned Activities',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(180,20,'Invoices / Credit Notes','10','Invoices / Credit Notes',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(181,45,'Email Address','2','email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(182,45,'Phone','3','phone',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(183,45,'Street Address','4','street_address',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(184,45,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(185,45,'State/Province','6','state_province',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(186,45,'Country','7','country',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(187,45,'Postal Code','8','postal_code',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(188,46,'Email Address','2','email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(189,46,'Phone','3','phone',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(190,46,'Street Address','4','street_address',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(191,46,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(192,46,'State/Province','6','state_province',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(193,46,'Country','7','country',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(194,46,'Postal Code','8','postal_code',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(195,21,'Street Address','1','street_address',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(196,21,'Supplemental Address 1','2','supplemental_address_1',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(197,21,'Supplemental Address 2','3','supplemental_address_2',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(198,21,'Supplemental Address 3','4','supplemental_address_3',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(199,21,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(200,21,'Postal Code','6','postal_code',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(201,21,'Postal Code Suffix','7','postal_code_suffix',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(202,21,'County','8','county',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(203,21,'State/Province','9','state_province',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(204,21,'Country','10','country',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(205,21,'Latitude','11','geo_code_1',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(206,21,'Longitude','12','geo_code_2',NULL,0,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(207,21,'Address Name','13','address_name',NULL,0,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(208,21,'Street Address Parsing','14','street_address_parsing',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(209,22,'Access Control','1','Access Control',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(210,22,'Mailing List','2','Mailing List',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(211,23,'Submitted','1','Submitted',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(212,23,'Eligible','2','Eligible',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(213,23,'Ineligible','3','Ineligible',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(214,23,'Paid','4','Paid',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(215,23,'Awaiting Information','5','Awaiting Information',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(216,23,'Withdrawn','6','Withdrawn',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(217,23,'Approved for Payment','7','Approved for Payment',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(218,25,'CRM_Contact_Form_Search_Custom_Sample','1','CRM_Contact_Form_Search_Custom_Sample',NULL,0,NULL,1,'Household Name and State',0,0,1,NULL,NULL,NULL,NULL,NULL),(219,25,'CRM_Contact_Form_Search_Custom_ContributionAggregate','2','CRM_Contact_Form_Search_Custom_ContributionAggregate',NULL,0,NULL,2,'Contribution Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL),(220,25,'CRM_Contact_Form_Search_Custom_Group','4','CRM_Contact_Form_Search_Custom_Group',NULL,0,NULL,4,'Include / Exclude Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(221,25,'CRM_Contact_Form_Search_Custom_PostalMailing','5','CRM_Contact_Form_Search_Custom_PostalMailing',NULL,0,NULL,5,'Postal Mailing',0,0,1,NULL,NULL,NULL,NULL,NULL),(222,25,'CRM_Contact_Form_Search_Custom_Proximity','6','CRM_Contact_Form_Search_Custom_Proximity',NULL,0,NULL,6,'Proximity Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(223,25,'CRM_Contact_Form_Search_Custom_EventAggregate','7','CRM_Contact_Form_Search_Custom_EventAggregate',NULL,0,NULL,7,'Event Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL),(224,25,'CRM_Contact_Form_Search_Custom_ActivitySearch','8','CRM_Contact_Form_Search_Custom_ActivitySearch',NULL,0,NULL,8,'Activity Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(225,25,'CRM_Contact_Form_Search_Custom_PriceSet','9','CRM_Contact_Form_Search_Custom_PriceSet',NULL,0,NULL,9,'Price Set Details for Event Participants',0,0,1,NULL,NULL,NULL,NULL,NULL),(226,25,'CRM_Contact_Form_Search_Custom_ZipCodeRange','10','CRM_Contact_Form_Search_Custom_ZipCodeRange',NULL,0,NULL,10,'Zip Code Range',0,0,1,NULL,NULL,NULL,NULL,NULL),(227,25,'CRM_Contact_Form_Search_Custom_DateAdded','11','CRM_Contact_Form_Search_Custom_DateAdded',NULL,0,NULL,11,'Date Added to CiviCRM',0,0,1,NULL,NULL,NULL,NULL,NULL),(228,25,'CRM_Contact_Form_Search_Custom_MultipleValues','12','CRM_Contact_Form_Search_Custom_MultipleValues',NULL,0,NULL,12,'Custom Group Multiple Values Listing',0,0,1,NULL,NULL,NULL,NULL,NULL),(229,25,'CRM_Contact_Form_Search_Custom_ContribSYBNT','13','CRM_Contact_Form_Search_Custom_ContribSYBNT',NULL,0,NULL,13,'Contributions made in Year X and not Year Y',0,0,1,NULL,NULL,NULL,NULL,NULL),(230,25,'CRM_Contact_Form_Search_Custom_TagContributions','14','CRM_Contact_Form_Search_Custom_TagContributions',NULL,0,NULL,14,'Find Contribution Amounts by Tag',0,0,1,NULL,NULL,NULL,NULL,NULL),(231,25,'CRM_Contact_Form_Search_Custom_FullText','15','CRM_Contact_Form_Search_Custom_FullText',NULL,0,NULL,15,'Full-text Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(232,41,'Constituent Report (Summary)','contact/summary','CRM_Report_Form_Contact_Summary',NULL,0,NULL,1,'Provides a list of address and telephone information for constituent records in your system.',0,0,1,NULL,NULL,NULL,NULL,NULL),(233,41,'Constituent Report (Detail)','contact/detail','CRM_Report_Form_Contact_Detail',NULL,0,NULL,2,'Provides contact-related information on contributions, memberships, events and activities.',0,0,1,NULL,NULL,NULL,NULL,NULL),(234,41,'Activity Details Report','activity','CRM_Report_Form_Activity',NULL,0,NULL,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),(235,41,'Walk / Phone List Report','walklist','CRM_Report_Form_Walklist_Walklist',NULL,0,NULL,4,'Provides a detailed report for your walk/phonelist for targeted contacts',0,0,0,NULL,NULL,NULL,NULL,NULL),(236,41,'Current Employer Report','contact/currentEmployer','CRM_Report_Form_Contact_CurrentEmployer',NULL,0,NULL,5,'Provides detail list of employer employee relationships along with employment details Ex Join Date',0,0,1,NULL,NULL,NULL,NULL,NULL),(237,41,'Contribution Summary Report','contribute/summary','CRM_Report_Form_Contribute_Summary',NULL,0,NULL,6,'Groups and totals contributions by criteria including contact, time period, financial type, contributor location, etc.',0,0,1,2,NULL,NULL,NULL,NULL),(238,41,'Contribution Detail Report','contribute/detail','CRM_Report_Form_Contribute_Detail',NULL,0,NULL,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),(239,41,'Repeat Contributions Report','contribute/repeat','CRM_Report_Form_Contribute_Repeat',NULL,0,NULL,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),(240,41,'Contributions by Organization Report','contribute/organizationSummary','CRM_Report_Form_Contribute_OrganizationSummary',NULL,0,NULL,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),(241,41,'Contributions by Household Report','contribute/householdSummary','CRM_Report_Form_Contribute_HouseholdSummary',NULL,0,NULL,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),(242,41,'Top Donors Report','contribute/topDonor','CRM_Report_Form_Contribute_TopDonor',NULL,0,NULL,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),(243,41,'SYBUNT Report','contribute/sybunt','CRM_Report_Form_Contribute_Sybunt',NULL,0,NULL,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),(244,41,'LYBUNT Report','contribute/lybunt','CRM_Report_Form_Contribute_Lybunt',NULL,0,NULL,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),(245,41,'Soft Credit Report','contribute/softcredit','CRM_Report_Form_Contribute_SoftCredit',NULL,0,NULL,14,'Shows contributions made by contacts that have been soft-credited to other contacts.',0,0,1,2,NULL,NULL,NULL,NULL),(246,41,'Membership Report (Summary)','member/summary','CRM_Report_Form_Member_Summary',NULL,0,NULL,15,'Provides a summary of memberships by type and join date.',0,0,1,3,NULL,NULL,NULL,NULL),(247,41,'Membership Report (Detail)','member/detail','CRM_Report_Form_Member_Detail',NULL,0,NULL,16,'Provides a list of members along with their membership status and membership details (Join Date, Start Date, End Date). Can also display contributions (payments) associated with each membership.',0,0,1,3,NULL,NULL,NULL,NULL),(248,41,'Membership Report (Lapsed)','member/lapse','CRM_Report_Form_Member_Lapse',NULL,0,NULL,17,'Provides a list of memberships that lapsed or will lapse before the date you specify.',0,0,1,3,NULL,NULL,NULL,NULL),(249,41,'Event Participant Report (List)','event/participantListing','CRM_Report_Form_Event_ParticipantListing',NULL,0,NULL,18,'Provides lists of participants for an event.',0,0,1,1,NULL,NULL,NULL,NULL),(250,41,'Event Income Report (Summary)','event/summary','CRM_Report_Form_Event_Summary',NULL,0,NULL,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),(251,41,'Event Income Report (Detail)','event/income','CRM_Report_Form_Event_Income',NULL,0,NULL,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),(252,41,'Pledge Detail Report','pledge/detail','CRM_Report_Form_Pledge_Detail',NULL,0,NULL,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),(253,41,'Pledged but not Paid Report','pledge/pbnp','CRM_Report_Form_Pledge_Pbnp',NULL,0,NULL,22,'Pledged but not Paid Report',0,0,1,6,NULL,NULL,NULL,NULL),(254,41,'Relationship Report','contact/relationship','CRM_Report_Form_Contact_Relationship',NULL,0,NULL,23,'Relationship Report',0,0,1,NULL,NULL,NULL,NULL,NULL),(255,41,'Case Summary Report','case/summary','CRM_Report_Form_Case_Summary',NULL,0,NULL,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),(256,41,'Case Time Spent Report','case/timespent','CRM_Report_Form_Case_TimeSpent',NULL,0,NULL,25,'Aggregates time spent on case and / or non-case activities by activity type and contact.',0,0,1,7,NULL,NULL,NULL,NULL),(257,41,'Contact Demographics Report','case/demographics','CRM_Report_Form_Case_Demographics',NULL,0,NULL,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),(258,41,'Database Log Report','contact/log','CRM_Report_Form_Contact_Log',NULL,0,NULL,27,'Log of contact and activity records created or updated in a given date range.',0,0,1,NULL,NULL,NULL,NULL,NULL),(259,41,'Activity Summary Report','activitySummary','CRM_Report_Form_ActivitySummary',NULL,0,NULL,28,'Shows activity statistics by type / date',0,0,1,NULL,NULL,NULL,NULL,NULL),(260,41,'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),(261,41,'Grant Report (Detail)','grant/detail','CRM_Report_Form_Grant_Detail',NULL,0,0,30,'Grant Report Detail',0,0,1,5,NULL,NULL,NULL,NULL),(262,41,'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),(263,41,'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),(264,41,'Case Detail Report','case/detail','CRM_Report_Form_Case_Detail',NULL,0,0,33,'Case Details',0,0,1,7,NULL,NULL,NULL,NULL),(265,41,'Mail Bounce Report','Mailing/bounce','CRM_Report_Form_Mailing_Bounce',NULL,0,NULL,34,'Bounce Report for mailings',0,0,1,4,NULL,NULL,NULL,NULL),(266,41,'Mail Summary Report','Mailing/summary','CRM_Report_Form_Mailing_Summary',NULL,0,NULL,35,'Summary statistics for mailings',0,0,1,4,NULL,NULL,NULL,NULL),(267,41,'Mail Opened Report','Mailing/opened','CRM_Report_Form_Mailing_Opened',NULL,0,NULL,36,'Display contacts who opened emails from a mailing',0,0,1,4,NULL,NULL,NULL,NULL),(268,41,'Mail Click-Through Report','Mailing/clicks','CRM_Report_Form_Mailing_Clicks',NULL,0,NULL,37,'Display clicks from each mailing',0,0,1,4,NULL,NULL,NULL,NULL),(269,41,'Contact Logging Report (Summary)','logging/contact/summary','CRM_Report_Form_Contact_LoggingSummary',NULL,0,NULL,38,'Contact modification report for the logging infrastructure (summary).',0,0,0,NULL,NULL,NULL,NULL,NULL),(270,41,'Contact Logging Report (Detail)','logging/contact/detail','CRM_Report_Form_Contact_LoggingDetail',NULL,0,NULL,39,'Contact modification report for the logging infrastructure (detail).',0,0,0,NULL,NULL,NULL,NULL,NULL),(271,41,'Grant Report (Statistics)','grant/statistics','CRM_Report_Form_Grant_Statistics',NULL,0,NULL,42,'Shows statistics for Grants.',0,0,1,5,NULL,NULL,NULL,NULL),(272,41,'Survey Report (Detail)','survey/detail','CRM_Report_Form_Campaign_SurveyDetails',NULL,0,NULL,43,'Detailed report for canvassing, phone-banking, walk lists or other surveys.',0,0,1,9,NULL,NULL,NULL,NULL),(273,41,'Personal Campaign Page Report','contribute/pcp','CRM_Report_Form_Contribute_PCP',NULL,0,NULL,44,'Summarizes amount raised and number of contributors for each Personal Campaign Page.',0,0,1,2,NULL,NULL,NULL,NULL),(274,41,'Pledge Summary Report','pledge/summary','CRM_Report_Form_Pledge_Summary',NULL,0,NULL,45,'Groups and totals pledges by criteria including contact, time period, pledge status, location, etc.',0,0,1,6,NULL,NULL,NULL,NULL),(275,41,'Contribution Aggregate by Relationship','contribute/history','CRM_Report_Form_Contribute_History',NULL,0,NULL,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),(276,41,'Mail Detail Report','mailing/detail','CRM_Report_Form_Mailing_Detail',NULL,0,NULL,47,'Provides reporting on Intended and Successful Deliveries, Unsubscribes and Opt-outs, Replies and Forwards.',0,0,1,4,NULL,NULL,NULL,NULL),(277,41,'Contribution and Membership Details','member/contributionDetail','CRM_Report_Form_Member_ContributionDetail',NULL,0,NULL,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),(278,41,'Recurring Contributions Report','contribute/recur','CRM_Report_Form_Contribute_Recur',NULL,0,NULL,49,'Provides information about the status of recurring contributions',0,0,1,2,NULL,NULL,NULL,NULL),(279,41,'Recurring Contributions Summary','contribute/recursummary','CRM_Report_Form_Contribute_RecurSummary',NULL,0,NULL,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),(280,41,'Deferred Revenue Details','contribute/deferredrevenue','CRM_Report_Form_Contribute_DeferredRevenue',NULL,0,NULL,50,'Deferred Revenue Details Report',0,0,1,2,NULL,NULL,NULL,NULL),(281,26,'Scheduled','1','Scheduled',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(282,26,'Completed','2','Completed',NULL,1,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(283,26,'Cancelled','3','Cancelled',NULL,2,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(284,26,'Left Message','4','Left Message',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(285,26,'Unreachable','5','Unreachable',NULL,2,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(286,26,'Not Required','6','Not Required',NULL,2,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(287,26,'Available','7','Available',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(288,26,'No-show','8','No_show',NULL,2,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(289,28,'Ongoing','1','Open','Opened',0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(290,28,'Resolved','2','Closed','Closed',0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(291,28,'Urgent','3','Urgent','Opened',0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(292,29,'Name Only','1','Name Only',NULL,0,0,1,'CRM_Event_Page_ParticipantListing_Name',0,1,1,NULL,NULL,NULL,NULL,NULL),(293,29,'Name and Email','2','Name and Email',NULL,0,0,2,'CRM_Event_Page_ParticipantListing_NameAndEmail',0,1,1,NULL,NULL,NULL,NULL,NULL),(294,29,'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),(295,30,'jpg','1','jpg',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(296,30,'jpeg','2','jpeg',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(297,30,'png','3','png',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(298,30,'gif','4','gif',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(299,30,'txt','5','txt',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(300,30,'pdf','6','pdf',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(301,30,'doc','7','doc',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(302,30,'xls','8','xls',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(303,30,'rtf','9','rtf',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(304,30,'csv','10','csv',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(305,30,'ppt','11','ppt',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(306,30,'docx','12','docx',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(307,30,'xlsx','13','xlsx',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(308,30,'odt','14','odt',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(309,30,'ics','15','ics',NULL,0,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(310,30,'pptx','16','pptx',NULL,0,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(311,33,'Textarea','1','Textarea',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(312,33,'CKEditor','2','CKEditor',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(313,32,'Search Builder','1','Search Builder',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(314,32,'Import Contact','2','Import Contact',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(315,32,'Import Activity','3','Import Activity',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(316,32,'Import Contribution','4','Import Contribution',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(317,32,'Import Membership','5','Import Membership',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(318,32,'Import Participant','6','Import Participant',NULL,0,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(319,32,'Export Contact','7','Export Contact',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(320,32,'Export Contribution','8','Export Contribution',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(321,32,'Export Membership','9','Export Membership',NULL,0,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(322,32,'Export Participant','10','Export Participant',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(323,32,'Export Pledge','11','Export Pledge',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(324,32,'Export Case','12','Export Case',NULL,0,0,12,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(325,32,'Export Grant','13','Export Grant',NULL,0,0,13,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(326,32,'Export Activity','14','Export Activity',NULL,0,0,14,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(327,34,'day','day','day',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(328,34,'week','week','week',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(329,34,'month','month','month',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(330,34,'year','year','year',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(331,35,'Phone','1','Phone',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(332,35,'Mobile','2','Mobile',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(333,35,'Fax','3','Fax',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(334,35,'Pager','4','Pager',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(335,35,'Voicemail','5','Voicemail',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(336,36,'Participant Role','1','ParticipantRole',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(337,36,'Participant Event Name','2','ParticipantEventName',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(338,36,'Participant Event Type','3','ParticipantEventType',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(339,37,'Public','1','public',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(340,37,'Admin','2','admin',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(341,38,'IMAP','1','IMAP',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(342,38,'Maildir','2','Maildir',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(343,38,'POP3','3','POP3',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(344,38,'Localdir','4','Localdir',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(345,38,'IMAP XOAUTH2','5','IMAP_XOAUTH2',NULL,0,NULL,5,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(346,39,'Urgent','1','Urgent',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(347,39,'Normal','2','Normal',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(348,39,'Low','3','Low',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(349,40,'Vancouver','city_','city_',NULL,0,NULL,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(350,40,'/(19|20)(\\d{2})-(\\d{1,2})-(\\d{1,2})/','date_','date_',NULL,1,NULL,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(351,42,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(352,42,'Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}','2','Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(353,42,'Dear {contact.individual_prefix} {contact.last_name}','3','Dear {contact.individual_prefix} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(354,42,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(355,42,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(356,43,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(357,43,'Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}','2','Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(358,43,'Dear {contact.individual_prefix} {contact.last_name}','3','Dear {contact.individual_prefix} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(359,43,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(360,43,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(361,44,'{contact.individual_prefix}{ } {contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.individual_suffix}','1','}{contact.individual_prefix}{ } {contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.individual_suffix}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(362,44,'{contact.household_name}','2','{contact.household_name}',NULL,2,1,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(363,44,'{contact.organization_name}','3','{contact.organization_name}',NULL,3,1,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(364,44,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(365,47,'Work','1','Work',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(366,47,'Main','2','Main',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(367,47,'Facebook','3','Facebook',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(368,47,'Instagram','5','Instagram',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(369,47,'LinkedIn','6','LinkedIn',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(370,47,'MySpace','7','MySpace',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(371,47,'Pinterest','8','Pinterest',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(372,47,'SnapChat','9','SnapChat',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(373,47,'Tumblr','10','Tumblr',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(374,47,'Twitter','11','Twitter',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(375,47,'Vine','12','Vine ',NULL,0,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(376,48,'Contacts','civicrm_contact','Contacts',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(377,48,'Activities','civicrm_activity','Activities',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(378,48,'Cases','civicrm_case','Cases',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(379,48,'Attachments','civicrm_file','Attachements',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(380,49,'USD ($)','USD','USD',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(381,50,'Name Only','1','CRM_Event_Badge_Simple',NULL,0,0,1,'Simple Event Name Badge',0,1,1,NULL,NULL,NULL,NULL,NULL),(382,50,'Name Tent','2','CRM_Event_Badge_NameTent',NULL,0,0,2,'Name Tent',0,1,1,NULL,NULL,NULL,NULL,NULL),(383,50,'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),(384,50,'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),(385,51,'None','0','None',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(386,51,'Author Only','1','Author Only',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(387,52,'Direct Mail','1','Direct Mail',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(388,52,'Referral Program','2','Referral Program',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(389,52,'Constituent Engagement','3','Constituent Engagement',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(390,53,'Planned','1','Planned',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(391,53,'In Progress','2','In Progress',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(392,53,'Completed','3','Completed',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(393,53,'Cancelled','4','Cancelled',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(394,56,'1','1','1',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(395,56,'2','2','2',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(396,56,'3','3','3',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(397,56,'4','4','4',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(398,56,'5','5','5',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(399,58,'Letter','{\"metric\":\"in\",\"width\":8.5,\"height\":11}','letter',NULL,NULL,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(400,58,'Legal','{\"metric\":\"in\",\"width\":8.5,\"height\":14}','legal',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(401,58,'Ledger','{\"metric\":\"in\",\"width\":17,\"height\":11}','ledger',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(402,58,'Tabloid','{\"metric\":\"in\",\"width\":11,\"height\":17}','tabloid',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(403,58,'Executive','{\"metric\":\"in\",\"width\":7.25,\"height\":10.5}','executive',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(404,58,'Folio','{\"metric\":\"in\",\"width\":8.5,\"height\":13}','folio',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(405,58,'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,58,'Envelope #10','{\"metric\":\"pt\",\"width\":684,\"height\":297}','envelope-10',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(407,58,'Envelope #11','{\"metric\":\"pt\",\"width\":747,\"height\":324}','envelope-11',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(408,58,'Envelope #12','{\"metric\":\"pt\",\"width\":792,\"height\":342}','envelope-12',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(409,58,'Envelope #14','{\"metric\":\"pt\",\"width\":828,\"height\":360}','envelope-14',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(410,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,61,'Activity Assignees','1','Activity Assignees',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(462,61,'Activity Source','2','Activity Source',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(463,61,'Activity Targets','3','Activity Targets',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(464,71,'Asset','1','Asset',NULL,0,0,1,'Things you own',0,1,1,2,NULL,NULL,NULL,NULL),(465,71,'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),(466,71,'Revenue','3','Revenue',NULL,0,1,3,'Income from contributions and sales of tickets and memberships',0,1,1,2,NULL,NULL,NULL,NULL),(467,71,'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),(468,71,'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),(469,62,'Income Account is','1','Income Account is',NULL,0,1,1,'Income Account is',0,1,1,2,NULL,NULL,NULL,NULL),(470,62,'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),(471,62,'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),(472,62,'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),(473,62,'Expense Account is','5','Expense Account is',NULL,0,0,5,'Expense Account is',0,1,1,2,NULL,NULL,NULL,NULL),(474,62,'Asset Account is','6','Asset Account is',NULL,0,0,6,'Asset Account is',0,1,1,2,NULL,NULL,NULL,NULL),(475,62,'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),(476,62,'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),(477,62,'Discounts Account is','9','Discounts Account is',NULL,0,0,9,'Discounts Account is',0,1,1,2,NULL,NULL,NULL,NULL),(478,62,'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),(479,62,'Chargeback Account is','11','Chargeback Account is',NULL,0,0,11,'Chargeback Account is',0,1,1,2,NULL,NULL,NULL,NULL),(480,62,'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),(481,63,'Participant Role','1','participant_role',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(482,64,'Morning Sessions','1','Morning Sessions',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(483,64,'Evening Sessions','2','Evening Sessions',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(484,65,'Contribution','1','Contribution',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(485,65,'Membership','2','Membership',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(486,65,'Pledge Payment','3','Pledge Payment',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(487,67,'Open','1','Open',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(488,67,'Closed','2','Closed',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(489,67,'Data Entry','3','Data Entry',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(490,67,'Reopened','4','Reopened',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(491,67,'Exported','5','Exported',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(492,66,'Manual Batch','1','Manual Batch',NULL,0,0,1,'Manual Batch',0,1,1,2,NULL,NULL,NULL,NULL),(493,66,'Automatic Batch','2','Automatic Batch',NULL,0,0,2,'Automatic Batch',0,1,1,2,NULL,NULL,NULL,NULL),(494,72,'Paid','1','Paid',NULL,0,0,1,'Paid',0,1,1,2,NULL,NULL,NULL,NULL),(495,72,'Partially paid','2','Partially paid',NULL,0,0,2,'Partially paid',0,1,1,2,NULL,NULL,NULL,NULL),(496,72,'Unpaid','3','Unpaid',NULL,0,0,1,'Unpaid',0,1,1,2,NULL,NULL,NULL,NULL),(497,68,'http','1','http',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(498,68,'xml','2','xml',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(499,68,'smtp','3','smtp',NULL,NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(500,70,'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),(501,70,'Auto-renew Memberships Only','2','Auto-renew Memberships Only',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(502,70,'Reminder for Both','3','Reminder for Both',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(503,73,'Event Badge','1','Event Badge',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(504,74,'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,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(505,74,'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,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(506,74,'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,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(507,74,'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,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(508,60,'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),(509,60,'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),(510,60,'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),(511,60,'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),(512,60,'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),(513,60,'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),(514,60,'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),(515,60,'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),(516,60,'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),(517,60,'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),(518,60,'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),(519,75,'Formal','1','formal',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(520,75,'Familiar','2','familiar',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(521,76,'Email','Email','Email',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(522,76,'SMS','SMS','SMS',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(523,76,'User Preference','User_Preference','User Preference',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(524,77,'Actual date only','1','Actual date only',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(525,77,'Each anniversary','2','Each anniversary',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(526,78,'Default','1','default',NULL,NULL,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(527,78,'CiviMail','2','civimail',NULL,NULL,0,2,NULL,0,1,1,4,NULL,NULL,NULL,NULL),(528,78,'CiviEvent','3','civievent',NULL,NULL,0,3,NULL,0,1,1,1,NULL,NULL,NULL,NULL),(529,82,'Production','Production','Production',NULL,NULL,1,1,'Production Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(530,82,'Staging','Staging','Staging',NULL,NULL,0,2,'Staging Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(531,82,'Development','Development','Development',NULL,NULL,0,3,'Development Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(532,79,'Today','this.day','this.day',NULL,NULL,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(533,79,'This week','this.week','this.week',NULL,NULL,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(534,79,'This calendar month','this.month','this.month',NULL,NULL,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(535,79,'This quarter','this.quarter','this.quarter',NULL,NULL,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(536,79,'This fiscal year','this.fiscal_year','this.fiscal_year',NULL,NULL,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(537,79,'This calendar year','this.year','this.year',NULL,NULL,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(538,79,'Yesterday','previous.day','previous.day',NULL,NULL,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(539,79,'Previous week','previous.week','previous.week',NULL,NULL,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(540,79,'Previous calendar month','previous.month','previous.month',NULL,NULL,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(541,79,'Previous quarter','previous.quarter','previous.quarter',NULL,NULL,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(542,79,'Previous fiscal year','previous.fiscal_year','previous.fiscal_year',NULL,NULL,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(543,79,'Previous calendar year','previous.year','previous.year',NULL,NULL,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(544,79,'Last 7 days including today','ending.week','ending.week',NULL,NULL,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(545,79,'Last 30 days including today','ending_30.day','ending.month',NULL,NULL,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(546,79,'Last 60 days including today','ending_60.day','ending_2.month',NULL,NULL,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(547,79,'Last 90 days including today','ending_90.day','ending.quarter',NULL,NULL,NULL,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(548,79,'Last 12 months including today','ending.year','ending.year',NULL,NULL,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(549,79,'Last 2 years including today','ending_2.year','ending_2.year',NULL,NULL,NULL,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(550,79,'Last 3 years including today','ending_3.year','ending_3.year',NULL,NULL,NULL,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(551,79,'Tomorrow','starting.day','starting.day',NULL,NULL,NULL,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(552,79,'Next week','next.week','next.week',NULL,NULL,NULL,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(553,79,'Next calendar month','next.month','next.month',NULL,NULL,NULL,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(554,79,'Next quarter','next.quarter','next.quarter',NULL,NULL,NULL,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(555,79,'Next fiscal year','next.fiscal_year','next.fiscal_year',NULL,NULL,NULL,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(556,79,'Next calendar year','next.year','next.year',NULL,NULL,NULL,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(557,79,'Next 7 days including today','starting.week','starting.week',NULL,NULL,NULL,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(558,79,'Next 30 days including today','starting.month','starting.month',NULL,NULL,NULL,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(559,79,'Next 60 days including today','starting_2.month','starting_2.month',NULL,NULL,NULL,28,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(560,79,'Next 90 days including today','starting.quarter','starting.quarter',NULL,NULL,NULL,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(561,79,'Next 12 months including today','starting.year','starting.year',NULL,NULL,NULL,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(562,79,'Current week to-date','current.week','current.week',NULL,NULL,NULL,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(563,79,'Current calendar month to-date','current.month','current.month',NULL,NULL,NULL,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(564,79,'Current quarter to-date','current.quarter','current.quarter',NULL,NULL,NULL,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(565,79,'Current calendar year to-date','current.year','current.year',NULL,NULL,NULL,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(566,79,'To end of yesterday','earlier.day','earlier.day',NULL,NULL,NULL,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(567,79,'To end of previous week','earlier.week','earlier.week',NULL,NULL,NULL,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(568,79,'To end of previous calendar month','earlier.month','earlier.month',NULL,NULL,NULL,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(569,79,'To end of previous quarter','earlier.quarter','earlier.quarter',NULL,NULL,NULL,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(570,79,'To end of previous calendar year','earlier.year','earlier.year',NULL,NULL,NULL,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(571,79,'From start of current day','greater.day','greater.day',NULL,NULL,NULL,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(572,79,'From start of current week','greater.week','greater.week',NULL,NULL,NULL,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(573,79,'From start of current calendar month','greater.month','greater.month',NULL,NULL,NULL,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(574,79,'From start of current quarter','greater.quarter','greater.quarter',NULL,NULL,NULL,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(575,79,'From start of current calendar year','greater.year','greater.year',NULL,NULL,NULL,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(576,79,'To end of current week','less.week','less.week',NULL,NULL,NULL,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(577,79,'To end of current calendar month','less.month','less.month',NULL,NULL,NULL,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(578,79,'To end of current quarter','less.quarter','less.quarter',NULL,NULL,NULL,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(579,79,'To end of current calendar year','less.year','less.year',NULL,NULL,NULL,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(580,79,'Previous 2 days','previous_2.day','previous_2.day',NULL,NULL,NULL,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(581,79,'Previous 2 weeks','previous_2.week','previous_2.week',NULL,NULL,NULL,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(582,79,'Previous 2 calendar months','previous_2.month','previous_2.month',NULL,NULL,NULL,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(583,79,'Previous 2 quarters','previous_2.quarter','previous_2.quarter',NULL,NULL,NULL,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(584,79,'Previous 2 calendar years','previous_2.year','previous_2.year',NULL,NULL,NULL,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(585,79,'Day prior to yesterday','previous_before.day','previous_before.day',NULL,NULL,NULL,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(586,79,'Week prior to previous week','previous_before.week','previous_before.week',NULL,NULL,NULL,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(587,79,'Month prior to previous calendar month','previous_before.month','previous_before.month',NULL,NULL,NULL,56,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(588,79,'Quarter prior to previous quarter','previous_before.quarter','previous_before.quarter',NULL,NULL,NULL,57,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(589,79,'Year prior to previous calendar year','previous_before.year','previous_before.year',NULL,NULL,NULL,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(590,79,'From end of previous week','greater_previous.week','greater_previous.week',NULL,NULL,NULL,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(591,79,'From end of previous calendar month','greater_previous.month','greater_previous.month',NULL,NULL,NULL,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(592,79,'From end of previous quarter','greater_previous.quarter','greater_previous.quarter',NULL,NULL,NULL,61,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(593,79,'From end of previous calendar year','greater_previous.year','greater_previous.year',NULL,NULL,NULL,62,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(594,80,'Completed','1','Completed',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(595,80,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(596,80,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(597,80,'In Progress','5','In Progress',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(598,80,'Overdue','6','Overdue',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(599,81,'Completed','1','Completed',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(600,81,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(601,81,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(602,81,'Failed','4','Failed',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(603,81,'In Progress','5','In Progress',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(604,81,'Overdue','6','Overdue',NULL,0,NULL,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(605,81,'Processing','7','Processing',NULL,0,NULL,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(606,81,'Failing','8','Failing',NULL,0,NULL,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(607,83,'None','1','NONE',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(608,83,'By relationship to case client','2','BY_RELATIONSHIP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(609,83,'Specific contact','3','SPECIFIC_CONTACT',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(610,83,'User creating the case','4','USER_CREATING_THE_CASE',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(611,31,'\"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),(612,24,'Emergency','1','Emergency',NULL,0,1,1,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(613,24,'Family Support','2','Family Support',NULL,0,NULL,2,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(614,24,'General Protection','3','General Protection',NULL,0,NULL,3,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(615,24,'Impunity','4','Impunity',NULL,0,NULL,4,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(616,55,'Approved','1','Approved',NULL,0,1,1,NULL,0,1,1,4,1,NULL,NULL,NULL),(617,55,'Rejected','2','Rejected',NULL,0,0,2,NULL,0,1,1,4,1,NULL,NULL,NULL),(618,55,'None','3','None',NULL,0,0,3,NULL,0,1,1,4,1,NULL,NULL,NULL),(619,57,'Survey','Survey','civicrm_survey',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(620,57,'Cases','Case','civicrm_case',NULL,0,NULL,2,'CRM_Case_PseudoConstant::caseType;',0,0,1,NULL,NULL,NULL,NULL,NULL),(621,84,'Abkhaz','ab','ab_GE',NULL,NULL,0,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(622,84,'Afar','aa','aa_ET',NULL,NULL,0,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(623,84,'Afrikaans','af','af_ZA',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(624,84,'Akan','ak','ak_GH',NULL,NULL,0,4,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(625,84,'Albanian','sq','sq_AL',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(626,84,'Amharic','am','am_ET',NULL,NULL,0,6,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(627,84,'Arabic','ar','ar_EG',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(628,84,'Aragonese','an','an_ES',NULL,NULL,0,8,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(629,84,'Armenian','hy','hy_AM',NULL,NULL,0,9,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(630,84,'Assamese','as','as_IN',NULL,NULL,0,10,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(631,84,'Avaric','av','av_RU',NULL,NULL,0,11,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(632,84,'Avestan','ae','ae_XX',NULL,NULL,0,12,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(633,84,'Aymara','ay','ay_BO',NULL,NULL,0,13,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(634,84,'Azerbaijani','az','az_AZ',NULL,NULL,0,14,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(635,84,'Bambara','bm','bm_ML',NULL,NULL,0,15,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(636,84,'Bashkir','ba','ba_RU',NULL,NULL,0,16,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(637,84,'Basque','eu','eu_ES',NULL,NULL,0,17,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(638,84,'Belarusian','be','be_BY',NULL,NULL,0,18,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(639,84,'Bengali','bn','bn_BD',NULL,NULL,0,19,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(640,84,'Bihari','bh','bh_IN',NULL,NULL,0,20,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(641,84,'Bislama','bi','bi_VU',NULL,NULL,0,21,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(642,84,'Bosnian','bs','bs_BA',NULL,NULL,0,22,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(643,84,'Breton','br','br_FR',NULL,NULL,0,23,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(644,84,'Bulgarian','bg','bg_BG',NULL,NULL,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(645,84,'Burmese','my','my_MM',NULL,NULL,0,25,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(646,84,'Catalan; Valencian','ca','ca_ES',NULL,NULL,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(647,84,'Chamorro','ch','ch_GU',NULL,NULL,0,27,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(648,84,'Chechen','ce','ce_RU',NULL,NULL,0,28,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(649,84,'Chichewa; Chewa; Nyanja','ny','ny_MW',NULL,NULL,0,29,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(650,84,'Chinese (China)','zh','zh_CN',NULL,NULL,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(651,84,'Chinese (Taiwan)','zh','zh_TW',NULL,NULL,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(652,84,'Chuvash','cv','cv_RU',NULL,NULL,0,32,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(653,84,'Cornish','kw','kw_GB',NULL,NULL,0,33,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(654,84,'Corsican','co','co_FR',NULL,NULL,0,34,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(655,84,'Cree','cr','cr_CA',NULL,NULL,0,35,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(656,84,'Croatian','hr','hr_HR',NULL,NULL,0,36,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(657,84,'Czech','cs','cs_CZ',NULL,NULL,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(658,84,'Danish','da','da_DK',NULL,NULL,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(659,84,'Divehi; Dhivehi; Maldivian;','dv','dv_MV',NULL,NULL,0,39,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(660,84,'Dutch (Netherlands)','nl','nl_NL',NULL,NULL,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(661,84,'Dutch (Belgium)','nl','nl_BE',NULL,NULL,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(662,84,'Dzongkha','dz','dz_BT',NULL,NULL,0,42,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(663,84,'English (Australia)','en','en_AU',NULL,NULL,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(664,84,'English (Canada)','en','en_CA',NULL,NULL,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(665,84,'English (United Kingdom)','en','en_GB',NULL,NULL,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(666,84,'English (United States)','en','en_US',NULL,NULL,1,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(667,84,'Esperanto','eo','eo_XX',NULL,NULL,0,47,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(668,84,'Estonian','et','et_EE',NULL,NULL,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(669,84,'Ewe','ee','ee_GH',NULL,NULL,0,49,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(670,84,'Faroese','fo','fo_FO',NULL,NULL,0,50,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(671,84,'Fijian','fj','fj_FJ',NULL,NULL,0,51,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(672,84,'Finnish','fi','fi_FI',NULL,NULL,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(673,84,'French (Canada)','fr','fr_CA',NULL,NULL,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(674,84,'French (France)','fr','fr_FR',NULL,NULL,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(675,84,'Fula; Fulah; Pulaar; Pular','ff','ff_SN',NULL,NULL,0,55,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(676,84,'Galician','gl','gl_ES',NULL,NULL,0,56,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(677,84,'Georgian','ka','ka_GE',NULL,NULL,0,57,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(678,84,'German','de','de_DE',NULL,NULL,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(679,84,'German (Swiss)','de','de_CH',NULL,NULL,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(680,84,'Greek, Modern','el','el_GR',NULL,NULL,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(681,84,'GuaraniÂ','gn','gn_PY',NULL,NULL,0,61,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(682,84,'Gujarati','gu','gu_IN',NULL,NULL,0,62,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(683,84,'Haitian; Haitian Creole','ht','ht_HT',NULL,NULL,0,63,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(684,84,'Hausa','ha','ha_NG',NULL,NULL,0,64,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(685,84,'Hebrew (modern)','he','he_IL',NULL,NULL,0,65,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(686,84,'Herero','hz','hz_NA',NULL,NULL,0,66,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(687,84,'Hindi','hi','hi_IN',NULL,NULL,0,67,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(688,84,'Hiri Motu','ho','ho_PG',NULL,NULL,0,68,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(689,84,'Hungarian','hu','hu_HU',NULL,NULL,0,69,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(690,84,'Interlingua','ia','ia_XX',NULL,NULL,0,70,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(691,84,'Indonesian','id','id_ID',NULL,NULL,0,71,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(692,84,'Interlingue','ie','ie_XX',NULL,NULL,0,72,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(693,84,'Irish','ga','ga_IE',NULL,NULL,0,73,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(694,84,'Igbo','ig','ig_NG',NULL,NULL,0,74,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(695,84,'Inupiaq','ik','ik_US',NULL,NULL,0,75,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(696,84,'Ido','io','io_XX',NULL,NULL,0,76,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(697,84,'Icelandic','is','is_IS',NULL,NULL,0,77,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(698,84,'Italian','it','it_IT',NULL,NULL,0,78,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(699,84,'Inuktitut','iu','iu_CA',NULL,NULL,0,79,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(700,84,'Japanese','ja','ja_JP',NULL,NULL,0,80,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(701,84,'Javanese','jv','jv_ID',NULL,NULL,0,81,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(702,84,'Kalaallisut, Greenlandic','kl','kl_GL',NULL,NULL,0,82,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(703,84,'Kannada','kn','kn_IN',NULL,NULL,0,83,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(704,84,'Kanuri','kr','kr_NE',NULL,NULL,0,84,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(705,84,'Kashmiri','ks','ks_IN',NULL,NULL,0,85,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(706,84,'Kazakh','kk','kk_KZ',NULL,NULL,0,86,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(707,84,'Khmer','km','km_KH',NULL,NULL,0,87,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(708,84,'Kikuyu, Gikuyu','ki','ki_KE',NULL,NULL,0,88,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(709,84,'Kinyarwanda','rw','rw_RW',NULL,NULL,0,89,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(710,84,'Kirghiz, Kyrgyz','ky','ky_KG',NULL,NULL,0,90,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(711,84,'Komi','kv','kv_RU',NULL,NULL,0,91,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(712,84,'Kongo','kg','kg_CD',NULL,NULL,0,92,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(713,84,'Korean','ko','ko_KR',NULL,NULL,0,93,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(714,84,'Kurdish','ku','ku_IQ',NULL,NULL,0,94,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(715,84,'Kwanyama, Kuanyama','kj','kj_NA',NULL,NULL,0,95,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(716,84,'Latin','la','la_VA',NULL,NULL,0,96,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(717,84,'Luxembourgish, Letzeburgesch','lb','lb_LU',NULL,NULL,0,97,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(718,84,'Luganda','lg','lg_UG',NULL,NULL,0,98,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(719,84,'Limburgish, Limburgan, Limburger','li','li_NL',NULL,NULL,0,99,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(720,84,'Lingala','ln','ln_CD',NULL,NULL,0,100,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(721,84,'Lao','lo','lo_LA',NULL,NULL,0,101,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(722,84,'Lithuanian','lt','lt_LT',NULL,NULL,0,102,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(723,84,'Luba-Katanga','lu','lu_CD',NULL,NULL,0,103,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(724,84,'Latvian','lv','lv_LV',NULL,NULL,0,104,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(725,84,'Manx','gv','gv_IM',NULL,NULL,0,105,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(726,84,'Macedonian','mk','mk_MK',NULL,NULL,0,106,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(727,84,'Malagasy','mg','mg_MG',NULL,NULL,0,107,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(728,84,'Malay','ms','ms_MY',NULL,NULL,0,108,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(729,84,'Malayalam','ml','ml_IN',NULL,NULL,0,109,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(730,84,'Maltese','mt','mt_MT',NULL,NULL,0,110,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(731,84,'MÄori','mi','mi_NZ',NULL,NULL,0,111,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(732,84,'Marathi','mr','mr_IN',NULL,NULL,0,112,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(733,84,'Marshallese','mh','mh_MH',NULL,NULL,0,113,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(734,84,'Mongolian','mn','mn_MN',NULL,NULL,0,114,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(735,84,'Nauru','na','na_NR',NULL,NULL,0,115,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(736,84,'Navajo, Navaho','nv','nv_US',NULL,NULL,0,116,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(737,84,'Norwegian BokmÃ¥l','nb','nb_NO',NULL,NULL,0,117,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(738,84,'North Ndebele','nd','nd_ZW',NULL,NULL,0,118,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(739,84,'Nepali','ne','ne_NP',NULL,NULL,0,119,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(740,84,'Ndonga','ng','ng_NA',NULL,NULL,0,120,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(741,84,'Norwegian Nynorsk','nn','nn_NO',NULL,NULL,0,121,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(742,84,'Norwegian','no','no_NO',NULL,NULL,0,122,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(743,84,'Nuosu','ii','ii_CN',NULL,NULL,0,123,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(744,84,'South Ndebele','nr','nr_ZA',NULL,NULL,0,124,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(745,84,'Occitan (after 1500)','oc','oc_FR',NULL,NULL,0,125,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(746,84,'Ojibwa','oj','oj_CA',NULL,NULL,0,126,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(747,84,'Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic','cu','cu_BG',NULL,NULL,0,127,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(748,84,'Oromo','om','om_ET',NULL,NULL,0,128,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(749,84,'Oriya','or','or_IN',NULL,NULL,0,129,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(750,84,'Ossetian, Ossetic','os','os_GE',NULL,NULL,0,130,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(751,84,'Panjabi, Punjabi','pa','pa_IN',NULL,NULL,0,131,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(752,84,'Pali','pi','pi_KH',NULL,NULL,0,132,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(753,84,'Persian (Iran)','fa','fa_IR',NULL,NULL,0,133,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(754,84,'Polish','pl','pl_PL',NULL,NULL,0,134,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(755,84,'Pashto, Pushto','ps','ps_AF',NULL,NULL,0,135,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(756,84,'Portuguese (Brazil)','pt','pt_BR',NULL,NULL,0,136,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(757,84,'Portuguese (Portugal)','pt','pt_PT',NULL,NULL,0,137,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(758,84,'Quechua','qu','qu_PE',NULL,NULL,0,138,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(759,84,'Romansh','rm','rm_CH',NULL,NULL,0,139,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(760,84,'Kirundi','rn','rn_BI',NULL,NULL,0,140,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(761,84,'Romanian, Moldavian, Moldovan','ro','ro_RO',NULL,NULL,0,141,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(762,84,'Russian','ru','ru_RU',NULL,NULL,0,142,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(763,84,'Sanskrit','sa','sa_IN',NULL,NULL,0,143,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(764,84,'Sardinian','sc','sc_IT',NULL,NULL,0,144,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(765,84,'Sindhi','sd','sd_IN',NULL,NULL,0,145,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(766,84,'Northern Sami','se','se_NO',NULL,NULL,0,146,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(767,84,'Samoan','sm','sm_WS',NULL,NULL,0,147,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(768,84,'Sango','sg','sg_CF',NULL,NULL,0,148,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(769,84,'Serbian','sr','sr_RS',NULL,NULL,0,149,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(770,84,'Scottish Gaelic; Gaelic','gd','gd_GB',NULL,NULL,0,150,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(771,84,'Shona','sn','sn_ZW',NULL,NULL,0,151,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(772,84,'Sinhala, Sinhalese','si','si_LK',NULL,NULL,0,152,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(773,84,'Slovak','sk','sk_SK',NULL,NULL,0,153,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(774,84,'Slovene','sl','sl_SI',NULL,NULL,0,154,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(775,84,'Somali','so','so_SO',NULL,NULL,0,155,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(776,84,'Southern Sotho','st','st_ZA',NULL,NULL,0,156,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(777,84,'Spanish; Castilian (Spain)','es','es_ES',NULL,NULL,0,157,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(778,84,'Spanish; Castilian (Mexico)','es','es_MX',NULL,NULL,0,158,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(779,84,'Spanish; Castilian (Puerto Rico)','es','es_PR',NULL,NULL,0,159,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(780,84,'Sundanese','su','su_ID',NULL,NULL,0,160,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(781,84,'Swahili','sw','sw_TZ',NULL,NULL,0,161,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(782,84,'Swati','ss','ss_ZA',NULL,NULL,0,162,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(783,84,'Swedish','sv','sv_SE',NULL,NULL,0,163,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(784,84,'Tamil','ta','ta_IN',NULL,NULL,0,164,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(785,84,'Telugu','te','te_IN',NULL,NULL,0,165,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(786,84,'Tajik','tg','tg_TJ',NULL,NULL,0,166,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(787,84,'Thai','th','th_TH',NULL,NULL,0,167,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(788,84,'Tigrinya','ti','ti_ET',NULL,NULL,0,168,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(789,84,'Tibetan Standard, Tibetan, Central','bo','bo_CN',NULL,NULL,0,169,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(790,84,'Turkmen','tk','tk_TM',NULL,NULL,0,170,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(791,84,'Tagalog','tl','tl_PH',NULL,NULL,0,171,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(792,84,'Tswana','tn','tn_ZA',NULL,NULL,0,172,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(793,84,'Tonga (Tonga Islands)','to','to_TO',NULL,NULL,0,173,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(794,84,'Turkish','tr','tr_TR',NULL,NULL,0,174,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(795,84,'Tsonga','ts','ts_ZA',NULL,NULL,0,175,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(796,84,'Tatar','tt','tt_RU',NULL,NULL,0,176,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(797,84,'Twi','tw','tw_GH',NULL,NULL,0,177,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(798,84,'Tahitian','ty','ty_PF',NULL,NULL,0,178,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(799,84,'Uighur, Uyghur','ug','ug_CN',NULL,NULL,0,179,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(800,84,'Ukrainian','uk','uk_UA',NULL,NULL,0,180,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(801,84,'Urdu','ur','ur_PK',NULL,NULL,0,181,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(802,84,'Uzbek','uz','uz_UZ',NULL,NULL,0,182,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(803,84,'Venda','ve','ve_ZA',NULL,NULL,0,183,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(804,84,'Vietnamese','vi','vi_VN',NULL,NULL,0,184,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(805,84,'Volapük','vo','vo_XX',NULL,NULL,0,185,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(806,84,'Walloon','wa','wa_BE',NULL,NULL,0,186,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(807,84,'Welsh','cy','cy_GB',NULL,NULL,0,187,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(808,84,'Wolof','wo','wo_SN',NULL,NULL,0,188,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(809,84,'Western Frisian','fy','fy_NL',NULL,NULL,0,189,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(810,84,'Xhosa','xh','xh_ZA',NULL,NULL,0,190,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(811,84,'Yiddish','yi','yi_US',NULL,NULL,0,191,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(812,84,'Yoruba','yo','yo_NG',NULL,NULL,0,192,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(813,84,'Zhuang, Chuang','za','za_CN',NULL,NULL,0,193,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(814,84,'Zulu','zu','zu_ZA',NULL,NULL,0,194,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(815,85,'In Person','1','in_person',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(816,85,'Phone','2','phone',NULL,0,1,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(817,85,'Email','3','email',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(818,85,'Fax','4','fax',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(819,85,'Letter Mail','5','letter_mail',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(820,86,'Cases - Send Copy of an Activity','1','case_activity',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(821,87,'Contributions - Duplicate Organization Alert','1','contribution_dupalert',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(822,87,'Contributions - Receipt (off-line)','2','contribution_offline_receipt',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(823,87,'Contributions - Receipt (on-line)','3','contribution_online_receipt',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(824,87,'Contributions - Invoice','4','contribution_invoice_receipt',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(825,87,'Contributions - Recurring Start and End Notification','5','contribution_recurring_notify',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(826,87,'Contributions - Recurring Cancellation Notification','6','contribution_recurring_cancelled',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(827,87,'Contributions - Recurring Billing Updates','7','contribution_recurring_billing',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(828,87,'Contributions - Recurring Updates','8','contribution_recurring_edit',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(829,87,'Personal Campaign Pages - Admin Notification','9','pcp_notify',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(830,87,'Personal Campaign Pages - Supporter Status Change Notification','10','pcp_status_change',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(831,87,'Personal Campaign Pages - Supporter Welcome','11','pcp_supporter_notify',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(832,87,'Personal Campaign Pages - Owner Notification','12','pcp_owner_notify',NULL,NULL,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(833,87,'Additional Payment Receipt or Refund Notification','13','payment_or_refund_notification',NULL,NULL,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(834,88,'Events - Registration Confirmation and Receipt (off-line)','1','event_offline_receipt',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(835,88,'Events - Registration Confirmation and Receipt (on-line)','2','event_online_receipt',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(836,88,'Events - Receipt only','3','event_registration_receipt',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(837,88,'Events - Registration Cancellation Notice','4','participant_cancelled',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(838,88,'Events - Registration Confirmation Invite','5','participant_confirm',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(839,88,'Events - Pending Registration Expiration Notice','6','participant_expired',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(840,88,'Events - Registration Transferred Notice','7','participant_transferred',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(841,89,'Tell-a-Friend Email','1','friend',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(842,90,'Memberships - Signup and Renewal Receipts (off-line)','1','membership_offline_receipt',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(843,90,'Memberships - Receipt (on-line)','2','membership_online_receipt',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(844,90,'Memberships - Auto-renew Cancellation Notification','3','membership_autorenew_cancelled',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(845,90,'Memberships - Auto-renew Billing Updates','4','membership_autorenew_billing',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(846,91,'Test-drive - Receipt Header','1','test_preview',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(847,92,'Pledges - Acknowledgement','1','pledge_acknowledge',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(848,92,'Pledges - Payment Reminder','2','pledge_reminder',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(849,93,'Profiles - Admin Notification','1','uf_notify',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(850,94,'Petition - signature added','1','petition_sign',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(851,94,'Petition - need verification','2','petition_confirmation_needed',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(852,95,'In Honor of','1','in_honor_of',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(853,95,'In Memory of','2','in_memory_of',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(854,95,'Solicited','3','solicited',NULL,NULL,1,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(855,95,'Household','4','household',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(856,95,'Workplace Giving','5','workplace',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(857,95,'Foundation Affiliate','6','foundation_affiliate',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(858,95,'3rd-party Service','7','3rd-party_service',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(859,95,'Donor-advised Fund','8','donor-advised_fund',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(860,95,'Matched Gift','9','matched_gift',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(861,95,'Personal Campaign Page','10','pcp',NULL,NULL,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(862,95,'Gift','11','gift',NULL,NULL,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(863,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); +INSERT INTO `civicrm_option_value` (`id`, `option_group_id`, `label`, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, `description`, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `domain_id`, `visibility_id`, `icon`, `color`) VALUES (1,1,'Phone','1','Phone',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(2,1,'Email','2','Email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(3,1,'Postal Mail','3','Postal Mail',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(4,1,'SMS','4','SMS',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(5,1,'Fax','5','Fax',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(6,2,'Meeting','1','Meeting',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,'fa-slideshare',NULL),(7,2,'Phone Call','2','Phone Call',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,'fa-phone',NULL),(8,2,'Email','3','Email',NULL,1,NULL,3,'Email sent.',0,1,1,NULL,NULL,NULL,'fa-envelope-o',NULL),(9,2,'Outbound SMS','4','SMS',NULL,1,NULL,4,'Text message (SMS) sent.',0,1,1,NULL,NULL,NULL,'fa-mobile',NULL),(10,2,'Event Registration','5','Event Registration',NULL,1,NULL,5,'Online or offline event registration.',0,1,1,1,NULL,NULL,NULL,NULL),(11,2,'Contribution','6','Contribution',NULL,1,NULL,6,'Online or offline contribution.',0,1,1,2,NULL,NULL,NULL,NULL),(12,2,'Membership Signup','7','Membership Signup',NULL,1,NULL,7,'Online or offline membership signup.',0,1,1,3,NULL,NULL,NULL,NULL),(13,2,'Membership Renewal','8','Membership Renewal',NULL,1,NULL,8,'Online or offline membership renewal.',0,1,1,3,NULL,NULL,NULL,NULL),(14,2,'Tell a Friend','9','Tell a Friend',NULL,1,NULL,9,'Send information about a contribution campaign or event to a friend.',0,1,1,NULL,NULL,NULL,NULL,NULL),(15,2,'Pledge Acknowledgment','10','Pledge Acknowledgment',NULL,1,NULL,10,'Send Pledge Acknowledgment.',0,1,1,6,NULL,NULL,NULL,NULL),(16,2,'Pledge Reminder','11','Pledge Reminder',NULL,1,NULL,11,'Send Pledge Reminder.',0,1,1,6,NULL,NULL,NULL,NULL),(17,2,'Inbound Email','12','Inbound Email',NULL,1,NULL,12,'Inbound Email.',0,1,1,NULL,NULL,NULL,NULL,NULL),(18,2,'Open Case','13','Open Case',NULL,0,0,13,'',0,1,1,7,NULL,NULL,'fa-folder-open-o',NULL),(19,2,'Follow up','14','Follow up',NULL,0,0,14,'',0,1,1,7,NULL,NULL,'fa-share-square-o',NULL),(20,2,'Change Case Type','15','Change Case Type',NULL,0,0,15,'',0,1,1,7,NULL,NULL,'fa-random',NULL),(21,2,'Change Case Status','16','Change Case Status',NULL,0,0,16,'',0,1,1,7,NULL,NULL,'fa-pencil-square-o',NULL),(22,2,'Change Case Subject','53','Change Case Subject',NULL,0,0,53,'',0,1,1,7,NULL,NULL,'fa-pencil-square-o',NULL),(23,2,'Change Custom Data','33','Change Custom Data',NULL,0,0,33,'',0,1,1,7,NULL,NULL,'fa-table',NULL),(24,2,'Membership Renewal Reminder','17','Membership Renewal Reminder',NULL,1,NULL,17,'offline membership renewal reminder.',0,1,1,3,NULL,NULL,NULL,NULL),(25,2,'Change Case Start Date','18','Change Case Start Date',NULL,0,0,18,'',0,1,1,7,NULL,NULL,'fa-calendar',NULL),(26,2,'Bulk Email','19','Bulk Email',NULL,1,NULL,19,'Bulk Email Sent.',0,1,1,NULL,NULL,NULL,NULL,NULL),(27,2,'Assign Case Role','20','Assign Case Role',NULL,0,0,20,'',0,1,1,7,NULL,NULL,'fa-user-plus',NULL),(28,2,'Remove Case Role','21','Remove Case Role',NULL,0,0,21,'',0,1,1,7,NULL,NULL,'fa-user-times',NULL),(29,2,'Print/Merge Document','22','Print PDF Letter',NULL,0,NULL,22,'Export letters and other printable documents.',0,1,1,NULL,NULL,NULL,'fa-file-pdf-o',NULL),(30,2,'Merge Case','23','Merge Case',NULL,0,NULL,23,'',0,1,1,7,NULL,NULL,'fa-compress',NULL),(31,2,'Reassigned Case','24','Reassigned Case',NULL,0,NULL,24,'',0,1,1,7,NULL,NULL,'fa-user-circle-o',NULL),(32,2,'Link Cases','25','Link Cases',NULL,0,NULL,25,'',0,1,1,7,NULL,NULL,'fa-link',NULL),(33,2,'Change Case Tags','26','Change Case Tags',NULL,0,0,26,'',0,1,1,7,NULL,NULL,'fa-tags',NULL),(34,2,'Add Client To Case','27','Add Client To Case',NULL,0,0,26,'',0,1,1,7,NULL,NULL,'fa-users',NULL),(35,2,'Survey','28','Survey',NULL,0,0,27,'',0,1,1,9,NULL,NULL,NULL,NULL),(36,2,'Canvass','29','Canvass',NULL,0,0,28,'',0,1,1,9,NULL,NULL,NULL,NULL),(37,2,'PhoneBank','30','PhoneBank',NULL,0,0,29,'',0,1,1,9,NULL,NULL,NULL,NULL),(38,2,'WalkList','31','WalkList',NULL,0,0,30,'',0,1,1,9,NULL,NULL,NULL,NULL),(39,2,'Petition Signature','32','Petition',NULL,0,0,31,'',0,1,1,9,NULL,NULL,NULL,NULL),(40,2,'Mass SMS','34','Mass SMS',NULL,1,NULL,34,'Mass SMS',0,1,1,NULL,NULL,NULL,NULL,NULL),(41,2,'Change Membership Status','35','Change Membership Status',NULL,1,NULL,35,'Change Membership Status.',0,1,1,3,NULL,NULL,NULL,NULL),(42,2,'Change Membership Type','36','Change Membership Type',NULL,1,NULL,36,'Change Membership Type.',0,1,1,3,NULL,NULL,NULL,NULL),(43,2,'Cancel Recurring Contribution','37','Cancel Recurring Contribution',NULL,1,0,37,'',0,1,1,2,NULL,NULL,NULL,NULL),(44,2,'Update Recurring Contribution Billing Details','38','Update Recurring Contribution Billing Details',NULL,1,0,38,'',0,1,1,2,NULL,NULL,NULL,NULL),(45,2,'Update Recurring Contribution','39','Update Recurring Contribution',NULL,1,0,39,'',0,1,1,2,NULL,NULL,NULL,NULL),(46,2,'Reminder Sent','40','Reminder Sent',NULL,1,0,40,'',0,1,1,NULL,NULL,NULL,NULL,NULL),(47,2,'Export Accounting Batch','41','Export Accounting Batch',NULL,1,0,41,'Export Accounting Batch',0,1,1,2,NULL,NULL,NULL,NULL),(48,2,'Create Batch','42','Create Batch',NULL,1,0,42,'Create Batch',0,1,1,2,NULL,NULL,NULL,NULL),(49,2,'Edit Batch','43','Edit Batch',NULL,1,0,43,'Edit Batch',0,1,1,2,NULL,NULL,NULL,NULL),(50,2,'SMS delivery','44','SMS delivery',NULL,1,NULL,44,'SMS delivery',0,1,1,NULL,NULL,NULL,NULL,NULL),(51,2,'Inbound SMS','45','Inbound SMS',NULL,1,NULL,45,'Inbound SMS',0,1,1,NULL,NULL,NULL,NULL,NULL),(52,2,'Payment','46','Payment',NULL,1,NULL,46,'Additional payment recorded for event or membership fee.',0,1,1,2,NULL,NULL,NULL,NULL),(53,2,'Refund','47','Refund',NULL,1,NULL,47,'Refund recorded for event or membership fee.',0,1,1,2,NULL,NULL,NULL,NULL),(54,2,'Change Registration','48','Change Registration',NULL,1,NULL,48,'Changes to an existing event registration.',0,1,1,1,NULL,NULL,NULL,NULL),(55,2,'Downloaded Invoice','49','Downloaded Invoice',NULL,1,NULL,49,'Downloaded Invoice.',0,1,1,NULL,NULL,NULL,NULL,NULL),(56,2,'Emailed Invoice','50','Emailed Invoice',NULL,1,NULL,50,'Emailed Invoice.',0,1,1,NULL,NULL,NULL,NULL,NULL),(57,2,'Contact Merged','51','Contact Merged',NULL,1,NULL,51,'Contact Merged',0,1,1,NULL,NULL,NULL,NULL,NULL),(58,2,'Contact Deleted by Merge','52','Contact Deleted by Merge',NULL,1,NULL,52,'Contact was merged into another contact',0,1,1,NULL,NULL,NULL,NULL,NULL),(59,2,'Failed Payment','54','Failed Payment',NULL,1,0,54,'Failed Payment',0,1,1,2,NULL,NULL,NULL,NULL),(60,3,'Female','1','Female',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(61,3,'Male','2','Male',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(62,3,'Other','3','Other',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(63,4,'Yahoo','1','Yahoo',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(64,4,'MSN','2','Msn',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(65,4,'AIM','3','Aim',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(66,4,'GTalk','4','Gtalk',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(67,4,'Jabber','5','Jabber',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(68,4,'Skype','6','Skype',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(69,5,'Sprint','1','Sprint',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(70,5,'Verizon','2','Verizon',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(71,5,'Cingular','3','Cingular',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(72,6,'Mrs.','1','Mrs.',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(73,6,'Ms.','2','Ms.',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(74,6,'Mr.','3','Mr.',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(75,6,'Dr.','4','Dr.',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(76,7,'Jr.','1','Jr.',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(77,7,'Sr.','2','Sr.',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(78,7,'II','3','II',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(79,7,'III','4','III',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(80,7,'IV','5','IV',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(81,7,'V','6','V',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(82,7,'VI','7','VI',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(83,7,'VII','8','VII',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(84,8,'Administrator','1','Admin',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(85,8,'Authenticated','2','Auth',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(86,9,'Visa','1','Visa',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(87,9,'MasterCard','2','MasterCard',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(88,9,'Amex','3','Amex',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(89,9,'Discover','4','Discover',NULL,0,NULL,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,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(96,11,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(97,11,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(98,11,'Failed','4','Failed',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(99,11,'In Progress','5','In Progress',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(100,11,'Overdue','6','Overdue',NULL,0,NULL,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(101,11,'Refunded','7','Refunded',NULL,0,NULL,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(102,11,'Partially paid','8','Partially paid',NULL,0,NULL,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(103,11,'Pending refund','9','Pending refund',NULL,0,NULL,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(104,11,'Chargeback','10','Chargeback',NULL,0,NULL,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(105,11,'Template','11','Template',NULL,0,NULL,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),(106,12,'Waiting Review','1','Waiting Review',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(107,12,'Approved','2','Approved',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(108,12,'Not Approved','3','Not Approved',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(109,13,'Owner chooses whether to receive notifications','1','owner_chooses',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(110,13,'Notifications are sent to ALL owners','2','all_owners',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(111,13,'Notifications are NOT available','3','no_notifications',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(112,14,'Attendee','1','Attendee',NULL,1,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(113,14,'Volunteer','2','Volunteer',NULL,1,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(114,14,'Host','3','Host',NULL,1,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(115,14,'Speaker','4','Speaker',NULL,1,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(116,15,'Conference','1','Conference',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(117,15,'Exhibition','2','Exhibition',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(118,15,'Fundraiser','3','Fundraiser',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(119,15,'Meeting','4','Meeting',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(120,15,'Performance','5','Performance',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(121,15,'Workshop','6','Workshop',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(122,16,'Activities','1','activity',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(123,16,'Relationships','2','rel',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(124,16,'Groups','3','group',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(125,16,'Notes','4','note',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(126,16,'Tags','5','tag',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(127,16,'Change Log','6','log',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(128,16,'Contributions','7','CiviContribute',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(129,16,'Memberships','8','CiviMember',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(130,16,'Events','9','CiviEvent',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(131,16,'Cases','10','CiviCase',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(132,16,'Grants','11','CiviGrant',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(133,16,'Pledges','13','CiviPledge',NULL,0,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(134,16,'Mailings','14','CiviMail',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(135,17,'Show Smart Groups on Demand','1','showondemand',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(136,17,'Always Show Smart Groups','2','alwaysshow',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(137,17,'Hide Smart Groups','3','hide',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(138,18,'Custom Data','1','CustomData',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(139,18,'Address','2','Address',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(140,18,'Communication Preferences','3','CommunicationPreferences',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(141,18,'Notes','4','Notes',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(142,18,'Demographics','5','Demographics',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(143,18,'Tags and Groups','6','TagsAndGroups',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(144,18,'Email','7','Email',NULL,1,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(145,18,'Phone','8','Phone',NULL,1,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(146,18,'Instant Messenger','9','IM',NULL,1,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(147,18,'Open ID','10','OpenID',NULL,1,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(148,18,'Website','11','Website',NULL,1,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(149,18,'Prefix','12','Prefix',NULL,2,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(150,18,'Formal Title','13','Formal Title',NULL,2,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(151,18,'First Name','14','First Name',NULL,2,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(152,18,'Middle Name','15','Middle Name',NULL,2,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(153,18,'Last Name','16','Last Name',NULL,2,NULL,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(154,18,'Suffix','17','Suffix',NULL,2,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(155,19,'Address Fields','1','location',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(156,19,'Custom Fields','2','custom',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(157,19,'Activities','3','activity',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(158,19,'Relationships','4','relationship',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(159,19,'Notes','5','notes',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(160,19,'Change Log','6','changeLog',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(161,19,'Contributions','7','CiviContribute',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(162,19,'Memberships','8','CiviMember',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(163,19,'Events','9','CiviEvent',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(164,19,'Cases','10','CiviCase',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(165,19,'Grants','12','CiviGrant',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(166,19,'Demographics','13','demographics',NULL,0,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(167,19,'Pledges','15','CiviPledge',NULL,0,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(168,19,'Contact Type','16','contactType',NULL,0,NULL,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(169,19,'Groups','17','groups',NULL,0,NULL,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(170,19,'Tags','18','tags',NULL,0,NULL,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(171,19,'Mailing','19','CiviMail',NULL,0,NULL,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(172,20,'Groups','1','Groups',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(173,20,'Contributions','2','CiviContribute',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(174,20,'Memberships','3','CiviMember',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(175,20,'Events','4','CiviEvent',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(176,20,'My Contacts / Organizations','5','Permissioned Orgs',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(177,20,'Pledges','7','CiviPledge',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(178,20,'Personal Campaign Pages','8','PCP',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(179,20,'Assigned Activities','9','Assigned Activities',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(180,20,'Invoices / Credit Notes','10','Invoices / Credit Notes',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(181,45,'Email Address','2','email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(182,45,'Phone','3','phone',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(183,45,'Street Address','4','street_address',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(184,45,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(185,45,'State/Province','6','state_province',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(186,45,'Country','7','country',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(187,45,'Postal Code','8','postal_code',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(188,46,'Email Address','2','email',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(189,46,'Phone','3','phone',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(190,46,'Street Address','4','street_address',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(191,46,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(192,46,'State/Province','6','state_province',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(193,46,'Country','7','country',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(194,46,'Postal Code','8','postal_code',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(195,21,'Street Address','1','street_address',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(196,21,'Supplemental Address 1','2','supplemental_address_1',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(197,21,'Supplemental Address 2','3','supplemental_address_2',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(198,21,'Supplemental Address 3','4','supplemental_address_3',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(199,21,'City','5','city',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(200,21,'Postal Code','6','postal_code',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(201,21,'Postal Code Suffix','7','postal_code_suffix',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(202,21,'County','8','county',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(203,21,'State/Province','9','state_province',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(204,21,'Country','10','country',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(205,21,'Latitude','11','geo_code_1',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(206,21,'Longitude','12','geo_code_2',NULL,0,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(207,21,'Address Name','13','address_name',NULL,0,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(208,21,'Street Address Parsing','14','street_address_parsing',NULL,0,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(209,22,'Access Control','1','Access Control',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(210,22,'Mailing List','2','Mailing List',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(211,23,'Submitted','1','Submitted',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(212,23,'Eligible','2','Eligible',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(213,23,'Ineligible','3','Ineligible',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(214,23,'Paid','4','Paid',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(215,23,'Awaiting Information','5','Awaiting Information',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(216,23,'Withdrawn','6','Withdrawn',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(217,23,'Approved for Payment','7','Approved for Payment',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(218,25,'CRM_Contact_Form_Search_Custom_Sample','1','CRM_Contact_Form_Search_Custom_Sample',NULL,0,NULL,1,'Household Name and State',0,0,1,NULL,NULL,NULL,NULL,NULL),(219,25,'CRM_Contact_Form_Search_Custom_ContributionAggregate','2','CRM_Contact_Form_Search_Custom_ContributionAggregate',NULL,0,NULL,2,'Contribution Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL),(220,25,'CRM_Contact_Form_Search_Custom_Group','4','CRM_Contact_Form_Search_Custom_Group',NULL,0,NULL,4,'Include / Exclude Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(221,25,'CRM_Contact_Form_Search_Custom_PostalMailing','5','CRM_Contact_Form_Search_Custom_PostalMailing',NULL,0,NULL,5,'Postal Mailing',0,0,1,NULL,NULL,NULL,NULL,NULL),(222,25,'CRM_Contact_Form_Search_Custom_Proximity','6','CRM_Contact_Form_Search_Custom_Proximity',NULL,0,NULL,6,'Proximity Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(223,25,'CRM_Contact_Form_Search_Custom_EventAggregate','7','CRM_Contact_Form_Search_Custom_EventAggregate',NULL,0,NULL,7,'Event Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL),(224,25,'CRM_Contact_Form_Search_Custom_ActivitySearch','8','CRM_Contact_Form_Search_Custom_ActivitySearch',NULL,0,NULL,8,'Activity Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(225,25,'CRM_Contact_Form_Search_Custom_PriceSet','9','CRM_Contact_Form_Search_Custom_PriceSet',NULL,0,NULL,9,'Price Set Details for Event Participants',0,0,1,NULL,NULL,NULL,NULL,NULL),(226,25,'CRM_Contact_Form_Search_Custom_ZipCodeRange','10','CRM_Contact_Form_Search_Custom_ZipCodeRange',NULL,0,NULL,10,'Zip Code Range',0,0,1,NULL,NULL,NULL,NULL,NULL),(227,25,'CRM_Contact_Form_Search_Custom_DateAdded','11','CRM_Contact_Form_Search_Custom_DateAdded',NULL,0,NULL,11,'Date Added to CiviCRM',0,0,1,NULL,NULL,NULL,NULL,NULL),(228,25,'CRM_Contact_Form_Search_Custom_MultipleValues','12','CRM_Contact_Form_Search_Custom_MultipleValues',NULL,0,NULL,12,'Custom Group Multiple Values Listing',0,0,1,NULL,NULL,NULL,NULL,NULL),(229,25,'CRM_Contact_Form_Search_Custom_ContribSYBNT','13','CRM_Contact_Form_Search_Custom_ContribSYBNT',NULL,0,NULL,13,'Contributions made in Year X and not Year Y',0,0,1,NULL,NULL,NULL,NULL,NULL),(230,25,'CRM_Contact_Form_Search_Custom_TagContributions','14','CRM_Contact_Form_Search_Custom_TagContributions',NULL,0,NULL,14,'Find Contribution Amounts by Tag',0,0,1,NULL,NULL,NULL,NULL,NULL),(231,25,'CRM_Contact_Form_Search_Custom_FullText','15','CRM_Contact_Form_Search_Custom_FullText',NULL,0,NULL,15,'Full-text Search',0,0,1,NULL,NULL,NULL,NULL,NULL),(232,41,'Constituent Report (Summary)','contact/summary','CRM_Report_Form_Contact_Summary',NULL,0,NULL,1,'Provides a list of address and telephone information for constituent records in your system.',0,0,1,NULL,NULL,NULL,NULL,NULL),(233,41,'Constituent Report (Detail)','contact/detail','CRM_Report_Form_Contact_Detail',NULL,0,NULL,2,'Provides contact-related information on contributions, memberships, events and activities.',0,0,1,NULL,NULL,NULL,NULL,NULL),(234,41,'Activity Details Report','activity','CRM_Report_Form_Activity',NULL,0,NULL,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),(235,41,'Walk / Phone List Report','walklist','CRM_Report_Form_Walklist_Walklist',NULL,0,NULL,4,'Provides a detailed report for your walk/phonelist for targeted contacts',0,0,0,NULL,NULL,NULL,NULL,NULL),(236,41,'Current Employer Report','contact/currentEmployer','CRM_Report_Form_Contact_CurrentEmployer',NULL,0,NULL,5,'Provides detail list of employer employee relationships along with employment details Ex Join Date',0,0,1,NULL,NULL,NULL,NULL,NULL),(237,41,'Contribution Summary Report','contribute/summary','CRM_Report_Form_Contribute_Summary',NULL,0,NULL,6,'Groups and totals contributions by criteria including contact, time period, financial type, contributor location, etc.',0,0,1,2,NULL,NULL,NULL,NULL),(238,41,'Contribution Detail Report','contribute/detail','CRM_Report_Form_Contribute_Detail',NULL,0,NULL,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),(239,41,'Repeat Contributions Report','contribute/repeat','CRM_Report_Form_Contribute_Repeat',NULL,0,NULL,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),(240,41,'Contributions by Organization Report','contribute/organizationSummary','CRM_Report_Form_Contribute_OrganizationSummary',NULL,0,NULL,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),(241,41,'Contributions by Household Report','contribute/householdSummary','CRM_Report_Form_Contribute_HouseholdSummary',NULL,0,NULL,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),(242,41,'Top Donors Report','contribute/topDonor','CRM_Report_Form_Contribute_TopDonor',NULL,0,NULL,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),(243,41,'SYBUNT Report','contribute/sybunt','CRM_Report_Form_Contribute_Sybunt',NULL,0,NULL,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),(244,41,'LYBUNT Report','contribute/lybunt','CRM_Report_Form_Contribute_Lybunt',NULL,0,NULL,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),(245,41,'Soft Credit Report','contribute/softcredit','CRM_Report_Form_Contribute_SoftCredit',NULL,0,NULL,14,'Shows contributions made by contacts that have been soft-credited to other contacts.',0,0,1,2,NULL,NULL,NULL,NULL),(246,41,'Membership Report (Summary)','member/summary','CRM_Report_Form_Member_Summary',NULL,0,NULL,15,'Provides a summary of memberships by type and join date.',0,0,1,3,NULL,NULL,NULL,NULL),(247,41,'Membership Report (Detail)','member/detail','CRM_Report_Form_Member_Detail',NULL,0,NULL,16,'Provides a list of members along with their membership status and membership details (Join Date, Start Date, End Date). Can also display contributions (payments) associated with each membership.',0,0,1,3,NULL,NULL,NULL,NULL),(248,41,'Membership Report (Lapsed)','member/lapse','CRM_Report_Form_Member_Lapse',NULL,0,NULL,17,'Provides a list of memberships that lapsed or will lapse before the date you specify.',0,0,1,3,NULL,NULL,NULL,NULL),(249,41,'Event Participant Report (List)','event/participantListing','CRM_Report_Form_Event_ParticipantListing',NULL,0,NULL,18,'Provides lists of participants for an event.',0,0,1,1,NULL,NULL,NULL,NULL),(250,41,'Event Income Report (Summary)','event/summary','CRM_Report_Form_Event_Summary',NULL,0,NULL,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),(251,41,'Event Income Report (Detail)','event/income','CRM_Report_Form_Event_Income',NULL,0,NULL,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),(252,41,'Pledge Detail Report','pledge/detail','CRM_Report_Form_Pledge_Detail',NULL,0,NULL,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),(253,41,'Pledged but not Paid Report','pledge/pbnp','CRM_Report_Form_Pledge_Pbnp',NULL,0,NULL,22,'Pledged but not Paid Report',0,0,1,6,NULL,NULL,NULL,NULL),(254,41,'Relationship Report','contact/relationship','CRM_Report_Form_Contact_Relationship',NULL,0,NULL,23,'Relationship Report',0,0,1,NULL,NULL,NULL,NULL,NULL),(255,41,'Case Summary Report','case/summary','CRM_Report_Form_Case_Summary',NULL,0,NULL,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),(256,41,'Case Time Spent Report','case/timespent','CRM_Report_Form_Case_TimeSpent',NULL,0,NULL,25,'Aggregates time spent on case and / or non-case activities by activity type and contact.',0,0,1,7,NULL,NULL,NULL,NULL),(257,41,'Contact Demographics Report','case/demographics','CRM_Report_Form_Case_Demographics',NULL,0,NULL,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),(258,41,'Database Log Report','contact/log','CRM_Report_Form_Contact_Log',NULL,0,NULL,27,'Log of contact and activity records created or updated in a given date range.',0,0,1,NULL,NULL,NULL,NULL,NULL),(259,41,'Activity Summary Report','activitySummary','CRM_Report_Form_ActivitySummary',NULL,0,NULL,28,'Shows activity statistics by type / date',0,0,1,NULL,NULL,NULL,NULL,NULL),(260,41,'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),(261,41,'Grant Report (Detail)','grant/detail','CRM_Report_Form_Grant_Detail',NULL,0,0,30,'Grant Report Detail',0,0,1,5,NULL,NULL,NULL,NULL),(262,41,'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),(263,41,'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),(264,41,'Case Detail Report','case/detail','CRM_Report_Form_Case_Detail',NULL,0,0,33,'Case Details',0,0,1,7,NULL,NULL,NULL,NULL),(265,41,'Mail Bounce Report','Mailing/bounce','CRM_Report_Form_Mailing_Bounce',NULL,0,NULL,34,'Bounce Report for mailings',0,0,1,4,NULL,NULL,NULL,NULL),(266,41,'Mail Summary Report','Mailing/summary','CRM_Report_Form_Mailing_Summary',NULL,0,NULL,35,'Summary statistics for mailings',0,0,1,4,NULL,NULL,NULL,NULL),(267,41,'Mail Opened Report','Mailing/opened','CRM_Report_Form_Mailing_Opened',NULL,0,NULL,36,'Display contacts who opened emails from a mailing',0,0,1,4,NULL,NULL,NULL,NULL),(268,41,'Mail Click-Through Report','Mailing/clicks','CRM_Report_Form_Mailing_Clicks',NULL,0,NULL,37,'Display clicks from each mailing',0,0,1,4,NULL,NULL,NULL,NULL),(269,41,'Contact Logging Report (Summary)','logging/contact/summary','CRM_Report_Form_Contact_LoggingSummary',NULL,0,NULL,38,'Contact modification report for the logging infrastructure (summary).',0,0,0,NULL,NULL,NULL,NULL,NULL),(270,41,'Contact Logging Report (Detail)','logging/contact/detail','CRM_Report_Form_Contact_LoggingDetail',NULL,0,NULL,39,'Contact modification report for the logging infrastructure (detail).',0,0,0,NULL,NULL,NULL,NULL,NULL),(271,41,'Grant Report (Statistics)','grant/statistics','CRM_Report_Form_Grant_Statistics',NULL,0,NULL,42,'Shows statistics for Grants.',0,0,1,5,NULL,NULL,NULL,NULL),(272,41,'Survey Report (Detail)','survey/detail','CRM_Report_Form_Campaign_SurveyDetails',NULL,0,NULL,43,'Detailed report for canvassing, phone-banking, walk lists or other surveys.',0,0,1,9,NULL,NULL,NULL,NULL),(273,41,'Personal Campaign Page Report','contribute/pcp','CRM_Report_Form_Contribute_PCP',NULL,0,NULL,44,'Summarizes amount raised and number of contributors for each Personal Campaign Page.',0,0,1,2,NULL,NULL,NULL,NULL),(274,41,'Pledge Summary Report','pledge/summary','CRM_Report_Form_Pledge_Summary',NULL,0,NULL,45,'Groups and totals pledges by criteria including contact, time period, pledge status, location, etc.',0,0,1,6,NULL,NULL,NULL,NULL),(275,41,'Contribution Aggregate by Relationship','contribute/history','CRM_Report_Form_Contribute_History',NULL,0,NULL,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),(276,41,'Mail Detail Report','mailing/detail','CRM_Report_Form_Mailing_Detail',NULL,0,NULL,47,'Provides reporting on Intended and Successful Deliveries, Unsubscribes and Opt-outs, Replies and Forwards.',0,0,1,4,NULL,NULL,NULL,NULL),(277,41,'Contribution and Membership Details','member/contributionDetail','CRM_Report_Form_Member_ContributionDetail',NULL,0,NULL,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),(278,41,'Recurring Contributions Report','contribute/recur','CRM_Report_Form_Contribute_Recur',NULL,0,NULL,49,'Provides information about the status of recurring contributions',0,0,1,2,NULL,NULL,NULL,NULL),(279,41,'Recurring Contributions Summary','contribute/recursummary','CRM_Report_Form_Contribute_RecurSummary',NULL,0,NULL,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),(280,41,'Deferred Revenue Details','contribute/deferredrevenue','CRM_Report_Form_Contribute_DeferredRevenue',NULL,0,NULL,50,'Deferred Revenue Details Report',0,0,1,2,NULL,NULL,NULL,NULL),(281,26,'Scheduled','1','Scheduled',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(282,26,'Completed','2','Completed',NULL,1,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(283,26,'Cancelled','3','Cancelled',NULL,2,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(284,26,'Left Message','4','Left Message',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(285,26,'Unreachable','5','Unreachable',NULL,2,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(286,26,'Not Required','6','Not Required',NULL,2,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(287,26,'Available','7','Available',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(288,26,'No-show','8','No_show',NULL,2,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(289,28,'Ongoing','1','Open','Opened',0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(290,28,'Resolved','2','Closed','Closed',0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(291,28,'Urgent','3','Urgent','Opened',0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(292,29,'Name Only','1','Name Only',NULL,0,0,1,'CRM_Event_Page_ParticipantListing_Name',0,1,1,NULL,NULL,NULL,NULL,NULL),(293,29,'Name and Email','2','Name and Email',NULL,0,0,2,'CRM_Event_Page_ParticipantListing_NameAndEmail',0,1,1,NULL,NULL,NULL,NULL,NULL),(294,29,'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),(295,30,'jpg','1','jpg',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(296,30,'jpeg','2','jpeg',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(297,30,'png','3','png',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(298,30,'gif','4','gif',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(299,30,'txt','5','txt',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(300,30,'pdf','6','pdf',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(301,30,'doc','7','doc',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(302,30,'xls','8','xls',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(303,30,'rtf','9','rtf',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(304,30,'csv','10','csv',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(305,30,'ppt','11','ppt',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(306,30,'docx','12','docx',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(307,30,'xlsx','13','xlsx',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(308,30,'odt','14','odt',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(309,30,'ics','15','ics',NULL,0,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(310,30,'pptx','16','pptx',NULL,0,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(311,33,'Textarea','1','Textarea',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(312,33,'CKEditor','2','CKEditor',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(313,32,'Search Builder','1','Search Builder',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(314,32,'Import Contact','2','Import Contact',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(315,32,'Import Activity','3','Import Activity',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(316,32,'Import Contribution','4','Import Contribution',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(317,32,'Import Membership','5','Import Membership',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(318,32,'Import Participant','6','Import Participant',NULL,0,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(319,32,'Export Contact','7','Export Contact',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(320,32,'Export Contribution','8','Export Contribution',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(321,32,'Export Membership','9','Export Membership',NULL,0,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(322,32,'Export Participant','10','Export Participant',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(323,32,'Export Pledge','11','Export Pledge',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(324,32,'Export Case','12','Export Case',NULL,0,0,12,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(325,32,'Export Grant','13','Export Grant',NULL,0,0,13,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(326,32,'Export Activity','14','Export Activity',NULL,0,0,14,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(327,34,'day','day','day',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(328,34,'week','week','week',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(329,34,'month','month','month',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(330,34,'year','year','year',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(331,35,'Phone','1','Phone',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(332,35,'Mobile','2','Mobile',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(333,35,'Fax','3','Fax',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(334,35,'Pager','4','Pager',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(335,35,'Voicemail','5','Voicemail',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(336,36,'Participant Role','1','ParticipantRole',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(337,36,'Participant Event Name','2','ParticipantEventName',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(338,36,'Participant Event Type','3','ParticipantEventType',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(339,37,'Public','1','public',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(340,37,'Admin','2','admin',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(341,38,'IMAP','1','IMAP',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(342,38,'Maildir','2','Maildir',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(343,38,'POP3','3','POP3',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(344,38,'Localdir','4','Localdir',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(345,38,'IMAP XOAUTH2','5','IMAP_XOAUTH2',NULL,0,NULL,5,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(346,39,'Urgent','1','Urgent',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(347,39,'Normal','2','Normal',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(348,39,'Low','3','Low',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(349,40,'Vancouver','city_','city_',NULL,0,NULL,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(350,40,'/(19|20)(\\d{2})-(\\d{1,2})-(\\d{1,2})/','date_','date_',NULL,1,NULL,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(351,42,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(352,42,'Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}','2','Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(353,42,'Dear {contact.individual_prefix} {contact.last_name}','3','Dear {contact.individual_prefix} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(354,42,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(355,42,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(356,43,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(357,43,'Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}','2','Dear {contact.individual_prefix} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(358,43,'Dear {contact.individual_prefix} {contact.last_name}','3','Dear {contact.individual_prefix} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(359,43,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(360,43,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(361,44,'{contact.individual_prefix}{ } {contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.individual_suffix}','1','}{contact.individual_prefix}{ } {contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.individual_suffix}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(362,44,'{contact.household_name}','2','{contact.household_name}',NULL,2,1,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(363,44,'{contact.organization_name}','3','{contact.organization_name}',NULL,3,1,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(364,44,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(365,47,'Work','1','Work',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(366,47,'Main','2','Main',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(367,47,'Facebook','3','Facebook',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(368,47,'Instagram','5','Instagram',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(369,47,'LinkedIn','6','LinkedIn',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(370,47,'MySpace','7','MySpace',NULL,0,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(371,47,'Pinterest','8','Pinterest',NULL,0,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(372,47,'SnapChat','9','SnapChat',NULL,0,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(373,47,'Tumblr','10','Tumblr',NULL,0,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(374,47,'Twitter','11','Twitter',NULL,0,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(375,47,'Vine','12','Vine ',NULL,0,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(376,48,'Contacts','civicrm_contact','Contacts',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(377,48,'Activities','civicrm_activity','Activities',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(378,48,'Cases','civicrm_case','Cases',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(379,48,'Attachments','civicrm_file','Attachements',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(380,49,'USD ($)','USD','USD',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(381,50,'Name Only','1','CRM_Event_Badge_Simple',NULL,0,0,1,'Simple Event Name Badge',0,1,1,NULL,NULL,NULL,NULL,NULL),(382,50,'Name Tent','2','CRM_Event_Badge_NameTent',NULL,0,0,2,'Name Tent',0,1,1,NULL,NULL,NULL,NULL,NULL),(383,50,'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),(384,50,'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),(385,51,'None','0','None',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(386,51,'Author Only','1','Author Only',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(387,52,'Direct Mail','1','Direct Mail',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(388,52,'Referral Program','2','Referral Program',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(389,52,'Constituent Engagement','3','Constituent Engagement',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(390,53,'Planned','1','Planned',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(391,53,'In Progress','2','In Progress',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(392,53,'Completed','3','Completed',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(393,53,'Cancelled','4','Cancelled',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(394,56,'1','1','1',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(395,56,'2','2','2',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(396,56,'3','3','3',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(397,56,'4','4','4',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(398,56,'5','5','5',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(399,58,'Letter','{\"metric\":\"in\",\"width\":8.5,\"height\":11}','letter',NULL,NULL,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(400,58,'Legal','{\"metric\":\"in\",\"width\":8.5,\"height\":14}','legal',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(401,58,'Ledger','{\"metric\":\"in\",\"width\":17,\"height\":11}','ledger',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(402,58,'Tabloid','{\"metric\":\"in\",\"width\":11,\"height\":17}','tabloid',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(403,58,'Executive','{\"metric\":\"in\",\"width\":7.25,\"height\":10.5}','executive',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(404,58,'Folio','{\"metric\":\"in\",\"width\":8.5,\"height\":13}','folio',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(405,58,'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,58,'Envelope #10','{\"metric\":\"pt\",\"width\":684,\"height\":297}','envelope-10',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(407,58,'Envelope #11','{\"metric\":\"pt\",\"width\":747,\"height\":324}','envelope-11',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(408,58,'Envelope #12','{\"metric\":\"pt\",\"width\":792,\"height\":342}','envelope-12',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(409,58,'Envelope #14','{\"metric\":\"pt\",\"width\":828,\"height\":360}','envelope-14',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(410,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,58,'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,61,'Activity Assignees','1','Activity Assignees',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(462,61,'Activity Source','2','Activity Source',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(463,61,'Activity Targets','3','Activity Targets',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(464,71,'Asset','1','Asset',NULL,0,0,1,'Things you own',0,1,1,2,NULL,NULL,NULL,NULL),(465,71,'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),(466,71,'Revenue','3','Revenue',NULL,0,1,3,'Income from contributions and sales of tickets and memberships',0,1,1,2,NULL,NULL,NULL,NULL),(467,71,'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),(468,71,'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),(469,62,'Income Account is','1','Income Account is',NULL,0,1,1,'Income Account is',0,1,1,2,NULL,NULL,NULL,NULL),(470,62,'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),(471,62,'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),(472,62,'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),(473,62,'Expense Account is','5','Expense Account is',NULL,0,0,5,'Expense Account is',0,1,1,2,NULL,NULL,NULL,NULL),(474,62,'Asset Account is','6','Asset Account is',NULL,0,0,6,'Asset Account is',0,1,1,2,NULL,NULL,NULL,NULL),(475,62,'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),(476,62,'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),(477,62,'Discounts Account is','9','Discounts Account is',NULL,0,0,9,'Discounts Account is',0,1,1,2,NULL,NULL,NULL,NULL),(478,62,'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),(479,62,'Chargeback Account is','11','Chargeback Account is',NULL,0,0,11,'Chargeback Account is',0,1,1,2,NULL,NULL,NULL,NULL),(480,62,'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),(481,63,'Participant Role','1','participant_role',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(482,64,'Morning Sessions','1','Morning Sessions',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(483,64,'Evening Sessions','2','Evening Sessions',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(484,65,'Contribution','1','Contribution',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(485,65,'Membership','2','Membership',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(486,65,'Pledge Payment','3','Pledge Payment',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(487,67,'Open','1','Open',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(488,67,'Closed','2','Closed',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(489,67,'Data Entry','3','Data Entry',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(490,67,'Reopened','4','Reopened',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(491,67,'Exported','5','Exported',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(492,66,'Manual Batch','1','Manual Batch',NULL,0,0,1,'Manual Batch',0,1,1,2,NULL,NULL,NULL,NULL),(493,66,'Automatic Batch','2','Automatic Batch',NULL,0,0,2,'Automatic Batch',0,1,1,2,NULL,NULL,NULL,NULL),(494,72,'Paid','1','Paid',NULL,0,0,1,'Paid',0,1,1,2,NULL,NULL,NULL,NULL),(495,72,'Partially paid','2','Partially paid',NULL,0,0,2,'Partially paid',0,1,1,2,NULL,NULL,NULL,NULL),(496,72,'Unpaid','3','Unpaid',NULL,0,0,1,'Unpaid',0,1,1,2,NULL,NULL,NULL,NULL),(497,68,'http','1','http',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(498,68,'xml','2','xml',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(499,68,'smtp','3','smtp',NULL,NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(500,70,'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),(501,70,'Auto-renew Memberships Only','2','Auto-renew Memberships Only',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(502,70,'Reminder for Both','3','Reminder for Both',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(503,73,'Event Badge','1','Event Badge',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(504,74,'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,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(505,74,'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,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(506,74,'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,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(507,74,'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,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(508,60,'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),(509,60,'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),(510,60,'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),(511,60,'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),(512,60,'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),(513,60,'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),(514,60,'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),(515,60,'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),(516,60,'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),(517,60,'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),(518,60,'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),(519,75,'Formal','1','formal',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(520,75,'Familiar','2','familiar',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(521,76,'Email','Email','Email',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(522,76,'SMS','SMS','SMS',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(523,76,'User Preference','User_Preference','User Preference',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(524,77,'Actual date only','1','Actual date only',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(525,77,'Each anniversary','2','Each anniversary',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(526,78,'Default','1','default',NULL,NULL,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(527,78,'CiviMail','2','civimail',NULL,NULL,0,2,NULL,0,1,1,4,NULL,NULL,NULL,NULL),(528,78,'CiviEvent','3','civievent',NULL,NULL,0,3,NULL,0,1,1,1,NULL,NULL,NULL,NULL),(529,82,'Production','Production','Production',NULL,NULL,1,1,'Production Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(530,82,'Staging','Staging','Staging',NULL,NULL,0,2,'Staging Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(531,82,'Development','Development','Development',NULL,NULL,0,3,'Development Environment',0,1,1,NULL,NULL,NULL,NULL,NULL),(532,79,'Today','this.day','this.day',NULL,NULL,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(533,79,'This week','this.week','this.week',NULL,NULL,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(534,79,'This calendar month','this.month','this.month',NULL,NULL,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(535,79,'This quarter','this.quarter','this.quarter',NULL,NULL,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(536,79,'This fiscal year','this.fiscal_year','this.fiscal_year',NULL,NULL,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(537,79,'This calendar year','this.year','this.year',NULL,NULL,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(538,79,'Yesterday','previous.day','previous.day',NULL,NULL,NULL,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(539,79,'Previous week','previous.week','previous.week',NULL,NULL,NULL,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(540,79,'Previous calendar month','previous.month','previous.month',NULL,NULL,NULL,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(541,79,'Previous quarter','previous.quarter','previous.quarter',NULL,NULL,NULL,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(542,79,'Previous fiscal year','previous.fiscal_year','previous.fiscal_year',NULL,NULL,NULL,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(543,79,'Previous calendar year','previous.year','previous.year',NULL,NULL,NULL,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(544,79,'Last 7 days including today','ending.week','ending.week',NULL,NULL,NULL,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(545,79,'Last 30 days including today','ending_30.day','ending.month',NULL,NULL,NULL,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(546,79,'Last 60 days including today','ending_60.day','ending_2.month',NULL,NULL,NULL,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(547,79,'Last 90 days including today','ending_90.day','ending.quarter',NULL,NULL,NULL,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(548,79,'Last 12 months including today','ending.year','ending.year',NULL,NULL,NULL,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(549,79,'Last 2 years including today','ending_2.year','ending_2.year',NULL,NULL,NULL,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(550,79,'Last 3 years including today','ending_3.year','ending_3.year',NULL,NULL,NULL,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(551,79,'Tomorrow','starting.day','starting.day',NULL,NULL,NULL,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(552,79,'Next week','next.week','next.week',NULL,NULL,NULL,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(553,79,'Next calendar month','next.month','next.month',NULL,NULL,NULL,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(554,79,'Next quarter','next.quarter','next.quarter',NULL,NULL,NULL,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(555,79,'Next fiscal year','next.fiscal_year','next.fiscal_year',NULL,NULL,NULL,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(556,79,'Next calendar year','next.year','next.year',NULL,NULL,NULL,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(557,79,'Next 7 days including today','starting.week','starting.week',NULL,NULL,NULL,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(558,79,'Next 30 days including today','starting.month','starting.month',NULL,NULL,NULL,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(559,79,'Next 60 days including today','starting_2.month','starting_2.month',NULL,NULL,NULL,28,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(560,79,'Next 90 days including today','starting.quarter','starting.quarter',NULL,NULL,NULL,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(561,79,'Next 12 months including today','starting.year','starting.year',NULL,NULL,NULL,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(562,79,'Current week to-date','current.week','current.week',NULL,NULL,NULL,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(563,79,'Current calendar month to-date','current.month','current.month',NULL,NULL,NULL,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(564,79,'Current quarter to-date','current.quarter','current.quarter',NULL,NULL,NULL,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(565,79,'Current calendar year to-date','current.year','current.year',NULL,NULL,NULL,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(566,79,'To end of yesterday','earlier.day','earlier.day',NULL,NULL,NULL,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(567,79,'To end of previous week','earlier.week','earlier.week',NULL,NULL,NULL,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(568,79,'To end of previous calendar month','earlier.month','earlier.month',NULL,NULL,NULL,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(569,79,'To end of previous quarter','earlier.quarter','earlier.quarter',NULL,NULL,NULL,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(570,79,'To end of previous calendar year','earlier.year','earlier.year',NULL,NULL,NULL,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(571,79,'From start of current day','greater.day','greater.day',NULL,NULL,NULL,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(572,79,'From start of current week','greater.week','greater.week',NULL,NULL,NULL,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(573,79,'From start of current calendar month','greater.month','greater.month',NULL,NULL,NULL,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(574,79,'From start of current quarter','greater.quarter','greater.quarter',NULL,NULL,NULL,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(575,79,'From start of current calendar year','greater.year','greater.year',NULL,NULL,NULL,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(576,79,'To end of current week','less.week','less.week',NULL,NULL,NULL,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(577,79,'To end of current calendar month','less.month','less.month',NULL,NULL,NULL,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(578,79,'To end of current quarter','less.quarter','less.quarter',NULL,NULL,NULL,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(579,79,'To end of current calendar year','less.year','less.year',NULL,NULL,NULL,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(580,79,'Previous 2 days','previous_2.day','previous_2.day',NULL,NULL,NULL,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(581,79,'Previous 2 weeks','previous_2.week','previous_2.week',NULL,NULL,NULL,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(582,79,'Previous 2 calendar months','previous_2.month','previous_2.month',NULL,NULL,NULL,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(583,79,'Previous 2 quarters','previous_2.quarter','previous_2.quarter',NULL,NULL,NULL,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(584,79,'Previous 2 calendar years','previous_2.year','previous_2.year',NULL,NULL,NULL,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(585,79,'Day prior to yesterday','previous_before.day','previous_before.day',NULL,NULL,NULL,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(586,79,'Week prior to previous week','previous_before.week','previous_before.week',NULL,NULL,NULL,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(587,79,'Month prior to previous calendar month','previous_before.month','previous_before.month',NULL,NULL,NULL,56,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(588,79,'Quarter prior to previous quarter','previous_before.quarter','previous_before.quarter',NULL,NULL,NULL,57,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(589,79,'Year prior to previous calendar year','previous_before.year','previous_before.year',NULL,NULL,NULL,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(590,79,'From end of previous week','greater_previous.week','greater_previous.week',NULL,NULL,NULL,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(591,79,'From end of previous calendar month','greater_previous.month','greater_previous.month',NULL,NULL,NULL,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(592,79,'From end of previous quarter','greater_previous.quarter','greater_previous.quarter',NULL,NULL,NULL,61,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(593,79,'From end of previous calendar year','greater_previous.year','greater_previous.year',NULL,NULL,NULL,62,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(594,80,'Completed','1','Completed',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(595,80,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(596,80,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(597,80,'In Progress','5','In Progress',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(598,80,'Overdue','6','Overdue',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(599,81,'Completed','1','Completed',NULL,0,NULL,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(600,81,'Pending','2','Pending',NULL,0,NULL,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(601,81,'Cancelled','3','Cancelled',NULL,0,NULL,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(602,81,'Failed','4','Failed',NULL,0,NULL,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(603,81,'In Progress','5','In Progress',NULL,0,NULL,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(604,81,'Overdue','6','Overdue',NULL,0,NULL,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(605,81,'Processing','7','Processing',NULL,0,NULL,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(606,81,'Failing','8','Failing',NULL,0,NULL,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(607,83,'None','1','NONE',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(608,83,'By relationship to case client','2','BY_RELATIONSHIP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(609,83,'Specific contact','3','SPECIFIC_CONTACT',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(610,83,'User creating the case','4','USER_CREATING_THE_CASE',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(611,31,'\"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),(612,24,'Emergency','1','Emergency',NULL,0,1,1,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(613,24,'Family Support','2','Family Support',NULL,0,NULL,2,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(614,24,'General Protection','3','General Protection',NULL,0,NULL,3,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(615,24,'Impunity','4','Impunity',NULL,0,NULL,4,NULL,0,0,1,NULL,1,NULL,NULL,NULL),(616,55,'Approved','1','Approved',NULL,0,1,1,NULL,0,1,1,4,1,NULL,NULL,NULL),(617,55,'Rejected','2','Rejected',NULL,0,0,2,NULL,0,1,1,4,1,NULL,NULL,NULL),(618,55,'None','3','None',NULL,0,0,3,NULL,0,1,1,4,1,NULL,NULL,NULL),(619,57,'Survey','Survey','civicrm_survey',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(620,57,'Cases','Case','civicrm_case',NULL,0,NULL,2,'CRM_Case_PseudoConstant::caseType;',0,0,1,NULL,NULL,NULL,NULL,NULL),(621,84,'Abkhaz','ab','ab_GE',NULL,0,0,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(622,84,'Afar','aa','aa_ET',NULL,0,0,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(623,84,'Afrikaans','af','af_ZA',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(624,84,'Akan','ak','ak_GH',NULL,0,0,4,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(625,84,'Albanian','sq','sq_AL',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(626,84,'Amharic','am','am_ET',NULL,0,0,6,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(627,84,'Arabic','ar','ar_EG',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(628,84,'Aragonese','an','an_ES',NULL,0,0,8,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(629,84,'Armenian','hy','hy_AM',NULL,0,0,9,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(630,84,'Assamese','as','as_IN',NULL,0,0,10,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(631,84,'Avaric','av','av_RU',NULL,0,0,11,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(632,84,'Avestan','ae','ae_XX',NULL,0,0,12,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(633,84,'Aymara','ay','ay_BO',NULL,0,0,13,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(634,84,'Azerbaijani','az','az_AZ',NULL,0,0,14,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(635,84,'Bambara','bm','bm_ML',NULL,0,0,15,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(636,84,'Bashkir','ba','ba_RU',NULL,0,0,16,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(637,84,'Basque','eu','eu_ES',NULL,0,0,17,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(638,84,'Belarusian','be','be_BY',NULL,0,0,18,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(639,84,'Bengali','bn','bn_BD',NULL,0,0,19,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(640,84,'Bihari','bh','bh_IN',NULL,0,0,20,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(641,84,'Bislama','bi','bi_VU',NULL,0,0,21,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(642,84,'Bosnian','bs','bs_BA',NULL,0,0,22,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(643,84,'Breton','br','br_FR',NULL,0,0,23,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(644,84,'Bulgarian','bg','bg_BG',NULL,0,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(645,84,'Burmese','my','my_MM',NULL,0,0,25,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(646,84,'Catalan; Valencian','ca','ca_ES',NULL,0,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(647,84,'Chamorro','ch','ch_GU',NULL,0,0,27,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(648,84,'Chechen','ce','ce_RU',NULL,0,0,28,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(649,84,'Chichewa; Chewa; Nyanja','ny','ny_MW',NULL,0,0,29,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(650,84,'Chinese (China)','zh','zh_CN',NULL,0,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(651,84,'Chinese (Taiwan)','zh','zh_TW',NULL,0,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(652,84,'Chuvash','cv','cv_RU',NULL,0,0,32,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(653,84,'Cornish','kw','kw_GB',NULL,0,0,33,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(654,84,'Corsican','co','co_FR',NULL,0,0,34,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(655,84,'Cree','cr','cr_CA',NULL,0,0,35,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(656,84,'Croatian','hr','hr_HR',NULL,0,0,36,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(657,84,'Czech','cs','cs_CZ',NULL,0,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(658,84,'Danish','da','da_DK',NULL,0,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(659,84,'Divehi; Dhivehi; Maldivian;','dv','dv_MV',NULL,0,0,39,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(660,84,'Dutch (Netherlands)','nl','nl_NL',NULL,0,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(661,84,'Dutch (Belgium)','nl','nl_BE',NULL,0,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(662,84,'Dzongkha','dz','dz_BT',NULL,0,0,42,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(663,84,'English (Australia)','en','en_AU',NULL,0,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(664,84,'English (Canada)','en','en_CA',NULL,0,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(665,84,'English (United Kingdom)','en','en_GB',NULL,0,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(666,84,'English (United States)','en','en_US',NULL,0,1,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(667,84,'Esperanto','eo','eo_XX',NULL,0,0,47,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(668,84,'Estonian','et','et_EE',NULL,0,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(669,84,'Ewe','ee','ee_GH',NULL,0,0,49,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(670,84,'Faroese','fo','fo_FO',NULL,0,0,50,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(671,84,'Fijian','fj','fj_FJ',NULL,0,0,51,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(672,84,'Finnish','fi','fi_FI',NULL,0,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(673,84,'French (Canada)','fr','fr_CA',NULL,0,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(674,84,'French (France)','fr','fr_FR',NULL,0,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(675,84,'Fula; Fulah; Pulaar; Pular','ff','ff_SN',NULL,0,0,55,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(676,84,'Galician','gl','gl_ES',NULL,0,0,56,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(677,84,'Georgian','ka','ka_GE',NULL,0,0,57,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(678,84,'German','de','de_DE',NULL,0,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(679,84,'German (Swiss)','de','de_CH',NULL,0,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(680,84,'Greek, Modern','el','el_GR',NULL,0,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(681,84,'GuaraniÂ','gn','gn_PY',NULL,0,0,61,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(682,84,'Gujarati','gu','gu_IN',NULL,0,0,62,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(683,84,'Haitian; Haitian Creole','ht','ht_HT',NULL,0,0,63,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(684,84,'Hausa','ha','ha_NG',NULL,0,0,64,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(685,84,'Hebrew (modern)','he','he_IL',NULL,0,0,65,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(686,84,'Herero','hz','hz_NA',NULL,0,0,66,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(687,84,'Hindi','hi','hi_IN',NULL,0,0,67,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(688,84,'Hiri Motu','ho','ho_PG',NULL,0,0,68,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(689,84,'Hungarian','hu','hu_HU',NULL,0,0,69,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(690,84,'Interlingua','ia','ia_XX',NULL,0,0,70,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(691,84,'Indonesian','id','id_ID',NULL,0,0,71,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(692,84,'Interlingue','ie','ie_XX',NULL,0,0,72,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(693,84,'Irish','ga','ga_IE',NULL,0,0,73,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(694,84,'Igbo','ig','ig_NG',NULL,0,0,74,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(695,84,'Inupiaq','ik','ik_US',NULL,0,0,75,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(696,84,'Ido','io','io_XX',NULL,0,0,76,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(697,84,'Icelandic','is','is_IS',NULL,0,0,77,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(698,84,'Italian','it','it_IT',NULL,0,0,78,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(699,84,'Inuktitut','iu','iu_CA',NULL,0,0,79,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(700,84,'Japanese','ja','ja_JP',NULL,0,0,80,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(701,84,'Javanese','jv','jv_ID',NULL,0,0,81,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(702,84,'Kalaallisut, Greenlandic','kl','kl_GL',NULL,0,0,82,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(703,84,'Kannada','kn','kn_IN',NULL,0,0,83,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(704,84,'Kanuri','kr','kr_NE',NULL,0,0,84,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(705,84,'Kashmiri','ks','ks_IN',NULL,0,0,85,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(706,84,'Kazakh','kk','kk_KZ',NULL,0,0,86,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(707,84,'Khmer','km','km_KH',NULL,0,0,87,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(708,84,'Kikuyu, Gikuyu','ki','ki_KE',NULL,0,0,88,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(709,84,'Kinyarwanda','rw','rw_RW',NULL,0,0,89,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(710,84,'Kirghiz, Kyrgyz','ky','ky_KG',NULL,0,0,90,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(711,84,'Komi','kv','kv_RU',NULL,0,0,91,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(712,84,'Kongo','kg','kg_CD',NULL,0,0,92,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(713,84,'Korean','ko','ko_KR',NULL,0,0,93,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(714,84,'Kurdish','ku','ku_IQ',NULL,0,0,94,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(715,84,'Kwanyama, Kuanyama','kj','kj_NA',NULL,0,0,95,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(716,84,'Latin','la','la_VA',NULL,0,0,96,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(717,84,'Luxembourgish, Letzeburgesch','lb','lb_LU',NULL,0,0,97,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(718,84,'Luganda','lg','lg_UG',NULL,0,0,98,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(719,84,'Limburgish, Limburgan, Limburger','li','li_NL',NULL,0,0,99,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(720,84,'Lingala','ln','ln_CD',NULL,0,0,100,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(721,84,'Lao','lo','lo_LA',NULL,0,0,101,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(722,84,'Lithuanian','lt','lt_LT',NULL,0,0,102,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(723,84,'Luba-Katanga','lu','lu_CD',NULL,0,0,103,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(724,84,'Latvian','lv','lv_LV',NULL,0,0,104,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(725,84,'Manx','gv','gv_IM',NULL,0,0,105,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(726,84,'Macedonian','mk','mk_MK',NULL,0,0,106,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(727,84,'Malagasy','mg','mg_MG',NULL,0,0,107,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(728,84,'Malay','ms','ms_MY',NULL,0,0,108,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(729,84,'Malayalam','ml','ml_IN',NULL,0,0,109,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(730,84,'Maltese','mt','mt_MT',NULL,0,0,110,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(731,84,'MÄori','mi','mi_NZ',NULL,0,0,111,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(732,84,'Marathi','mr','mr_IN',NULL,0,0,112,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(733,84,'Marshallese','mh','mh_MH',NULL,0,0,113,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(734,84,'Mongolian','mn','mn_MN',NULL,0,0,114,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(735,84,'Nauru','na','na_NR',NULL,0,0,115,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(736,84,'Navajo, Navaho','nv','nv_US',NULL,0,0,116,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(737,84,'Norwegian BokmÃ¥l','nb','nb_NO',NULL,0,0,117,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(738,84,'North Ndebele','nd','nd_ZW',NULL,0,0,118,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(739,84,'Nepali','ne','ne_NP',NULL,0,0,119,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(740,84,'Ndonga','ng','ng_NA',NULL,0,0,120,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(741,84,'Norwegian Nynorsk','nn','nn_NO',NULL,0,0,121,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(742,84,'Norwegian','no','no_NO',NULL,0,0,122,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(743,84,'Nuosu','ii','ii_CN',NULL,0,0,123,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(744,84,'South Ndebele','nr','nr_ZA',NULL,0,0,124,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(745,84,'Occitan (after 1500)','oc','oc_FR',NULL,0,0,125,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(746,84,'Ojibwa','oj','oj_CA',NULL,0,0,126,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(747,84,'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),(748,84,'Oromo','om','om_ET',NULL,0,0,128,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(749,84,'Oriya','or','or_IN',NULL,0,0,129,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(750,84,'Ossetian, Ossetic','os','os_GE',NULL,0,0,130,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(751,84,'Panjabi, Punjabi','pa','pa_IN',NULL,0,0,131,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(752,84,'Pali','pi','pi_KH',NULL,0,0,132,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(753,84,'Persian (Iran)','fa','fa_IR',NULL,0,0,133,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(754,84,'Polish','pl','pl_PL',NULL,0,0,134,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(755,84,'Pashto, Pushto','ps','ps_AF',NULL,0,0,135,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(756,84,'Portuguese (Brazil)','pt','pt_BR',NULL,0,0,136,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(757,84,'Portuguese (Portugal)','pt','pt_PT',NULL,0,0,137,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(758,84,'Quechua','qu','qu_PE',NULL,0,0,138,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(759,84,'Romansh','rm','rm_CH',NULL,0,0,139,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(760,84,'Kirundi','rn','rn_BI',NULL,0,0,140,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(761,84,'Romanian, Moldavian, Moldovan','ro','ro_RO',NULL,0,0,141,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(762,84,'Russian','ru','ru_RU',NULL,0,0,142,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(763,84,'Sanskrit','sa','sa_IN',NULL,0,0,143,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(764,84,'Sardinian','sc','sc_IT',NULL,0,0,144,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(765,84,'Sindhi','sd','sd_IN',NULL,0,0,145,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(766,84,'Northern Sami','se','se_NO',NULL,0,0,146,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(767,84,'Samoan','sm','sm_WS',NULL,0,0,147,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(768,84,'Sango','sg','sg_CF',NULL,0,0,148,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(769,84,'Serbian','sr','sr_RS',NULL,0,0,149,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(770,84,'Scottish Gaelic; Gaelic','gd','gd_GB',NULL,0,0,150,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(771,84,'Shona','sn','sn_ZW',NULL,0,0,151,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(772,84,'Sinhala, Sinhalese','si','si_LK',NULL,0,0,152,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(773,84,'Slovak','sk','sk_SK',NULL,0,0,153,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(774,84,'Slovene','sl','sl_SI',NULL,0,0,154,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(775,84,'Somali','so','so_SO',NULL,0,0,155,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(776,84,'Southern Sotho','st','st_ZA',NULL,0,0,156,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(777,84,'Spanish; Castilian (Spain)','es','es_ES',NULL,0,0,157,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(778,84,'Spanish; Castilian (Mexico)','es','es_MX',NULL,0,0,158,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(779,84,'Spanish; Castilian (Puerto Rico)','es','es_PR',NULL,0,0,159,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(780,84,'Sundanese','su','su_ID',NULL,0,0,160,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(781,84,'Swahili','sw','sw_TZ',NULL,0,0,161,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(782,84,'Swati','ss','ss_ZA',NULL,0,0,162,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(783,84,'Swedish','sv','sv_SE',NULL,0,0,163,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(784,84,'Tamil','ta','ta_IN',NULL,0,0,164,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(785,84,'Telugu','te','te_IN',NULL,0,0,165,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(786,84,'Tajik','tg','tg_TJ',NULL,0,0,166,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(787,84,'Thai','th','th_TH',NULL,0,0,167,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(788,84,'Tigrinya','ti','ti_ET',NULL,0,0,168,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(789,84,'Tibetan Standard, Tibetan, Central','bo','bo_CN',NULL,0,0,169,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(790,84,'Turkmen','tk','tk_TM',NULL,0,0,170,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(791,84,'Tagalog','tl','tl_PH',NULL,0,0,171,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(792,84,'Tswana','tn','tn_ZA',NULL,0,0,172,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(793,84,'Tonga (Tonga Islands)','to','to_TO',NULL,0,0,173,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(794,84,'Turkish','tr','tr_TR',NULL,0,0,174,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(795,84,'Tsonga','ts','ts_ZA',NULL,0,0,175,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(796,84,'Tatar','tt','tt_RU',NULL,0,0,176,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(797,84,'Twi','tw','tw_GH',NULL,0,0,177,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(798,84,'Tahitian','ty','ty_PF',NULL,0,0,178,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(799,84,'Uighur, Uyghur','ug','ug_CN',NULL,0,0,179,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(800,84,'Ukrainian','uk','uk_UA',NULL,0,0,180,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(801,84,'Urdu','ur','ur_PK',NULL,0,0,181,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(802,84,'Uzbek','uz','uz_UZ',NULL,0,0,182,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(803,84,'Venda','ve','ve_ZA',NULL,0,0,183,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(804,84,'Vietnamese','vi','vi_VN',NULL,0,0,184,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(805,84,'Volapük','vo','vo_XX',NULL,0,0,185,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(806,84,'Walloon','wa','wa_BE',NULL,0,0,186,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(807,84,'Welsh','cy','cy_GB',NULL,0,0,187,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(808,84,'Wolof','wo','wo_SN',NULL,0,0,188,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(809,84,'Western Frisian','fy','fy_NL',NULL,0,0,189,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(810,84,'Xhosa','xh','xh_ZA',NULL,0,0,190,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(811,84,'Yiddish','yi','yi_US',NULL,0,0,191,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(812,84,'Yoruba','yo','yo_NG',NULL,0,0,192,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(813,84,'Zhuang, Chuang','za','za_CN',NULL,0,0,193,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(814,84,'Zulu','zu','zu_ZA',NULL,0,0,194,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL),(815,85,'In Person','1','in_person',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(816,85,'Phone','2','phone',NULL,0,1,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(817,85,'Email','3','email',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(818,85,'Fax','4','fax',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(819,85,'Letter Mail','5','letter_mail',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(820,86,'Cases - Send Copy of an Activity','1','case_activity',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(821,87,'Contributions - Duplicate Organization Alert','1','contribution_dupalert',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(822,87,'Contributions - Receipt (off-line)','2','contribution_offline_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(823,87,'Contributions - Receipt (on-line)','3','contribution_online_receipt',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(824,87,'Contributions - Invoice','4','contribution_invoice_receipt',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(825,87,'Contributions - Recurring Start and End Notification','5','contribution_recurring_notify',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(826,87,'Contributions - Recurring Cancellation Notification','6','contribution_recurring_cancelled',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(827,87,'Contributions - Recurring Billing Updates','7','contribution_recurring_billing',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(828,87,'Contributions - Recurring Updates','8','contribution_recurring_edit',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(829,87,'Personal Campaign Pages - Admin Notification','9','pcp_notify',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(830,87,'Personal Campaign Pages - Supporter Status Change Notification','10','pcp_status_change',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(831,87,'Personal Campaign Pages - Supporter Welcome','11','pcp_supporter_notify',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(832,87,'Personal Campaign Pages - Owner Notification','12','pcp_owner_notify',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(833,87,'Additional Payment Receipt or Refund Notification','13','payment_or_refund_notification',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(834,88,'Events - Registration Confirmation and Receipt (off-line)','1','event_offline_receipt',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(835,88,'Events - Registration Confirmation and Receipt (on-line)','2','event_online_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(836,88,'Events - Receipt only','3','event_registration_receipt',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(837,88,'Events - Registration Cancellation Notice','4','participant_cancelled',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(838,88,'Events - Registration Confirmation Invite','5','participant_confirm',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(839,88,'Events - Pending Registration Expiration Notice','6','participant_expired',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(840,88,'Events - Registration Transferred Notice','7','participant_transferred',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(841,89,'Tell-a-Friend Email','1','friend',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(842,90,'Memberships - Signup and Renewal Receipts (off-line)','1','membership_offline_receipt',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(843,90,'Memberships - Receipt (on-line)','2','membership_online_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(844,90,'Memberships - Auto-renew Cancellation Notification','3','membership_autorenew_cancelled',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(845,90,'Memberships - Auto-renew Billing Updates','4','membership_autorenew_billing',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(846,91,'Test-drive - Receipt Header','1','test_preview',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(847,92,'Pledges - Acknowledgement','1','pledge_acknowledge',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(848,92,'Pledges - Payment Reminder','2','pledge_reminder',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(849,93,'Profiles - Admin Notification','1','uf_notify',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(850,94,'Petition - signature added','1','petition_sign',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(851,94,'Petition - need verification','2','petition_confirmation_needed',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(852,95,'In Honor of','1','in_honor_of',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(853,95,'In Memory of','2','in_memory_of',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(854,95,'Solicited','3','solicited',NULL,0,1,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(855,95,'Household','4','household',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(856,95,'Workplace Giving','5','workplace',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(857,95,'Foundation Affiliate','6','foundation_affiliate',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(858,95,'3rd-party Service','7','3rd-party_service',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(859,95,'Donor-advised Fund','8','donor-advised_fund',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(860,95,'Matched Gift','9','matched_gift',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),(861,95,'Personal Campaign Page','10','pcp',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(862,95,'Gift','11','gift',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),(863,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); /*!40000 ALTER TABLE `civicrm_option_value` ENABLE KEYS */; UNLOCK TABLES; @@ -1026,7 +1026,7 @@ 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`) VALUES (1,134,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(2,57,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(3,59,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),(4,76,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(5,113,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(6,177,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),(7,70,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(8,171,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(9,152,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),(10,124,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(11,1,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(12,23,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),(13,139,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(14,198,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(15,20,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),(16,119,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(17,159,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(18,110,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),(19,154,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(20,180,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(21,161,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),(22,183,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(23,51,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(24,146,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),(25,74,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),(26,30,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(27,52,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(28,4,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),(29,173,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(30,27,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(31,118,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),(32,3,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(33,83,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(34,151,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),(35,188,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(36,75,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(37,61,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),(38,197,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(39,121,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',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),(41,162,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(42,68,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(43,7,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),(44,12,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(45,11,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(46,199,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),(47,141,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(48,164,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(49,142,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),(50,33,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); +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`) VALUES (1,140,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',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),(3,95,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),(4,103,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(5,73,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(6,155,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),(7,170,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(8,56,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(9,68,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),(10,172,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(11,133,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(12,31,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),(13,57,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(14,111,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(15,8,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),(16,109,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(17,195,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(18,162,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),(19,5,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(20,94,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(21,41,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),(22,54,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(23,102,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(24,24,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),(25,180,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),(26,21,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(27,19,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(28,175,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),(29,30,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(30,114,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(31,6,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),(32,44,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(33,129,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(34,60,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),(35,165,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(36,120,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(37,49,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),(38,23,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(39,18,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(40,200,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),(41,99,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(42,196,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(43,130,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),(44,90,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(45,98,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(46,70,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),(47,194,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(48,105,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(49,110,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),(50,106,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); /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */; UNLOCK TABLES; @@ -1036,7 +1036,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant_payment` WRITE; /*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */; -INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES (1,11,45),(2,32,46),(3,28,47),(4,43,48),(5,45,49),(6,44,50),(7,40,51),(8,15,52),(9,12,53),(10,30,54),(11,26,55),(12,50,56),(13,23,57),(14,27,58),(15,2,59),(16,3,60),(17,37,61),(18,42,62),(19,7,63),(20,25,64),(21,36,65),(22,4,66),(23,33,67),(24,18,68),(25,5,69),(26,31,70),(27,16,71),(28,39,72),(29,10,73),(30,1,74),(31,13,75),(32,47,76),(33,49,77),(34,24,78),(35,34,79),(36,9,80),(37,19,81),(38,17,82),(39,21,83),(40,41,84),(41,48,85),(42,8,86),(43,29,87),(44,6,88),(45,20,89),(46,22,90),(47,35,91),(48,38,92),(49,14,93),(50,46,94); +INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES (1,19,45),(2,31,46),(3,15,47),(4,39,48),(5,27,49),(6,26,50),(7,38,51),(8,24,52),(9,29,53),(10,12,54),(11,21,55),(12,32,56),(13,37,57),(14,22,58),(15,8,59),(16,13,60),(17,34,61),(18,9,62),(19,46,63),(20,5,64),(21,44,65),(22,20,66),(23,3,67),(24,45,68),(25,41,69),(26,23,70),(27,4,71),(28,48,72),(29,50,73),(30,16,74),(31,49,75),(32,14,76),(33,30,77),(34,36,78),(35,33,79),(36,43,80),(37,11,81),(38,1,82),(39,6,83),(40,18,84),(41,35,85),(42,2,86),(43,7,87),(44,10,88),(45,28,89),(46,25,90),(47,47,91),(48,17,92),(49,42,93),(50,40,94); /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -1065,7 +1065,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_payment_processor_type` WRITE; /*!40000 ALTER TABLE `civicrm_payment_processor_type` DISABLE KEYS */; -INSERT INTO `civicrm_payment_processor_type` (`id`, `name`, `title`, `description`, `is_active`, `is_default`, `user_name_label`, `password_label`, `signature_label`, `subject_label`, `class_name`, `url_site_default`, `url_api_default`, `url_recur_default`, `url_button_default`, `url_site_test_default`, `url_api_test_default`, `url_recur_test_default`, `url_button_test_default`, `billing_mode`, `is_recur`, `payment_type`, `payment_instrument_id`) VALUES (1,'PayPal_Standard','PayPal - Website Payments Standard',NULL,1,0,'Merchant Account Email',NULL,NULL,NULL,'Payment_PayPalImpl','https://www.paypal.com/',NULL,'https://www.paypal.com/',NULL,'https://www.sandbox.paypal.com/',NULL,'https://www.sandbox.paypal.com/',NULL,4,1,1,1),(2,'PayPal','PayPal - Website Payments Pro',NULL,1,0,'User Name','Password','Signature',NULL,'Payment_PayPalImpl','https://www.paypal.com/','https://api-3t.paypal.com/','https://www.paypal.com/','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif','https://www.sandbox.paypal.com/','https://api-3t.sandbox.paypal.com/','https://www.sandbox.paypal.com/','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif',3,1,1,1),(3,'PayPal_Express','PayPal - Express',NULL,1,0,'User Name','Password','Signature',NULL,'Payment_PayPalImpl','https://www.paypal.com/','https://api-3t.paypal.com/',NULL,'https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif','https://www.sandbox.paypal.com/','https://api-3t.sandbox.paypal.com/',NULL,'https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif',2,1,1,1),(4,'AuthNet','Authorize.Net',NULL,1,0,'API Login','Payment Key','MD5 Hash',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1,1,1),(5,'PayJunction','PayJunction',NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1,1,1),(6,'eWAY','eWAY (Single Currency)',NULL,0,0,'Customer ID',NULL,NULL,NULL,'Payment_eWAY','https://www.eway.com.au/gateway_cvn/xmlpayment.asp',NULL,NULL,NULL,'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp',NULL,NULL,NULL,1,0,1,1),(7,'Payment_Express','DPS Payment Express',NULL,0,0,'User ID','Key','Mac Key - pxaccess only',NULL,'Payment_PaymentExpress','https://www.paymentexpress.com/pleaseenteraurl',NULL,NULL,NULL,'https://www.paymentexpress.com/pleaseenteratesturl',NULL,NULL,NULL,4,0,1,1),(8,'Dummy','Dummy Payment Processor',NULL,1,1,'User Name',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,1),(9,'Elavon','Elavon Payment Processor','Elavon / Nova Virtual Merchant',0,0,'SSL Merchant ID ','SSL User ID','SSL PIN',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0,1,1),(10,'Realex','Realex Payment',NULL,0,0,'Merchant ID','Password',NULL,'Account','Payment_Realex','https://epage.payandshop.com/epage.cgi',NULL,NULL,NULL,'https://epage.payandshop.com/epage-remote.cgi',NULL,NULL,NULL,1,0,1,1),(11,'PayflowPro','PayflowPro',NULL,0,0,'Vendor ID','Password','Partner (merchant)','User','Payment_PayflowPro','https://Payflowpro.paypal.com',NULL,NULL,NULL,'https://pilot-Payflowpro.paypal.com',NULL,NULL,NULL,1,0,1,1),(12,'FirstData','FirstData (aka linkpoint)','FirstData (aka linkpoint)',0,0,'Store name','certificate path',NULL,NULL,'Payment_FirstData','https://secure.linkpt.net',NULL,NULL,NULL,'https://staging.linkpt.net',NULL,NULL,NULL,1,NULL,1,1); +INSERT INTO `civicrm_payment_processor_type` (`id`, `name`, `title`, `description`, `is_active`, `is_default`, `user_name_label`, `password_label`, `signature_label`, `subject_label`, `class_name`, `url_site_default`, `url_api_default`, `url_recur_default`, `url_button_default`, `url_site_test_default`, `url_api_test_default`, `url_recur_test_default`, `url_button_test_default`, `billing_mode`, `is_recur`, `payment_type`, `payment_instrument_id`) VALUES (1,'PayPal_Standard','PayPal - Website Payments Standard',NULL,1,0,'Merchant Account Email',NULL,NULL,NULL,'Payment_PayPalImpl','https://www.paypal.com/',NULL,'https://www.paypal.com/',NULL,'https://www.sandbox.paypal.com/',NULL,'https://www.sandbox.paypal.com/',NULL,4,1,1,1),(2,'PayPal','PayPal - Website Payments Pro',NULL,1,0,'User Name','Password','Signature',NULL,'Payment_PayPalImpl','https://www.paypal.com/','https://api-3t.paypal.com/','https://www.paypal.com/','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif','https://www.sandbox.paypal.com/','https://api-3t.sandbox.paypal.com/','https://www.sandbox.paypal.com/','https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif',3,1,1,1),(3,'PayPal_Express','PayPal - Express',NULL,1,0,'User Name','Password','Signature',NULL,'Payment_PayPalImpl','https://www.paypal.com/','https://api-3t.paypal.com/',NULL,'https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif','https://www.sandbox.paypal.com/','https://api-3t.sandbox.paypal.com/',NULL,'https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif',2,1,1,1),(4,'AuthNet','Authorize.Net',NULL,1,0,'API Login','Payment Key','MD5 Hash',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1,1,1),(5,'PayJunction','PayJunction',NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1,1,1),(6,'eWAY','eWAY (Single Currency)',NULL,0,0,'Customer ID',NULL,NULL,NULL,'Payment_eWAY','https://www.eway.com.au/gateway_cvn/xmlpayment.asp',NULL,NULL,NULL,'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp',NULL,NULL,NULL,1,0,1,1),(7,'Dummy','Dummy Payment Processor',NULL,1,1,'User Name',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,1),(8,'Elavon','Elavon Payment Processor','Elavon / Nova Virtual Merchant',0,0,'SSL Merchant ID ','SSL User ID','SSL PIN',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0,1,1),(9,'Realex','Realex Payment',NULL,0,0,'Merchant ID','Password',NULL,'Account','Payment_Realex','https://epage.payandshop.com/epage.cgi',NULL,NULL,NULL,'https://epage.payandshop.com/epage-remote.cgi',NULL,NULL,NULL,1,0,1,1),(10,'PayflowPro','PayflowPro',NULL,0,0,'Vendor ID','Password','Partner (merchant)','User','Payment_PayflowPro','https://Payflowpro.paypal.com',NULL,NULL,NULL,'https://pilot-Payflowpro.paypal.com',NULL,NULL,NULL,1,0,1,1),(11,'FirstData','FirstData (aka linkpoint)','FirstData (aka linkpoint)',0,0,'Store name','certificate path',NULL,NULL,'Payment_FirstData','https://secure.linkpt.net',NULL,NULL,NULL,'https://staging.linkpt.net',NULL,NULL,NULL,1,NULL,1,1); /*!40000 ALTER TABLE `civicrm_payment_processor_type` ENABLE KEYS */; UNLOCK TABLES; @@ -1084,7 +1084,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,177,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); +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,57,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; @@ -1104,7 +1104,7 @@ 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,50,1,1,0,NULL,'305-3316',NULL,'3053316',2),(2,50,1,0,0,NULL,'(454) 624-9474',NULL,'4546249474',2),(3,177,1,1,0,NULL,'(362) 578-7116',NULL,'3625787116',1),(4,177,1,0,0,NULL,'422-6088',NULL,'4226088',1),(5,110,1,1,0,NULL,'(316) 717-9504',NULL,'3167179504',1),(6,97,1,1,0,NULL,'322-2980',NULL,'3222980',2),(7,56,1,1,0,NULL,'(498) 465-7043',NULL,'4984657043',2),(8,75,1,1,0,NULL,'681-1655',NULL,'6811655',1),(9,75,1,0,0,NULL,'297-5311',NULL,'2975311',1),(10,172,1,1,0,NULL,'613-8335',NULL,'6138335',2),(11,172,1,0,0,NULL,'877-1400',NULL,'8771400',2),(12,37,1,1,0,NULL,'450-5259',NULL,'4505259',1),(13,37,1,0,0,NULL,'875-2439',NULL,'8752439',1),(14,175,1,1,0,NULL,'(767) 739-1850',NULL,'7677391850',1),(15,175,1,0,0,NULL,'(648) 530-4866',NULL,'6485304866',1),(16,115,1,1,0,NULL,'597-6703',NULL,'5976703',1),(17,115,1,0,0,NULL,'453-6667',NULL,'4536667',2),(18,198,1,1,0,NULL,'(418) 520-9692',NULL,'4185209692',1),(19,53,1,1,0,NULL,'202-6113',NULL,'2026113',2),(20,18,1,1,0,NULL,'(784) 548-4483',NULL,'7845484483',2),(21,18,1,0,0,NULL,'665-4476',NULL,'6654476',2),(22,27,1,1,0,NULL,'(322) 288-9017',NULL,'3222889017',1),(23,27,1,0,0,NULL,'611-2082',NULL,'6112082',2),(24,44,1,1,0,NULL,'642-6320',NULL,'6426320',2),(25,121,1,1,0,NULL,'(551) 657-9639',NULL,'5516579639',1),(26,121,1,0,0,NULL,'(360) 876-7107',NULL,'3608767107',1),(27,47,1,1,0,NULL,'(600) 860-9782',NULL,'6008609782',1),(28,34,1,1,0,NULL,'615-7064',NULL,'6157064',2),(29,34,1,0,0,NULL,'(539) 304-2310',NULL,'5393042310',1),(30,85,1,1,0,NULL,'570-9522',NULL,'5709522',2),(31,85,1,0,0,NULL,'(544) 666-4455',NULL,'5446664455',2),(32,66,1,1,0,NULL,'601-8744',NULL,'6018744',1),(33,66,1,0,0,NULL,'324-6344',NULL,'3246344',2),(34,157,1,1,0,NULL,'481-2758',NULL,'4812758',1),(35,119,1,1,0,NULL,'(894) 517-8754',NULL,'8945178754',2),(36,10,1,1,0,NULL,'(353) 364-7675',NULL,'3533647675',1),(37,10,1,0,0,NULL,'353-4496',NULL,'3534496',2),(38,194,1,1,0,NULL,'636-8863',NULL,'6368863',2),(39,194,1,0,0,NULL,'(486) 294-5858',NULL,'4862945858',1),(40,142,1,1,0,NULL,'(540) 681-3975',NULL,'5406813975',1),(41,61,1,1,0,NULL,'310-2639',NULL,'3102639',1),(42,164,1,1,0,NULL,'(298) 402-2307',NULL,'2984022307',1),(43,41,1,1,0,NULL,'(607) 554-4804',NULL,'6075544804',1),(44,41,1,0,0,NULL,'(736) 463-2556',NULL,'7364632556',2),(45,116,1,1,0,NULL,'(360) 203-8830',NULL,'3602038830',2),(46,116,1,0,0,NULL,'488-9541',NULL,'4889541',1),(47,188,1,1,0,NULL,'547-3970',NULL,'5473970',1),(48,188,1,0,0,NULL,'456-5806',NULL,'4565806',1),(49,16,1,1,0,NULL,'(443) 847-8214',NULL,'4438478214',2),(50,16,1,0,0,NULL,'(228) 278-1640',NULL,'2282781640',1),(51,118,1,1,0,NULL,'668-5760',NULL,'6685760',1),(52,103,1,1,0,NULL,'227-3072',NULL,'2273072',1),(53,103,1,0,0,NULL,'(884) 379-1124',NULL,'8843791124',2),(54,143,1,1,0,NULL,'(700) 237-1525',NULL,'7002371525',1),(55,143,1,0,0,NULL,'554-9948',NULL,'5549948',2),(56,149,1,1,0,NULL,'(845) 446-1134',NULL,'8454461134',2),(57,149,1,0,0,NULL,'845-3918',NULL,'8453918',2),(58,24,1,1,0,NULL,'(577) 825-3615',NULL,'5778253615',1),(59,24,1,0,0,NULL,'539-8740',NULL,'5398740',2),(60,7,1,1,0,NULL,'343-9667',NULL,'3439667',1),(61,145,1,1,0,NULL,'841-3230',NULL,'8413230',1),(62,145,1,0,0,NULL,'515-7549',NULL,'5157549',2),(63,20,1,1,0,NULL,'623-7946',NULL,'6237946',2),(64,112,1,1,0,NULL,'225-6309',NULL,'2256309',1),(65,69,1,1,0,NULL,'223-1980',NULL,'2231980',2),(66,137,1,1,0,NULL,'530-6553',NULL,'5306553',2),(67,12,1,1,0,NULL,'(657) 850-4185',NULL,'6578504185',2),(68,12,1,0,0,NULL,'(463) 664-4121',NULL,'4636644121',2),(69,129,1,1,0,NULL,'807-9775',NULL,'8079775',2),(70,129,1,0,0,NULL,'770-3380',NULL,'7703380',2),(71,81,1,1,0,NULL,'800-2902',NULL,'8002902',2),(72,81,1,0,0,NULL,'(619) 445-9996',NULL,'6194459996',2),(73,30,1,1,0,NULL,'537-9409',NULL,'5379409',2),(74,78,1,1,0,NULL,'(764) 210-7528',NULL,'7642107528',2),(75,117,1,1,0,NULL,'554-7125',NULL,'5547125',2),(76,86,1,1,0,NULL,'(354) 519-9785',NULL,'3545199785',1),(77,196,1,1,0,NULL,'(728) 634-9991',NULL,'7286349991',1),(78,162,1,1,0,NULL,'299-6586',NULL,'2996586',1),(79,162,1,0,0,NULL,'223-8858',NULL,'2238858',1),(80,84,1,1,0,NULL,'(358) 628-7157',NULL,'3586287157',1),(81,13,1,1,0,NULL,'402-4916',NULL,'4024916',1),(82,180,1,1,0,NULL,'235-7892',NULL,'2357892',2),(83,180,1,0,0,NULL,'(569) 576-6938',NULL,'5695766938',2),(84,132,1,1,0,NULL,'264-5696',NULL,'2645696',2),(85,132,1,0,0,NULL,'(642) 874-3824',NULL,'6428743824',1),(86,109,1,1,0,NULL,'(360) 710-9845',NULL,'3607109845',1),(87,11,1,1,0,NULL,'232-9188',NULL,'2329188',1),(88,11,1,0,0,NULL,'490-4431',NULL,'4904431',2),(89,45,1,1,0,NULL,'(253) 293-5624',NULL,'2532935624',2),(90,45,1,0,0,NULL,'(749) 269-6171',NULL,'7492696171',2),(91,67,1,1,0,NULL,'(203) 511-8494',NULL,'2035118494',1),(92,67,1,0,0,NULL,'853-5016',NULL,'8535016',2),(93,6,1,1,0,NULL,'463-7805',NULL,'4637805',1),(94,6,1,0,0,NULL,'(206) 414-1901',NULL,'2064141901',1),(95,168,1,1,0,NULL,'787-6333',NULL,'7876333',2),(96,200,1,1,0,NULL,'(285) 820-6572',NULL,'2858206572',2),(97,124,1,1,0,NULL,'(330) 379-1414',NULL,'3303791414',2),(98,125,1,1,0,NULL,'491-4701',NULL,'4914701',1),(99,98,1,1,0,NULL,'276-6700',NULL,'2766700',2),(100,166,1,1,0,NULL,'(316) 319-8026',NULL,'3163198026',2),(101,166,1,0,0,NULL,'604-4282',NULL,'6044282',1),(102,19,1,1,0,NULL,'(714) 784-2050',NULL,'7147842050',2),(103,19,1,0,0,NULL,'(638) 778-8461',NULL,'6387788461',2),(104,163,1,1,0,NULL,'505-4418',NULL,'5054418',2),(105,83,1,1,0,NULL,'622-7211',NULL,'6227211',1),(106,83,1,0,0,NULL,'765-7929',NULL,'7657929',2),(107,189,1,1,0,NULL,'(699) 586-7204',NULL,'6995867204',2),(108,151,1,1,0,NULL,'398-1869',NULL,'3981869',1),(109,151,1,0,0,NULL,'816-2055',NULL,'8162055',1),(110,77,1,1,0,NULL,'(295) 673-4854',NULL,'2956734854',2),(111,176,1,1,0,NULL,'(406) 613-1410',NULL,'4066131410',1),(112,140,1,1,0,NULL,'(536) 824-3077',NULL,'5368243077',1),(113,140,1,0,0,NULL,'248-4676',NULL,'2484676',1),(114,150,1,1,0,NULL,'(676) 362-3906',NULL,'6763623906',1),(115,150,1,0,0,NULL,'(211) 414-5184',NULL,'2114145184',1),(116,174,1,1,0,NULL,'556-8340',NULL,'5568340',1),(117,73,1,1,0,NULL,'(297) 341-4134',NULL,'2973414134',2),(118,58,1,1,0,NULL,'(788) 692-1707',NULL,'7886921707',1),(119,58,1,0,0,NULL,'760-9748',NULL,'7609748',1),(120,8,1,1,0,NULL,'(730) 482-1283',NULL,'7304821283',2),(121,107,1,1,0,NULL,'663-5760',NULL,'6635760',2),(122,173,1,1,0,NULL,'220-5472',NULL,'2205472',2),(123,59,1,1,0,NULL,'(206) 892-7746',NULL,'2068927746',2),(124,5,1,1,0,NULL,'(344) 493-1760',NULL,'3444931760',2),(125,5,1,0,0,NULL,'597-5896',NULL,'5975896',1),(126,201,1,1,0,NULL,'367-9832',NULL,'3679832',2),(127,201,1,0,0,NULL,'630-6571',NULL,'6306571',2),(128,126,1,1,0,NULL,'(889) 862-9075',NULL,'8898629075',2),(129,96,1,1,0,NULL,'(274) 548-5083',NULL,'2745485083',2),(130,96,1,0,0,NULL,'(742) 299-5522',NULL,'7422995522',2),(131,141,1,1,0,NULL,'(665) 595-4111',NULL,'6655954111',2),(132,141,1,0,0,NULL,'(694) 354-1214',NULL,'6943541214',1),(133,94,1,1,0,NULL,'(724) 717-5992',NULL,'7247175992',2),(134,94,1,0,0,NULL,'(480) 525-6131',NULL,'4805256131',2),(135,153,1,1,0,NULL,'365-1641',NULL,'3651641',2),(136,191,1,1,0,NULL,'(834) 357-4554',NULL,'8343574554',1),(137,191,1,0,0,NULL,'340-2246',NULL,'3402246',1),(138,32,1,1,0,NULL,'247-6126',NULL,'2476126',2),(139,169,1,1,0,NULL,'508-9530',NULL,'5089530',1),(140,169,1,0,0,NULL,'270-2187',NULL,'2702187',2),(141,133,1,1,0,NULL,'784-7803',NULL,'7847803',1),(142,133,1,0,0,NULL,'(753) 411-8302',NULL,'7534118302',2),(143,184,1,1,0,NULL,'664-7649',NULL,'6647649',2),(144,130,1,1,0,NULL,'643-3945',NULL,'6433945',2),(145,130,1,0,0,NULL,'(436) 446-5599',NULL,'4364465599',1),(146,170,1,1,0,NULL,'763-8218',NULL,'7638218',1),(147,170,1,0,0,NULL,'(251) 898-7794',NULL,'2518987794',2),(148,154,1,1,0,NULL,'(681) 776-7426',NULL,'6817767426',2),(149,154,1,0,0,NULL,'721-5091',NULL,'7215091',2),(150,160,1,1,0,NULL,'(321) 545-9727',NULL,'3215459727',2),(151,160,1,0,0,NULL,'(278) 571-3422',NULL,'2785713422',1),(152,100,1,1,0,NULL,'(436) 832-2265',NULL,'4368322265',1),(153,100,1,0,0,NULL,'(368) 422-1857',NULL,'3684221857',2),(154,72,1,1,0,NULL,'(314) 791-4783',NULL,'3147914783',2),(155,72,1,0,0,NULL,'(793) 318-2359',NULL,'7933182359',1),(156,70,1,1,0,NULL,'697-3705',NULL,'6973705',1),(157,195,1,1,0,NULL,'(884) 369-8149',NULL,'8843698149',2),(158,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),(159,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),(160,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); +INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES (1,24,1,1,0,NULL,'274-9635',NULL,'2749635',2),(2,17,1,1,0,NULL,'(229) 879-2778',NULL,'2298792778',1),(3,17,1,0,0,NULL,'799-7889',NULL,'7997889',2),(4,182,1,1,0,NULL,'(244) 685-2219',NULL,'2446852219',1),(5,182,1,0,0,NULL,'(865) 344-9781',NULL,'8653449781',2),(6,138,1,1,0,NULL,'402-4943',NULL,'4024943',2),(7,53,1,1,0,NULL,'204-2790',NULL,'2042790',2),(8,53,1,0,0,NULL,'766-4872',NULL,'7664872',2),(9,15,1,1,0,NULL,'(668) 853-1518',NULL,'6688531518',2),(10,83,1,1,0,NULL,'241-1379',NULL,'2411379',1),(11,120,1,1,0,NULL,'397-9037',NULL,'3979037',1),(12,120,1,0,0,NULL,'730-9455',NULL,'7309455',1),(13,193,1,1,0,NULL,'(676) 251-4852',NULL,'6762514852',2),(14,162,1,1,0,NULL,'521-3006',NULL,'5213006',2),(15,66,1,1,0,NULL,'530-6693',NULL,'5306693',2),(16,66,1,0,0,NULL,'731-4325',NULL,'7314325',1),(17,92,1,1,0,NULL,'(220) 590-9485',NULL,'2205909485',1),(18,92,1,0,0,NULL,'(203) 368-1646',NULL,'2033681646',1),(19,167,1,1,0,NULL,'(750) 209-2869',NULL,'7502092869',2),(20,167,1,0,0,NULL,'890-9055',NULL,'8909055',2),(21,190,1,1,0,NULL,'(652) 629-9114',NULL,'6526299114',1),(22,190,1,0,0,NULL,'(293) 584-8018',NULL,'2935848018',1),(23,184,1,1,0,NULL,'437-1558',NULL,'4371558',2),(24,67,1,1,0,NULL,'(424) 686-1017',NULL,'4246861017',1),(25,67,1,0,0,NULL,'716-5913',NULL,'7165913',1),(26,183,1,1,0,NULL,'(423) 421-9523',NULL,'4234219523',2),(27,175,1,1,0,NULL,'880-2156',NULL,'8802156',2),(28,129,1,1,0,NULL,'(488) 267-9425',NULL,'4882679425',1),(29,129,1,0,0,NULL,'859-5831',NULL,'8595831',2),(30,197,1,1,0,NULL,'(454) 513-8343',NULL,'4545138343',2),(31,197,1,0,0,NULL,'(553) 619-5071',NULL,'5536195071',2),(32,122,1,1,0,NULL,'718-4550',NULL,'7184550',1),(33,122,1,0,0,NULL,'289-9260',NULL,'2899260',1),(34,7,1,1,0,NULL,'(206) 479-5991',NULL,'2064795991',2),(35,7,1,0,0,NULL,'285-4636',NULL,'2854636',1),(36,154,1,1,0,NULL,'430-8301',NULL,'4308301',1),(37,154,1,0,0,NULL,'(435) 851-5287',NULL,'4358515287',2),(38,51,1,1,0,NULL,'304-7100',NULL,'3047100',2),(39,51,1,0,0,NULL,'238-5124',NULL,'2385124',2),(40,97,1,1,0,NULL,'(814) 212-3197',NULL,'8142123197',1),(41,111,1,1,0,NULL,'756-3086',NULL,'7563086',2),(42,111,1,0,0,NULL,'365-2538',NULL,'3652538',2),(43,143,1,1,0,NULL,'816-4755',NULL,'8164755',2),(44,77,1,1,0,NULL,'(235) 641-2496',NULL,'2356412496',1),(45,77,1,0,0,NULL,'713-4703',NULL,'7134703',1),(46,186,1,1,0,NULL,'474-5007',NULL,'4745007',2),(47,12,1,1,0,NULL,'617-7751',NULL,'6177751',1),(48,8,1,1,0,NULL,'(537) 372-7316',NULL,'5373727316',2),(49,84,1,1,0,NULL,'792-7270',NULL,'7927270',2),(50,84,1,0,0,NULL,'(801) 234-1538',NULL,'8012341538',2),(51,71,1,1,0,NULL,'392-6885',NULL,'3926885',2),(52,71,1,0,0,NULL,'288-3964',NULL,'2883964',2),(53,119,1,1,0,NULL,'446-4383',NULL,'4464383',2),(54,119,1,0,0,NULL,'(596) 657-2384',NULL,'5966572384',2),(55,161,1,1,0,NULL,'635-8492',NULL,'6358492',2),(56,60,1,1,0,NULL,'(691) 530-1922',NULL,'6915301922',1),(57,31,1,1,0,NULL,'(283) 732-1513',NULL,'2837321513',2),(58,55,1,1,0,NULL,'657-5967',NULL,'6575967',1),(59,55,1,0,0,NULL,'272-6026',NULL,'2726026',1),(60,64,1,1,0,NULL,'673-2317',NULL,'6732317',2),(61,64,1,0,0,NULL,'534-1878',NULL,'5341878',2),(62,41,1,1,0,NULL,'460-9430',NULL,'4609430',2),(63,30,1,1,0,NULL,'306-2031',NULL,'3062031',2),(64,2,1,1,0,NULL,'612-2909',NULL,'6122909',1),(65,2,1,0,0,NULL,'(737) 473-7543',NULL,'7374737543',2),(66,118,1,1,0,NULL,'755-9391',NULL,'7559391',1),(67,87,1,1,0,NULL,'(463) 596-6006',NULL,'4635966006',2),(68,87,1,0,0,NULL,'560-2341',NULL,'5602341',1),(69,23,1,1,0,NULL,'(408) 243-9215',NULL,'4082439215',1),(70,5,1,1,0,NULL,'(467) 735-2801',NULL,'4677352801',1),(71,5,1,0,0,NULL,'(585) 618-1985',NULL,'5856181985',2),(72,93,1,1,0,NULL,'774-6122',NULL,'7746122',2),(73,18,1,1,0,NULL,'(859) 599-7380',NULL,'8595997380',1),(74,176,1,1,0,NULL,'(352) 842-5208',NULL,'3528425208',2),(75,80,1,1,0,NULL,'(664) 231-4436',NULL,'6642314436',1),(76,80,1,0,0,NULL,'(274) 257-4985',NULL,'2742574985',1),(77,44,1,1,0,NULL,'881-5788',NULL,'8815788',2),(78,44,1,0,0,NULL,'(866) 667-8364',NULL,'8666678364',1),(79,52,1,1,0,NULL,'(611) 572-3049',NULL,'6115723049',2),(80,165,1,1,0,NULL,'228-4756',NULL,'2284756',1),(81,127,1,1,0,NULL,'555-6328',NULL,'5556328',1),(82,127,1,0,0,NULL,'(327) 478-4987',NULL,'3274784987',1),(83,172,1,1,0,NULL,'(487) 597-4192',NULL,'4875974192',2),(84,172,1,0,0,NULL,'372-7179',NULL,'3727179',1),(85,125,1,1,0,NULL,'216-1481',NULL,'2161481',1),(86,74,1,1,0,NULL,'(492) 296-6332',NULL,'4922966332',1),(87,74,1,0,0,NULL,'287-8009',NULL,'2878009',2),(88,47,1,1,0,NULL,'(425) 785-7087',NULL,'4257857087',2),(89,159,1,1,0,NULL,'(368) 300-4630',NULL,'3683004630',1),(90,102,1,1,0,NULL,'(443) 534-9192',NULL,'4435349192',1),(91,149,1,1,0,NULL,'(802) 411-1496',NULL,'8024111496',1),(92,192,1,1,0,NULL,'(297) 209-2106',NULL,'2972092106',2),(93,192,1,0,0,NULL,'(705) 606-6556',NULL,'7056066556',1),(94,134,1,1,0,NULL,'(632) 400-9500',NULL,'6324009500',1),(95,134,1,0,0,NULL,'(328) 557-6995',NULL,'3285576995',2),(96,100,1,1,0,NULL,'(629) 623-5518',NULL,'6296235518',2),(97,100,1,0,0,NULL,'(787) 824-4620',NULL,'7878244620',2),(98,34,1,1,0,NULL,'(576) 532-4124',NULL,'5765324124',1),(99,113,1,1,0,NULL,'208-4699',NULL,'2084699',1),(100,110,1,1,0,NULL,'(766) 397-6252',NULL,'7663976252',2),(101,110,1,0,0,NULL,'663-2594',NULL,'6632594',2),(102,191,1,1,0,NULL,'(711) 752-3110',NULL,'7117523110',2),(103,191,1,0,0,NULL,'455-8038',NULL,'4558038',2),(104,151,1,1,0,NULL,'496-3771',NULL,'4963771',1),(105,82,1,1,0,NULL,'(281) 214-6022',NULL,'2812146022',1),(106,82,1,0,0,NULL,'(652) 390-7860',NULL,'6523907860',2),(107,196,1,1,0,NULL,'533-5816',NULL,'5335816',1),(108,94,1,1,0,NULL,'(749) 574-5597',NULL,'7495745597',2),(109,188,1,1,0,NULL,'529-8632',NULL,'5298632',2),(110,195,1,1,0,NULL,'(395) 227-9037',NULL,'3952279037',1),(111,28,1,1,0,NULL,'718-8866',NULL,'7188866',2),(112,28,1,0,0,NULL,'814-1318',NULL,'8141318',2),(113,141,1,1,0,NULL,'(783) 818-5891',NULL,'7838185891',2),(114,141,1,0,0,NULL,'898-2730',NULL,'8982730',1),(115,112,1,1,0,NULL,'(558) 458-8429',NULL,'5584588429',2),(116,112,1,0,0,NULL,'(308) 797-1765',NULL,'3087971765',1),(117,152,1,1,0,NULL,'(373) 427-1144',NULL,'3734271144',2),(118,61,1,1,0,NULL,'374-7266',NULL,'3747266',2),(119,108,1,1,0,NULL,'661-5380',NULL,'6615380',1),(120,108,1,0,0,NULL,'(647) 666-4232',NULL,'6476664232',1),(121,54,1,1,0,NULL,'445-1977',NULL,'4451977',2),(122,54,1,0,0,NULL,'405-2942',NULL,'4052942',1),(123,155,1,1,0,NULL,'784-9465',NULL,'7849465',1),(124,103,1,1,0,NULL,'265-9328',NULL,'2659328',2),(125,63,1,1,0,NULL,'(735) 686-1024',NULL,'7356861024',1),(126,63,1,0,0,NULL,'(679) 205-2507',NULL,'6792052507',2),(127,68,1,1,0,NULL,'(214) 665-4847',NULL,'2146654847',1),(128,68,1,0,0,NULL,'256-3774',NULL,'2563774',1),(129,70,1,1,0,NULL,'429-1869',NULL,'4291869',1),(130,70,1,0,0,NULL,'219-2851',NULL,'2192851',1),(131,10,1,1,0,NULL,'716-2365',NULL,'7162365',1),(132,130,1,1,0,NULL,'600-7888',NULL,'6007888',2),(133,140,1,1,0,NULL,'267-9456',NULL,'2679456',1),(134,58,1,1,0,NULL,'(255) 537-6804',NULL,'2555376804',2),(135,58,1,0,0,NULL,'785-9517',NULL,'7859517',2),(136,48,1,1,0,NULL,'(369) 720-9933',NULL,'3697209933',1),(137,135,1,1,0,NULL,'577-3243',NULL,'5773243',2),(138,43,1,1,0,NULL,'(561) 878-3542',NULL,'5618783542',2),(139,20,1,1,0,NULL,'(240) 599-5126',NULL,'2405995126',2),(140,13,1,1,0,NULL,'(896) 730-2208',NULL,'8967302208',2),(141,13,1,0,0,NULL,'891-6610',NULL,'8916610',1),(142,194,1,1,0,NULL,'(582) 263-1870',NULL,'5822631870',2),(143,131,1,1,0,NULL,'209-4992',NULL,'2094992',2),(144,131,1,0,0,NULL,'(357) 393-9592',NULL,'3573939592',2),(145,75,1,1,0,NULL,'297-3631',NULL,'2973631',1),(146,75,1,0,0,NULL,'(735) 516-9375',NULL,'7355169375',1),(147,104,1,1,0,NULL,'(202) 624-1843',NULL,'2026241843',2),(148,153,1,1,0,NULL,'577-2814',NULL,'5772814',2),(149,153,1,0,0,NULL,'(672) 816-3429',NULL,'6728163429',2),(150,39,1,1,0,NULL,'(413) 541-3220',NULL,'4135413220',1),(151,189,1,1,0,NULL,'(562) 845-6038',NULL,'5628456038',2),(152,36,1,1,0,NULL,'359-6033',NULL,'3596033',1),(153,36,1,0,0,NULL,'(574) 836-8694',NULL,'5748368694',1),(154,171,1,1,0,NULL,'(631) 326-9216',NULL,'6313269216',2),(155,25,1,1,0,NULL,'(632) 417-4898',NULL,'6324174898',1),(156,180,1,1,0,NULL,'699-9692',NULL,'6999692',2),(157,158,1,1,0,NULL,'258-5034',NULL,'2585034',1),(158,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),(159,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),(160,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */; UNLOCK TABLES; @@ -1261,10 +1261,20 @@ 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`) VALUES (1,84,162,1,NULL,NULL,1,NULL,0,0,NULL),(2,13,162,1,NULL,NULL,1,NULL,0,0,NULL),(3,84,3,1,NULL,NULL,1,NULL,0,0,NULL),(4,13,3,1,NULL,NULL,1,NULL,0,0,NULL),(5,13,84,4,NULL,NULL,1,NULL,0,0,NULL),(6,3,90,8,NULL,NULL,1,NULL,0,0,NULL),(7,84,90,8,NULL,NULL,1,NULL,0,0,NULL),(8,13,90,8,NULL,NULL,1,NULL,0,0,NULL),(9,162,90,7,NULL,NULL,1,NULL,0,0,NULL),(10,3,162,2,NULL,NULL,1,NULL,0,0,NULL),(11,165,180,1,NULL,NULL,1,NULL,0,0,NULL),(12,52,180,1,NULL,NULL,1,NULL,0,0,NULL),(13,165,155,1,NULL,NULL,1,NULL,0,0,NULL),(14,52,155,1,NULL,NULL,1,NULL,0,0,NULL),(15,52,165,4,NULL,NULL,1,NULL,0,0,NULL),(16,155,42,8,NULL,NULL,1,NULL,0,0,NULL),(17,165,42,8,NULL,NULL,1,NULL,0,0,NULL),(18,52,42,8,NULL,NULL,1,NULL,0,0,NULL),(19,180,42,7,NULL,NULL,1,NULL,0,0,NULL),(20,155,180,2,NULL,NULL,1,NULL,0,0,NULL),(21,109,132,1,NULL,NULL,1,NULL,0,0,NULL),(22,25,132,1,NULL,NULL,1,NULL,0,0,NULL),(23,109,48,1,NULL,NULL,1,NULL,0,0,NULL),(24,25,48,1,NULL,NULL,1,NULL,0,0,NULL),(25,25,109,4,NULL,NULL,1,NULL,0,0,NULL),(26,48,40,8,NULL,NULL,1,NULL,0,0,NULL),(27,109,40,8,NULL,NULL,1,NULL,0,0,NULL),(28,25,40,8,NULL,NULL,1,NULL,0,0,NULL),(29,132,40,7,NULL,NULL,1,NULL,0,0,NULL),(30,48,132,2,NULL,NULL,1,NULL,0,0,NULL),(31,67,11,1,NULL,NULL,1,NULL,0,0,NULL),(32,6,11,1,NULL,NULL,1,NULL,0,0,NULL),(33,67,45,1,NULL,NULL,1,NULL,0,0,NULL),(34,6,45,1,NULL,NULL,1,NULL,0,0,NULL),(35,6,67,4,NULL,NULL,1,NULL,0,0,NULL),(36,45,2,8,NULL,NULL,1,NULL,0,0,NULL),(37,67,2,8,NULL,NULL,1,NULL,0,0,NULL),(38,6,2,8,NULL,NULL,1,NULL,0,0,NULL),(39,11,2,7,NULL,NULL,1,NULL,0,0,NULL),(40,45,11,2,NULL,NULL,1,NULL,0,0,NULL),(41,200,88,1,NULL,NULL,1,NULL,0,0,NULL),(42,124,88,1,NULL,NULL,1,NULL,0,0,NULL),(43,200,168,1,NULL,NULL,1,NULL,0,0,NULL),(44,124,168,1,NULL,NULL,1,NULL,0,0,NULL),(45,124,200,4,NULL,NULL,1,NULL,0,0,NULL),(46,168,68,8,NULL,NULL,1,NULL,0,0,NULL),(47,200,68,8,NULL,NULL,1,NULL,0,0,NULL),(48,124,68,8,NULL,NULL,1,NULL,0,0,NULL),(49,88,68,7,NULL,NULL,1,NULL,0,0,NULL),(50,168,88,2,NULL,NULL,1,NULL,0,0,NULL),(51,166,125,1,NULL,NULL,1,NULL,0,0,NULL),(52,19,125,1,NULL,NULL,1,NULL,0,0,NULL),(53,166,98,1,NULL,NULL,1,NULL,0,0,NULL),(54,19,98,1,NULL,NULL,1,NULL,0,0,NULL),(55,19,166,4,NULL,NULL,1,NULL,0,0,NULL),(56,98,76,8,NULL,NULL,1,NULL,0,0,NULL),(57,166,76,8,NULL,NULL,1,NULL,0,0,NULL),(58,19,76,8,NULL,NULL,1,NULL,0,0,NULL),(59,125,76,7,NULL,NULL,0,NULL,0,0,NULL),(60,98,125,2,NULL,NULL,0,NULL,0,0,NULL),(61,163,14,1,NULL,NULL,1,NULL,0,0,NULL),(62,83,14,1,NULL,NULL,1,NULL,0,0,NULL),(63,163,54,1,NULL,NULL,1,NULL,0,0,NULL),(64,83,54,1,NULL,NULL,1,NULL,0,0,NULL),(65,83,163,4,NULL,NULL,1,NULL,0,0,NULL),(66,54,122,8,NULL,NULL,1,NULL,0,0,NULL),(67,163,122,8,NULL,NULL,1,NULL,0,0,NULL),(68,83,122,8,NULL,NULL,1,NULL,0,0,NULL),(69,14,122,7,NULL,NULL,0,NULL,0,0,NULL),(70,54,14,2,NULL,NULL,0,NULL,0,0,NULL),(71,151,189,1,NULL,NULL,1,NULL,0,0,NULL),(72,190,189,1,NULL,NULL,1,NULL,0,0,NULL),(73,151,104,1,NULL,NULL,1,NULL,0,0,NULL),(74,190,104,1,NULL,NULL,1,NULL,0,0,NULL),(75,190,151,4,NULL,NULL,1,NULL,0,0,NULL),(76,104,102,8,NULL,NULL,1,NULL,0,0,NULL),(77,151,102,8,NULL,NULL,1,NULL,0,0,NULL),(78,190,102,8,NULL,NULL,1,NULL,0,0,NULL),(79,189,102,7,NULL,NULL,1,NULL,0,0,NULL),(80,104,189,2,NULL,NULL,1,NULL,0,0,NULL),(81,139,77,1,NULL,NULL,1,NULL,0,0,NULL),(82,140,77,1,NULL,NULL,1,NULL,0,0,NULL),(83,139,176,1,NULL,NULL,1,NULL,0,0,NULL),(84,140,176,1,NULL,NULL,1,NULL,0,0,NULL),(85,140,139,4,NULL,NULL,1,NULL,0,0,NULL),(86,176,49,8,NULL,NULL,1,NULL,0,0,NULL),(87,139,49,8,NULL,NULL,1,NULL,0,0,NULL),(88,140,49,8,NULL,NULL,1,NULL,0,0,NULL),(89,77,49,7,NULL,NULL,1,NULL,0,0,NULL),(90,176,77,2,NULL,NULL,1,NULL,0,0,NULL),(91,174,150,1,NULL,NULL,1,NULL,0,0,NULL),(92,73,150,1,NULL,NULL,1,NULL,0,0,NULL),(93,174,193,1,NULL,NULL,1,NULL,0,0,NULL),(94,73,193,1,NULL,NULL,1,NULL,0,0,NULL),(95,73,174,4,NULL,NULL,1,NULL,0,0,NULL),(96,193,38,8,NULL,NULL,1,NULL,0,0,NULL),(97,174,38,8,NULL,NULL,1,NULL,0,0,NULL),(98,73,38,8,NULL,NULL,1,NULL,0,0,NULL),(99,150,38,7,NULL,NULL,0,NULL,0,0,NULL),(100,193,150,2,NULL,NULL,0,NULL,0,0,NULL),(101,107,58,1,NULL,NULL,1,NULL,0,0,NULL),(102,35,58,1,NULL,NULL,1,NULL,0,0,NULL),(103,107,8,1,NULL,NULL,1,NULL,0,0,NULL),(104,35,8,1,NULL,NULL,1,NULL,0,0,NULL),(105,35,107,4,NULL,NULL,1,NULL,0,0,NULL),(106,8,46,8,NULL,NULL,1,NULL,0,0,NULL),(107,107,46,8,NULL,NULL,1,NULL,0,0,NULL),(108,35,46,8,NULL,NULL,1,NULL,0,0,NULL),(109,58,46,7,NULL,NULL,0,NULL,0,0,NULL),(110,8,58,2,NULL,NULL,0,NULL,0,0,NULL),(111,59,173,1,NULL,NULL,1,NULL,0,0,NULL),(112,5,173,1,NULL,NULL,1,NULL,0,0,NULL),(113,59,33,1,NULL,NULL,1,NULL,0,0,NULL),(114,5,33,1,NULL,NULL,1,NULL,0,0,NULL),(115,5,59,4,NULL,NULL,1,NULL,0,0,NULL),(116,33,181,8,NULL,NULL,1,NULL,0,0,NULL),(117,59,181,8,NULL,NULL,1,NULL,0,0,NULL),(118,5,181,8,NULL,NULL,1,NULL,0,0,NULL),(119,173,181,7,NULL,NULL,0,NULL,0,0,NULL),(120,33,173,2,NULL,NULL,0,NULL,0,0,NULL),(121,201,64,1,NULL,NULL,1,NULL,0,0,NULL),(122,126,64,1,NULL,NULL,1,NULL,0,0,NULL),(123,201,87,1,NULL,NULL,1,NULL,0,0,NULL),(124,126,87,1,NULL,NULL,1,NULL,0,0,NULL),(125,126,201,4,NULL,NULL,1,NULL,0,0,NULL),(126,87,57,8,NULL,NULL,1,NULL,0,0,NULL),(127,201,57,8,NULL,NULL,1,NULL,0,0,NULL),(128,126,57,8,NULL,NULL,1,NULL,0,0,NULL),(129,64,57,7,NULL,NULL,1,NULL,0,0,NULL),(130,87,64,2,NULL,NULL,1,NULL,0,0,NULL),(131,94,96,1,NULL,NULL,1,NULL,0,0,NULL),(132,183,96,1,NULL,NULL,1,NULL,0,0,NULL),(133,94,141,1,NULL,NULL,1,NULL,0,0,NULL),(134,183,141,1,NULL,NULL,1,NULL,0,0,NULL),(135,183,94,4,NULL,NULL,1,NULL,0,0,NULL),(136,141,161,8,NULL,NULL,1,NULL,0,0,NULL),(137,94,161,8,NULL,NULL,1,NULL,0,0,NULL),(138,183,161,8,NULL,NULL,1,NULL,0,0,NULL),(139,96,161,7,NULL,NULL,1,NULL,0,0,NULL),(140,141,96,2,NULL,NULL,1,NULL,0,0,NULL),(141,191,153,1,NULL,NULL,1,NULL,0,0,NULL),(142,32,153,1,NULL,NULL,1,NULL,0,0,NULL),(143,191,89,1,NULL,NULL,1,NULL,0,0,NULL),(144,32,89,1,NULL,NULL,1,NULL,0,0,NULL),(145,32,191,4,NULL,NULL,1,NULL,0,0,NULL),(146,89,17,8,NULL,NULL,1,NULL,0,0,NULL),(147,191,17,8,NULL,NULL,1,NULL,0,0,NULL),(148,32,17,8,NULL,NULL,1,NULL,0,0,NULL),(149,153,17,7,NULL,NULL,1,NULL,0,0,NULL),(150,89,153,2,NULL,NULL,1,NULL,0,0,NULL),(151,133,169,1,NULL,NULL,1,NULL,0,0,NULL),(152,4,169,1,NULL,NULL,1,NULL,0,0,NULL),(153,133,186,1,NULL,NULL,1,NULL,0,0,NULL),(154,4,186,1,NULL,NULL,1,NULL,0,0,NULL),(155,4,133,4,NULL,NULL,1,NULL,0,0,NULL),(156,186,187,8,NULL,NULL,1,NULL,0,0,NULL),(157,133,187,8,NULL,NULL,1,NULL,0,0,NULL),(158,4,187,8,NULL,NULL,1,NULL,0,0,NULL),(159,169,187,7,NULL,NULL,1,NULL,0,0,NULL),(160,186,169,2,NULL,NULL,1,NULL,0,0,NULL),(161,184,197,1,NULL,NULL,1,NULL,0,0,NULL),(162,130,197,1,NULL,NULL,1,NULL,0,0,NULL),(163,184,171,1,NULL,NULL,1,NULL,0,0,NULL),(164,130,171,1,NULL,NULL,1,NULL,0,0,NULL),(165,130,184,4,NULL,NULL,1,NULL,0,0,NULL),(166,171,80,8,NULL,NULL,1,NULL,0,0,NULL),(167,184,80,8,NULL,NULL,1,NULL,0,0,NULL),(168,130,80,8,NULL,NULL,1,NULL,0,0,NULL),(169,197,80,7,NULL,NULL,1,NULL,0,0,NULL),(170,171,197,2,NULL,NULL,1,NULL,0,0,NULL),(171,154,170,1,NULL,NULL,1,NULL,0,0,NULL),(172,160,170,1,NULL,NULL,1,NULL,0,0,NULL),(173,154,114,1,NULL,NULL,1,NULL,0,0,NULL),(174,160,114,1,NULL,NULL,1,NULL,0,0,NULL),(175,160,154,4,NULL,NULL,1,NULL,0,0,NULL),(176,114,51,8,NULL,NULL,1,NULL,0,0,NULL),(177,154,51,8,NULL,NULL,1,NULL,0,0,NULL),(178,160,51,8,NULL,NULL,1,NULL,0,0,NULL),(179,170,51,7,NULL,NULL,0,NULL,0,0,NULL),(180,114,170,2,NULL,NULL,0,NULL,0,0,NULL),(181,148,113,1,NULL,NULL,1,NULL,0,0,NULL),(182,179,113,1,NULL,NULL,1,NULL,0,0,NULL),(183,148,100,1,NULL,NULL,1,NULL,0,0,NULL),(184,179,100,1,NULL,NULL,1,NULL,0,0,NULL),(185,179,148,4,NULL,NULL,1,NULL,0,0,NULL),(186,100,131,8,NULL,NULL,1,NULL,0,0,NULL),(187,148,131,8,NULL,NULL,1,NULL,0,0,NULL),(188,179,131,8,NULL,NULL,1,NULL,0,0,NULL),(189,113,131,7,NULL,NULL,1,NULL,0,0,NULL),(190,100,113,2,NULL,NULL,1,NULL,0,0,NULL),(191,195,72,1,NULL,NULL,1,NULL,0,0,NULL),(192,156,72,1,NULL,NULL,1,NULL,0,0,NULL),(193,195,70,1,NULL,NULL,1,NULL,0,0,NULL),(194,156,70,1,NULL,NULL,1,NULL,0,0,NULL),(195,156,195,4,NULL,NULL,1,NULL,0,0,NULL),(196,70,79,8,NULL,NULL,1,NULL,0,0,NULL),(197,195,79,8,NULL,NULL,1,NULL,0,0,NULL),(198,156,79,8,NULL,NULL,1,NULL,0,0,NULL),(199,72,79,7,NULL,NULL,1,NULL,0,0,NULL),(200,70,72,2,NULL,NULL,1,NULL,0,0,NULL),(201,121,23,5,NULL,NULL,1,NULL,0,0,NULL),(202,19,39,5,NULL,NULL,1,NULL,0,0,NULL),(203,26,60,5,NULL,NULL,1,NULL,0,0,NULL),(204,193,63,5,NULL,NULL,1,NULL,0,0,NULL),(205,84,65,5,NULL,NULL,1,NULL,0,0,NULL),(206,160,74,5,NULL,NULL,1,NULL,0,0,NULL),(207,70,95,5,NULL,NULL,1,NULL,0,0,NULL),(208,119,101,5,NULL,NULL,1,NULL,0,0,NULL),(209,29,105,5,NULL,NULL,1,NULL,0,0,NULL),(210,154,111,5,NULL,NULL,1,NULL,0,0,NULL),(211,21,123,5,NULL,NULL,1,NULL,0,0,NULL),(212,194,127,5,NULL,NULL,1,NULL,0,0,NULL),(213,142,144,5,NULL,NULL,1,NULL,0,0,NULL),(214,18,178,5,NULL,NULL,1,NULL,0,0,NULL),(215,106,182,5,NULL,NULL,1,NULL,0,0,NULL),(216,172,192,5,NULL,NULL,1,NULL,0,0,NULL); +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`) VALUES (1,74,172,1,NULL,NULL,1,NULL,0,0,NULL),(2,47,172,1,NULL,NULL,1,NULL,0,0,NULL),(3,74,125,1,NULL,NULL,1,NULL,0,0,NULL),(4,47,125,1,NULL,NULL,1,NULL,0,0,NULL),(5,47,74,4,NULL,NULL,1,NULL,0,0,NULL),(6,125,11,8,NULL,NULL,1,NULL,0,0,NULL),(7,74,11,8,NULL,NULL,1,NULL,0,0,NULL),(8,47,11,8,NULL,NULL,1,NULL,0,0,NULL),(9,172,11,7,NULL,NULL,0,NULL,0,0,NULL),(10,125,172,2,NULL,NULL,0,NULL,0,0,NULL),(11,126,159,1,NULL,NULL,1,NULL,0,0,NULL),(12,9,159,1,NULL,NULL,1,NULL,0,0,NULL),(13,126,102,1,NULL,NULL,1,NULL,0,0,NULL),(14,9,102,1,NULL,NULL,1,NULL,0,0,NULL),(15,9,126,4,NULL,NULL,1,NULL,0,0,NULL),(16,102,128,8,NULL,NULL,1,NULL,0,0,NULL),(17,126,128,8,NULL,NULL,1,NULL,0,0,NULL),(18,9,128,8,NULL,NULL,1,NULL,0,0,NULL),(19,159,128,7,NULL,NULL,0,NULL,0,0,NULL),(20,102,159,2,NULL,NULL,0,NULL,0,0,NULL),(21,40,198,1,NULL,NULL,1,NULL,0,0,NULL),(22,85,198,1,NULL,NULL,1,NULL,0,0,NULL),(23,40,149,1,NULL,NULL,1,NULL,0,0,NULL),(24,85,149,1,NULL,NULL,1,NULL,0,0,NULL),(25,85,40,4,NULL,NULL,1,NULL,0,0,NULL),(26,149,38,8,NULL,NULL,1,NULL,0,0,NULL),(27,40,38,8,NULL,NULL,1,NULL,0,0,NULL),(28,85,38,8,NULL,NULL,1,NULL,0,0,NULL),(29,198,38,7,NULL,NULL,1,NULL,0,0,NULL),(30,149,198,2,NULL,NULL,1,NULL,0,0,NULL),(31,134,192,1,NULL,NULL,1,NULL,0,0,NULL),(32,100,192,1,NULL,NULL,1,NULL,0,0,NULL),(33,134,170,1,NULL,NULL,1,NULL,0,0,NULL),(34,100,170,1,NULL,NULL,1,NULL,0,0,NULL),(35,100,134,4,NULL,NULL,1,NULL,0,0,NULL),(36,170,136,8,NULL,NULL,1,NULL,0,0,NULL),(37,134,136,8,NULL,NULL,1,NULL,0,0,NULL),(38,100,136,8,NULL,NULL,1,NULL,0,0,NULL),(39,192,136,7,NULL,NULL,0,NULL,0,0,NULL),(40,170,192,2,NULL,NULL,0,NULL,0,0,NULL),(41,59,34,1,NULL,NULL,1,NULL,0,0,NULL),(42,110,34,1,NULL,NULL,1,NULL,0,0,NULL),(43,59,113,1,NULL,NULL,1,NULL,0,0,NULL),(44,110,113,1,NULL,NULL,1,NULL,0,0,NULL),(45,110,59,4,NULL,NULL,1,NULL,0,0,NULL),(46,113,32,8,NULL,NULL,1,NULL,0,0,NULL),(47,59,32,8,NULL,NULL,1,NULL,0,0,NULL),(48,110,32,8,NULL,NULL,1,NULL,0,0,NULL),(49,34,32,7,NULL,NULL,1,NULL,0,0,NULL),(50,113,34,2,NULL,NULL,1,NULL,0,0,NULL),(51,147,191,1,NULL,NULL,1,NULL,0,0,NULL),(52,151,191,1,NULL,NULL,1,NULL,0,0,NULL),(53,147,160,1,NULL,NULL,1,NULL,0,0,NULL),(54,151,160,1,NULL,NULL,1,NULL,0,0,NULL),(55,151,147,4,NULL,NULL,1,NULL,0,0,NULL),(56,160,27,8,NULL,NULL,1,NULL,0,0,NULL),(57,147,27,8,NULL,NULL,1,NULL,0,0,NULL),(58,151,27,8,NULL,NULL,1,NULL,0,0,NULL),(59,191,27,7,NULL,NULL,1,NULL,0,0,NULL),(60,160,191,2,NULL,NULL,1,NULL,0,0,NULL),(61,94,82,1,NULL,NULL,1,NULL,0,0,NULL),(62,188,82,1,NULL,NULL,1,NULL,0,0,NULL),(63,94,196,1,NULL,NULL,1,NULL,0,0,NULL),(64,188,196,1,NULL,NULL,1,NULL,0,0,NULL),(65,188,94,4,NULL,NULL,1,NULL,0,0,NULL),(66,196,116,8,NULL,NULL,1,NULL,0,0,NULL),(67,94,116,8,NULL,NULL,1,NULL,0,0,NULL),(68,188,116,8,NULL,NULL,1,NULL,0,0,NULL),(69,82,116,7,NULL,NULL,0,NULL,0,0,NULL),(70,196,82,2,NULL,NULL,0,NULL,0,0,NULL),(71,28,195,1,NULL,NULL,1,NULL,0,0,NULL),(72,133,195,1,NULL,NULL,1,NULL,0,0,NULL),(73,28,173,1,NULL,NULL,1,NULL,0,0,NULL),(74,133,173,1,NULL,NULL,1,NULL,0,0,NULL),(75,133,28,4,NULL,NULL,1,NULL,0,0,NULL),(76,173,106,8,NULL,NULL,1,NULL,0,0,NULL),(77,28,106,8,NULL,NULL,1,NULL,0,0,NULL),(78,133,106,8,NULL,NULL,1,NULL,0,0,NULL),(79,195,106,7,NULL,NULL,0,NULL,0,0,NULL),(80,173,195,2,NULL,NULL,0,NULL,0,0,NULL),(81,152,141,1,NULL,NULL,1,NULL,0,0,NULL),(82,61,141,1,NULL,NULL,1,NULL,0,0,NULL),(83,152,112,1,NULL,NULL,1,NULL,0,0,NULL),(84,61,112,1,NULL,NULL,1,NULL,0,0,NULL),(85,61,152,4,NULL,NULL,1,NULL,0,0,NULL),(86,112,22,8,NULL,NULL,1,NULL,0,0,NULL),(87,152,22,8,NULL,NULL,1,NULL,0,0,NULL),(88,61,22,8,NULL,NULL,1,NULL,0,0,NULL),(89,141,22,7,NULL,NULL,1,NULL,0,0,NULL),(90,112,141,2,NULL,NULL,1,NULL,0,0,NULL),(91,155,108,1,NULL,NULL,1,NULL,0,0,NULL),(92,29,108,1,NULL,NULL,1,NULL,0,0,NULL),(93,155,54,1,NULL,NULL,1,NULL,0,0,NULL),(94,29,54,1,NULL,NULL,1,NULL,0,0,NULL),(95,29,155,4,NULL,NULL,1,NULL,0,0,NULL),(96,54,115,8,NULL,NULL,1,NULL,0,0,NULL),(97,155,115,8,NULL,NULL,1,NULL,0,0,NULL),(98,29,115,8,NULL,NULL,1,NULL,0,0,NULL),(99,108,115,7,NULL,NULL,1,NULL,0,0,NULL),(100,54,108,2,NULL,NULL,1,NULL,0,0,NULL),(101,63,103,1,NULL,NULL,1,NULL,0,0,NULL),(102,95,103,1,NULL,NULL,1,NULL,0,0,NULL),(103,63,201,1,NULL,NULL,1,NULL,0,0,NULL),(104,95,201,1,NULL,NULL,1,NULL,0,0,NULL),(105,95,63,4,NULL,NULL,1,NULL,0,0,NULL),(106,201,35,8,NULL,NULL,1,NULL,0,0,NULL),(107,63,35,8,NULL,NULL,1,NULL,0,0,NULL),(108,95,35,8,NULL,NULL,1,NULL,0,0,NULL),(109,103,35,7,NULL,NULL,1,NULL,0,0,NULL),(110,201,103,2,NULL,NULL,1,NULL,0,0,NULL),(111,114,107,1,NULL,NULL,1,NULL,0,0,NULL),(112,70,107,1,NULL,NULL,1,NULL,0,0,NULL),(113,114,68,1,NULL,NULL,1,NULL,0,0,NULL),(114,70,68,1,NULL,NULL,1,NULL,0,0,NULL),(115,70,114,4,NULL,NULL,1,NULL,0,0,NULL),(116,68,177,8,NULL,NULL,1,NULL,0,0,NULL),(117,114,177,8,NULL,NULL,1,NULL,0,0,NULL),(118,70,177,8,NULL,NULL,1,NULL,0,0,NULL),(119,107,177,7,NULL,NULL,1,NULL,0,0,NULL),(120,68,107,2,NULL,NULL,1,NULL,0,0,NULL),(121,140,10,1,NULL,NULL,1,NULL,0,0,NULL),(122,58,10,1,NULL,NULL,1,NULL,0,0,NULL),(123,140,130,1,NULL,NULL,1,NULL,0,0,NULL),(124,58,130,1,NULL,NULL,1,NULL,0,0,NULL),(125,58,140,4,NULL,NULL,1,NULL,0,0,NULL),(126,130,150,8,NULL,NULL,1,NULL,0,0,NULL),(127,140,150,8,NULL,NULL,1,NULL,0,0,NULL),(128,58,150,8,NULL,NULL,1,NULL,0,0,NULL),(129,10,150,7,NULL,NULL,1,NULL,0,0,NULL),(130,130,10,2,NULL,NULL,1,NULL,0,0,NULL),(131,78,187,1,NULL,NULL,1,NULL,0,0,NULL),(132,181,187,1,NULL,NULL,1,NULL,0,0,NULL),(133,78,48,1,NULL,NULL,1,NULL,0,0,NULL),(134,181,48,1,NULL,NULL,1,NULL,0,0,NULL),(135,181,78,4,NULL,NULL,1,NULL,0,0,NULL),(136,48,72,8,NULL,NULL,1,NULL,0,0,NULL),(137,78,72,8,NULL,NULL,1,NULL,0,0,NULL),(138,181,72,8,NULL,NULL,1,NULL,0,0,NULL),(139,187,72,7,NULL,NULL,0,NULL,0,0,NULL),(140,48,187,2,NULL,NULL,0,NULL,0,0,NULL),(141,20,135,1,NULL,NULL,1,NULL,0,0,NULL),(142,13,135,1,NULL,NULL,1,NULL,0,0,NULL),(143,20,43,1,NULL,NULL,1,NULL,0,0,NULL),(144,13,43,1,NULL,NULL,1,NULL,0,0,NULL),(145,13,20,4,NULL,NULL,1,NULL,0,0,NULL),(146,43,21,8,NULL,NULL,1,NULL,0,0,NULL),(147,20,21,8,NULL,NULL,1,NULL,0,0,NULL),(148,13,21,8,NULL,NULL,1,NULL,0,0,NULL),(149,135,21,7,NULL,NULL,0,NULL,0,0,NULL),(150,43,135,2,NULL,NULL,0,NULL,0,0,NULL),(151,89,194,1,NULL,NULL,1,NULL,0,0,NULL),(152,75,194,1,NULL,NULL,1,NULL,0,0,NULL),(153,89,131,1,NULL,NULL,1,NULL,0,0,NULL),(154,75,131,1,NULL,NULL,1,NULL,0,0,NULL),(155,75,89,4,NULL,NULL,1,NULL,0,0,NULL),(156,131,19,8,NULL,NULL,1,NULL,0,0,NULL),(157,89,19,8,NULL,NULL,1,NULL,0,0,NULL),(158,75,19,8,NULL,NULL,1,NULL,0,0,NULL),(159,194,19,7,NULL,NULL,0,NULL,0,0,NULL),(160,131,194,2,NULL,NULL,0,NULL,0,0,NULL),(161,121,104,1,NULL,NULL,1,NULL,0,0,NULL),(162,39,104,1,NULL,NULL,1,NULL,0,0,NULL),(163,121,153,1,NULL,NULL,1,NULL,0,0,NULL),(164,39,153,1,NULL,NULL,1,NULL,0,0,NULL),(165,39,121,4,NULL,NULL,1,NULL,0,0,NULL),(166,153,168,8,NULL,NULL,1,NULL,0,0,NULL),(167,121,168,8,NULL,NULL,1,NULL,0,0,NULL),(168,39,168,8,NULL,NULL,1,NULL,0,0,NULL),(169,104,168,7,NULL,NULL,1,NULL,0,0,NULL),(170,153,104,2,NULL,NULL,1,NULL,0,0,NULL),(171,36,42,1,NULL,NULL,1,NULL,0,0,NULL),(172,26,42,1,NULL,NULL,1,NULL,0,0,NULL),(173,36,189,1,NULL,NULL,1,NULL,0,0,NULL),(174,26,189,1,NULL,NULL,1,NULL,0,0,NULL),(175,26,36,4,NULL,NULL,1,NULL,0,0,NULL),(176,189,101,8,NULL,NULL,1,NULL,0,0,NULL),(177,36,101,8,NULL,NULL,1,NULL,0,0,NULL),(178,26,101,8,NULL,NULL,1,NULL,0,0,NULL),(179,42,101,7,NULL,NULL,1,NULL,0,0,NULL),(180,189,42,2,NULL,NULL,1,NULL,0,0,NULL),(181,69,171,1,NULL,NULL,1,NULL,0,0,NULL),(182,109,171,1,NULL,NULL,1,NULL,0,0,NULL),(183,69,200,1,NULL,NULL,1,NULL,0,0,NULL),(184,109,200,1,NULL,NULL,1,NULL,0,0,NULL),(185,109,69,4,NULL,NULL,1,NULL,0,0,NULL),(186,200,98,8,NULL,NULL,1,NULL,0,0,NULL),(187,69,98,8,NULL,NULL,1,NULL,0,0,NULL),(188,109,98,8,NULL,NULL,1,NULL,0,0,NULL),(189,171,98,7,NULL,NULL,1,NULL,0,0,NULL),(190,200,171,2,NULL,NULL,1,NULL,0,0,NULL),(191,158,25,1,NULL,NULL,1,NULL,0,0,NULL),(192,4,25,1,NULL,NULL,1,NULL,0,0,NULL),(193,158,180,1,NULL,NULL,1,NULL,0,0,NULL),(194,4,180,1,NULL,NULL,1,NULL,0,0,NULL),(195,4,158,4,NULL,NULL,1,NULL,0,0,NULL),(196,180,163,8,NULL,NULL,1,NULL,0,0,NULL),(197,158,163,8,NULL,NULL,1,NULL,0,0,NULL),(198,4,163,8,NULL,NULL,1,NULL,0,0,NULL),(199,25,163,7,NULL,NULL,0,NULL,0,0,NULL),(200,180,25,2,NULL,NULL,0,NULL,0,0,NULL),(201,26,14,5,NULL,NULL,1,NULL,0,0,NULL),(202,36,37,5,NULL,NULL,1,NULL,0,0,NULL),(203,20,46,5,NULL,NULL,1,NULL,0,0,NULL),(204,89,50,5,NULL,NULL,1,NULL,0,0,NULL),(205,189,56,5,NULL,NULL,1,NULL,0,0,NULL),(206,29,62,5,NULL,NULL,1,NULL,0,0,NULL),(207,75,73,5,NULL,NULL,1,NULL,0,0,NULL),(208,197,86,5,NULL,NULL,1,NULL,0,0,NULL),(209,120,91,5,NULL,NULL,1,NULL,0,0,NULL),(210,151,105,5,NULL,NULL,1,NULL,0,0,NULL),(211,85,117,5,NULL,NULL,1,NULL,0,0,NULL),(212,34,137,5,NULL,NULL,1,NULL,0,0,NULL),(213,170,142,5,NULL,NULL,1,NULL,0,0,NULL),(214,18,144,5,NULL,NULL,1,NULL,0,0,NULL),(215,104,148,5,NULL,NULL,1,NULL,0,0,NULL),(216,57,157,5,NULL,NULL,1,NULL,0,0,NULL),(217,185,174,5,NULL,NULL,1,NULL,0,0,NULL),(218,186,178,5,NULL,NULL,1,NULL,0,0,NULL); /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Dumping data for table `civicrm_relationship_cache` +-- + +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`) VALUES (1,1,1,'a_b',74,'Child of',172,'Parent of',1,NULL,NULL),(2,1,1,'b_a',172,'Parent of',74,'Child of',1,NULL,NULL),(3,2,1,'a_b',47,'Child of',172,'Parent of',1,NULL,NULL),(4,2,1,'b_a',172,'Parent of',47,'Child of',1,NULL,NULL),(5,3,1,'a_b',74,'Child of',125,'Parent of',1,NULL,NULL),(6,3,1,'b_a',125,'Parent of',74,'Child of',1,NULL,NULL),(7,4,1,'a_b',47,'Child of',125,'Parent of',1,NULL,NULL),(8,4,1,'b_a',125,'Parent of',47,'Child of',1,NULL,NULL),(9,5,4,'a_b',47,'Sibling of',74,'Sibling of',1,NULL,NULL),(10,5,4,'b_a',74,'Sibling of',47,'Sibling of',1,NULL,NULL),(11,6,8,'a_b',125,'Household Member of',11,'Household Member is',1,NULL,NULL),(12,6,8,'b_a',11,'Household Member is',125,'Household Member of',1,NULL,NULL),(13,7,8,'a_b',74,'Household Member of',11,'Household Member is',1,NULL,NULL),(14,7,8,'b_a',11,'Household Member is',74,'Household Member of',1,NULL,NULL),(15,8,8,'a_b',47,'Household Member of',11,'Household Member is',1,NULL,NULL),(16,8,8,'b_a',11,'Household Member is',47,'Household Member of',1,NULL,NULL),(17,9,7,'a_b',172,'Head of Household for',11,'Head of Household is',0,NULL,NULL),(18,9,7,'b_a',11,'Head of Household is',172,'Head of Household for',0,NULL,NULL),(19,10,2,'a_b',125,'Spouse of',172,'Spouse of',0,NULL,NULL),(20,10,2,'b_a',172,'Spouse of',125,'Spouse of',0,NULL,NULL),(21,11,1,'a_b',126,'Child of',159,'Parent of',1,NULL,NULL),(22,11,1,'b_a',159,'Parent of',126,'Child of',1,NULL,NULL),(23,12,1,'a_b',9,'Child of',159,'Parent of',1,NULL,NULL),(24,12,1,'b_a',159,'Parent of',9,'Child of',1,NULL,NULL),(25,13,1,'a_b',126,'Child of',102,'Parent of',1,NULL,NULL),(26,13,1,'b_a',102,'Parent of',126,'Child of',1,NULL,NULL),(27,14,1,'a_b',9,'Child of',102,'Parent of',1,NULL,NULL),(28,14,1,'b_a',102,'Parent of',9,'Child of',1,NULL,NULL),(29,15,4,'a_b',9,'Sibling of',126,'Sibling of',1,NULL,NULL),(30,15,4,'b_a',126,'Sibling of',9,'Sibling of',1,NULL,NULL),(31,16,8,'a_b',102,'Household Member of',128,'Household Member is',1,NULL,NULL),(32,16,8,'b_a',128,'Household Member is',102,'Household Member of',1,NULL,NULL),(33,17,8,'a_b',126,'Household Member of',128,'Household Member is',1,NULL,NULL),(34,17,8,'b_a',128,'Household Member is',126,'Household Member of',1,NULL,NULL),(35,18,8,'a_b',9,'Household Member of',128,'Household Member is',1,NULL,NULL),(36,18,8,'b_a',128,'Household Member is',9,'Household Member of',1,NULL,NULL),(37,19,7,'a_b',159,'Head of Household for',128,'Head of Household is',0,NULL,NULL),(38,19,7,'b_a',128,'Head of Household is',159,'Head of Household for',0,NULL,NULL),(39,20,2,'a_b',102,'Spouse of',159,'Spouse of',0,NULL,NULL),(40,20,2,'b_a',159,'Spouse of',102,'Spouse of',0,NULL,NULL),(41,21,1,'a_b',40,'Child of',198,'Parent of',1,NULL,NULL),(42,21,1,'b_a',198,'Parent of',40,'Child of',1,NULL,NULL),(43,22,1,'a_b',85,'Child of',198,'Parent of',1,NULL,NULL),(44,22,1,'b_a',198,'Parent of',85,'Child of',1,NULL,NULL),(45,23,1,'a_b',40,'Child of',149,'Parent of',1,NULL,NULL),(46,23,1,'b_a',149,'Parent of',40,'Child of',1,NULL,NULL),(47,24,1,'a_b',85,'Child of',149,'Parent of',1,NULL,NULL),(48,24,1,'b_a',149,'Parent of',85,'Child of',1,NULL,NULL),(49,25,4,'a_b',85,'Sibling of',40,'Sibling of',1,NULL,NULL),(50,25,4,'b_a',40,'Sibling of',85,'Sibling of',1,NULL,NULL),(51,26,8,'a_b',149,'Household Member of',38,'Household Member is',1,NULL,NULL),(52,26,8,'b_a',38,'Household Member is',149,'Household Member of',1,NULL,NULL),(53,27,8,'a_b',40,'Household Member of',38,'Household Member is',1,NULL,NULL),(54,27,8,'b_a',38,'Household Member is',40,'Household Member of',1,NULL,NULL),(55,28,8,'a_b',85,'Household Member of',38,'Household Member is',1,NULL,NULL),(56,28,8,'b_a',38,'Household Member is',85,'Household Member of',1,NULL,NULL),(57,29,7,'a_b',198,'Head of Household for',38,'Head of Household is',1,NULL,NULL),(58,29,7,'b_a',38,'Head of Household is',198,'Head of Household for',1,NULL,NULL),(59,30,2,'a_b',149,'Spouse of',198,'Spouse of',1,NULL,NULL),(60,30,2,'b_a',198,'Spouse of',149,'Spouse of',1,NULL,NULL),(61,31,1,'a_b',134,'Child of',192,'Parent of',1,NULL,NULL),(62,31,1,'b_a',192,'Parent of',134,'Child of',1,NULL,NULL),(63,32,1,'a_b',100,'Child of',192,'Parent of',1,NULL,NULL),(64,32,1,'b_a',192,'Parent of',100,'Child of',1,NULL,NULL),(65,33,1,'a_b',134,'Child of',170,'Parent of',1,NULL,NULL),(66,33,1,'b_a',170,'Parent of',134,'Child of',1,NULL,NULL),(67,34,1,'a_b',100,'Child of',170,'Parent of',1,NULL,NULL),(68,34,1,'b_a',170,'Parent of',100,'Child of',1,NULL,NULL),(69,35,4,'a_b',100,'Sibling of',134,'Sibling of',1,NULL,NULL),(70,35,4,'b_a',134,'Sibling of',100,'Sibling of',1,NULL,NULL),(71,36,8,'a_b',170,'Household Member of',136,'Household Member is',1,NULL,NULL),(72,36,8,'b_a',136,'Household Member is',170,'Household Member of',1,NULL,NULL),(73,37,8,'a_b',134,'Household Member of',136,'Household Member is',1,NULL,NULL),(74,37,8,'b_a',136,'Household Member is',134,'Household Member of',1,NULL,NULL),(75,38,8,'a_b',100,'Household Member of',136,'Household Member is',1,NULL,NULL),(76,38,8,'b_a',136,'Household Member is',100,'Household Member of',1,NULL,NULL),(77,39,7,'a_b',192,'Head of Household for',136,'Head of Household is',0,NULL,NULL),(78,39,7,'b_a',136,'Head of Household is',192,'Head of Household for',0,NULL,NULL),(79,40,2,'a_b',170,'Spouse of',192,'Spouse of',0,NULL,NULL),(80,40,2,'b_a',192,'Spouse of',170,'Spouse of',0,NULL,NULL),(81,41,1,'a_b',59,'Child of',34,'Parent of',1,NULL,NULL),(82,41,1,'b_a',34,'Parent of',59,'Child of',1,NULL,NULL),(83,42,1,'a_b',110,'Child of',34,'Parent of',1,NULL,NULL),(84,42,1,'b_a',34,'Parent of',110,'Child of',1,NULL,NULL),(85,43,1,'a_b',59,'Child of',113,'Parent of',1,NULL,NULL),(86,43,1,'b_a',113,'Parent of',59,'Child of',1,NULL,NULL),(87,44,1,'a_b',110,'Child of',113,'Parent of',1,NULL,NULL),(88,44,1,'b_a',113,'Parent of',110,'Child of',1,NULL,NULL),(89,45,4,'a_b',110,'Sibling of',59,'Sibling of',1,NULL,NULL),(90,45,4,'b_a',59,'Sibling of',110,'Sibling of',1,NULL,NULL),(91,46,8,'a_b',113,'Household Member of',32,'Household Member is',1,NULL,NULL),(92,46,8,'b_a',32,'Household Member is',113,'Household Member of',1,NULL,NULL),(93,47,8,'a_b',59,'Household Member of',32,'Household Member is',1,NULL,NULL),(94,47,8,'b_a',32,'Household Member is',59,'Household Member of',1,NULL,NULL),(95,48,8,'a_b',110,'Household Member of',32,'Household Member is',1,NULL,NULL),(96,48,8,'b_a',32,'Household Member is',110,'Household Member of',1,NULL,NULL),(97,49,7,'a_b',34,'Head of Household for',32,'Head of Household is',1,NULL,NULL),(98,49,7,'b_a',32,'Head of Household is',34,'Head of Household for',1,NULL,NULL),(99,50,2,'a_b',113,'Spouse of',34,'Spouse of',1,NULL,NULL),(100,50,2,'b_a',34,'Spouse of',113,'Spouse of',1,NULL,NULL),(101,51,1,'a_b',147,'Child of',191,'Parent of',1,NULL,NULL),(102,51,1,'b_a',191,'Parent of',147,'Child of',1,NULL,NULL),(103,52,1,'a_b',151,'Child of',191,'Parent of',1,NULL,NULL),(104,52,1,'b_a',191,'Parent of',151,'Child of',1,NULL,NULL),(105,53,1,'a_b',147,'Child of',160,'Parent of',1,NULL,NULL),(106,53,1,'b_a',160,'Parent of',147,'Child of',1,NULL,NULL),(107,54,1,'a_b',151,'Child of',160,'Parent of',1,NULL,NULL),(108,54,1,'b_a',160,'Parent of',151,'Child of',1,NULL,NULL),(109,55,4,'a_b',151,'Sibling of',147,'Sibling of',1,NULL,NULL),(110,55,4,'b_a',147,'Sibling of',151,'Sibling of',1,NULL,NULL),(111,56,8,'a_b',160,'Household Member of',27,'Household Member is',1,NULL,NULL),(112,56,8,'b_a',27,'Household Member is',160,'Household Member of',1,NULL,NULL),(113,57,8,'a_b',147,'Household Member of',27,'Household Member is',1,NULL,NULL),(114,57,8,'b_a',27,'Household Member is',147,'Household Member of',1,NULL,NULL),(115,58,8,'a_b',151,'Household Member of',27,'Household Member is',1,NULL,NULL),(116,58,8,'b_a',27,'Household Member is',151,'Household Member of',1,NULL,NULL),(117,59,7,'a_b',191,'Head of Household for',27,'Head of Household is',1,NULL,NULL),(118,59,7,'b_a',27,'Head of Household is',191,'Head of Household for',1,NULL,NULL),(119,60,2,'a_b',160,'Spouse of',191,'Spouse of',1,NULL,NULL),(120,60,2,'b_a',191,'Spouse of',160,'Spouse of',1,NULL,NULL),(121,61,1,'a_b',94,'Child of',82,'Parent of',1,NULL,NULL),(122,61,1,'b_a',82,'Parent of',94,'Child of',1,NULL,NULL),(123,62,1,'a_b',188,'Child of',82,'Parent of',1,NULL,NULL),(124,62,1,'b_a',82,'Parent of',188,'Child of',1,NULL,NULL),(125,63,1,'a_b',94,'Child of',196,'Parent of',1,NULL,NULL),(126,63,1,'b_a',196,'Parent of',94,'Child of',1,NULL,NULL),(127,64,1,'a_b',188,'Child of',196,'Parent of',1,NULL,NULL),(128,64,1,'b_a',196,'Parent of',188,'Child of',1,NULL,NULL),(129,65,4,'a_b',188,'Sibling of',94,'Sibling of',1,NULL,NULL),(130,65,4,'b_a',94,'Sibling of',188,'Sibling of',1,NULL,NULL),(131,66,8,'a_b',196,'Household Member of',116,'Household Member is',1,NULL,NULL),(132,66,8,'b_a',116,'Household Member is',196,'Household Member of',1,NULL,NULL),(133,67,8,'a_b',94,'Household Member of',116,'Household Member is',1,NULL,NULL),(134,67,8,'b_a',116,'Household Member is',94,'Household Member of',1,NULL,NULL),(135,68,8,'a_b',188,'Household Member of',116,'Household Member is',1,NULL,NULL),(136,68,8,'b_a',116,'Household Member is',188,'Household Member of',1,NULL,NULL),(137,69,7,'a_b',82,'Head of Household for',116,'Head of Household is',0,NULL,NULL),(138,69,7,'b_a',116,'Head of Household is',82,'Head of Household for',0,NULL,NULL),(139,70,2,'a_b',196,'Spouse of',82,'Spouse of',0,NULL,NULL),(140,70,2,'b_a',82,'Spouse of',196,'Spouse of',0,NULL,NULL),(141,71,1,'a_b',28,'Child of',195,'Parent of',1,NULL,NULL),(142,71,1,'b_a',195,'Parent of',28,'Child of',1,NULL,NULL),(143,72,1,'a_b',133,'Child of',195,'Parent of',1,NULL,NULL),(144,72,1,'b_a',195,'Parent of',133,'Child of',1,NULL,NULL),(145,73,1,'a_b',28,'Child of',173,'Parent of',1,NULL,NULL),(146,73,1,'b_a',173,'Parent of',28,'Child of',1,NULL,NULL),(147,74,1,'a_b',133,'Child of',173,'Parent of',1,NULL,NULL),(148,74,1,'b_a',173,'Parent of',133,'Child of',1,NULL,NULL),(149,75,4,'a_b',133,'Sibling of',28,'Sibling of',1,NULL,NULL),(150,75,4,'b_a',28,'Sibling of',133,'Sibling of',1,NULL,NULL),(151,76,8,'a_b',173,'Household Member of',106,'Household Member is',1,NULL,NULL),(152,76,8,'b_a',106,'Household Member is',173,'Household Member of',1,NULL,NULL),(153,77,8,'a_b',28,'Household Member of',106,'Household Member is',1,NULL,NULL),(154,77,8,'b_a',106,'Household Member is',28,'Household Member of',1,NULL,NULL),(155,78,8,'a_b',133,'Household Member of',106,'Household Member is',1,NULL,NULL),(156,78,8,'b_a',106,'Household Member is',133,'Household Member of',1,NULL,NULL),(157,79,7,'a_b',195,'Head of Household for',106,'Head of Household is',0,NULL,NULL),(158,79,7,'b_a',106,'Head of Household is',195,'Head of Household for',0,NULL,NULL),(159,80,2,'a_b',173,'Spouse of',195,'Spouse of',0,NULL,NULL),(160,80,2,'b_a',195,'Spouse of',173,'Spouse of',0,NULL,NULL),(161,81,1,'a_b',152,'Child of',141,'Parent of',1,NULL,NULL),(162,81,1,'b_a',141,'Parent of',152,'Child of',1,NULL,NULL),(163,82,1,'a_b',61,'Child of',141,'Parent of',1,NULL,NULL),(164,82,1,'b_a',141,'Parent of',61,'Child of',1,NULL,NULL),(165,83,1,'a_b',152,'Child of',112,'Parent of',1,NULL,NULL),(166,83,1,'b_a',112,'Parent of',152,'Child of',1,NULL,NULL),(167,84,1,'a_b',61,'Child of',112,'Parent of',1,NULL,NULL),(168,84,1,'b_a',112,'Parent of',61,'Child of',1,NULL,NULL),(169,85,4,'a_b',61,'Sibling of',152,'Sibling of',1,NULL,NULL),(170,85,4,'b_a',152,'Sibling of',61,'Sibling of',1,NULL,NULL),(171,86,8,'a_b',112,'Household Member of',22,'Household Member is',1,NULL,NULL),(172,86,8,'b_a',22,'Household Member is',112,'Household Member of',1,NULL,NULL),(173,87,8,'a_b',152,'Household Member of',22,'Household Member is',1,NULL,NULL),(174,87,8,'b_a',22,'Household Member is',152,'Household Member of',1,NULL,NULL),(175,88,8,'a_b',61,'Household Member of',22,'Household Member is',1,NULL,NULL),(176,88,8,'b_a',22,'Household Member is',61,'Household Member of',1,NULL,NULL),(177,89,7,'a_b',141,'Head of Household for',22,'Head of Household is',1,NULL,NULL),(178,89,7,'b_a',22,'Head of Household is',141,'Head of Household for',1,NULL,NULL),(179,90,2,'a_b',112,'Spouse of',141,'Spouse of',1,NULL,NULL),(180,90,2,'b_a',141,'Spouse of',112,'Spouse of',1,NULL,NULL),(181,91,1,'a_b',155,'Child of',108,'Parent of',1,NULL,NULL),(182,91,1,'b_a',108,'Parent of',155,'Child of',1,NULL,NULL),(183,92,1,'a_b',29,'Child of',108,'Parent of',1,NULL,NULL),(184,92,1,'b_a',108,'Parent of',29,'Child of',1,NULL,NULL),(185,93,1,'a_b',155,'Child of',54,'Parent of',1,NULL,NULL),(186,93,1,'b_a',54,'Parent of',155,'Child of',1,NULL,NULL),(187,94,1,'a_b',29,'Child of',54,'Parent of',1,NULL,NULL),(188,94,1,'b_a',54,'Parent of',29,'Child of',1,NULL,NULL),(189,95,4,'a_b',29,'Sibling of',155,'Sibling of',1,NULL,NULL),(190,95,4,'b_a',155,'Sibling of',29,'Sibling of',1,NULL,NULL),(191,96,8,'a_b',54,'Household Member of',115,'Household Member is',1,NULL,NULL),(192,96,8,'b_a',115,'Household Member is',54,'Household Member of',1,NULL,NULL),(193,97,8,'a_b',155,'Household Member of',115,'Household Member is',1,NULL,NULL),(194,97,8,'b_a',115,'Household Member is',155,'Household Member of',1,NULL,NULL),(195,98,8,'a_b',29,'Household Member of',115,'Household Member is',1,NULL,NULL),(196,98,8,'b_a',115,'Household Member is',29,'Household Member of',1,NULL,NULL),(197,99,7,'a_b',108,'Head of Household for',115,'Head of Household is',1,NULL,NULL),(198,99,7,'b_a',115,'Head of Household is',108,'Head of Household for',1,NULL,NULL),(199,100,2,'a_b',54,'Spouse of',108,'Spouse of',1,NULL,NULL),(200,100,2,'b_a',108,'Spouse of',54,'Spouse of',1,NULL,NULL),(201,101,1,'a_b',63,'Child of',103,'Parent of',1,NULL,NULL),(202,101,1,'b_a',103,'Parent of',63,'Child of',1,NULL,NULL),(203,102,1,'a_b',95,'Child of',103,'Parent of',1,NULL,NULL),(204,102,1,'b_a',103,'Parent of',95,'Child of',1,NULL,NULL),(205,103,1,'a_b',63,'Child of',201,'Parent of',1,NULL,NULL),(206,103,1,'b_a',201,'Parent of',63,'Child of',1,NULL,NULL),(207,104,1,'a_b',95,'Child of',201,'Parent of',1,NULL,NULL),(208,104,1,'b_a',201,'Parent of',95,'Child of',1,NULL,NULL),(209,105,4,'a_b',95,'Sibling of',63,'Sibling of',1,NULL,NULL),(210,105,4,'b_a',63,'Sibling of',95,'Sibling of',1,NULL,NULL),(211,106,8,'a_b',201,'Household Member of',35,'Household Member is',1,NULL,NULL),(212,106,8,'b_a',35,'Household Member is',201,'Household Member of',1,NULL,NULL),(213,107,8,'a_b',63,'Household Member of',35,'Household Member is',1,NULL,NULL),(214,107,8,'b_a',35,'Household Member is',63,'Household Member of',1,NULL,NULL),(215,108,8,'a_b',95,'Household Member of',35,'Household Member is',1,NULL,NULL),(216,108,8,'b_a',35,'Household Member is',95,'Household Member of',1,NULL,NULL),(217,109,7,'a_b',103,'Head of Household for',35,'Head of Household is',1,NULL,NULL),(218,109,7,'b_a',35,'Head of Household is',103,'Head of Household for',1,NULL,NULL),(219,110,2,'a_b',201,'Spouse of',103,'Spouse of',1,NULL,NULL),(220,110,2,'b_a',103,'Spouse of',201,'Spouse of',1,NULL,NULL),(221,111,1,'a_b',114,'Child of',107,'Parent of',1,NULL,NULL),(222,111,1,'b_a',107,'Parent of',114,'Child of',1,NULL,NULL),(223,112,1,'a_b',70,'Child of',107,'Parent of',1,NULL,NULL),(224,112,1,'b_a',107,'Parent of',70,'Child of',1,NULL,NULL),(225,113,1,'a_b',114,'Child of',68,'Parent of',1,NULL,NULL),(226,113,1,'b_a',68,'Parent of',114,'Child of',1,NULL,NULL),(227,114,1,'a_b',70,'Child of',68,'Parent of',1,NULL,NULL),(228,114,1,'b_a',68,'Parent of',70,'Child of',1,NULL,NULL),(229,115,4,'a_b',70,'Sibling of',114,'Sibling of',1,NULL,NULL),(230,115,4,'b_a',114,'Sibling of',70,'Sibling of',1,NULL,NULL),(231,116,8,'a_b',68,'Household Member of',177,'Household Member is',1,NULL,NULL),(232,116,8,'b_a',177,'Household Member is',68,'Household Member of',1,NULL,NULL),(233,117,8,'a_b',114,'Household Member of',177,'Household Member is',1,NULL,NULL),(234,117,8,'b_a',177,'Household Member is',114,'Household Member of',1,NULL,NULL),(235,118,8,'a_b',70,'Household Member of',177,'Household Member is',1,NULL,NULL),(236,118,8,'b_a',177,'Household Member is',70,'Household Member of',1,NULL,NULL),(237,119,7,'a_b',107,'Head of Household for',177,'Head of Household is',1,NULL,NULL),(238,119,7,'b_a',177,'Head of Household is',107,'Head of Household for',1,NULL,NULL),(239,120,2,'a_b',68,'Spouse of',107,'Spouse of',1,NULL,NULL),(240,120,2,'b_a',107,'Spouse of',68,'Spouse of',1,NULL,NULL),(241,121,1,'a_b',140,'Child of',10,'Parent of',1,NULL,NULL),(242,121,1,'b_a',10,'Parent of',140,'Child of',1,NULL,NULL),(243,122,1,'a_b',58,'Child of',10,'Parent of',1,NULL,NULL),(244,122,1,'b_a',10,'Parent of',58,'Child of',1,NULL,NULL),(245,123,1,'a_b',140,'Child of',130,'Parent of',1,NULL,NULL),(246,123,1,'b_a',130,'Parent of',140,'Child of',1,NULL,NULL),(247,124,1,'a_b',58,'Child of',130,'Parent of',1,NULL,NULL),(248,124,1,'b_a',130,'Parent of',58,'Child of',1,NULL,NULL),(249,125,4,'a_b',58,'Sibling of',140,'Sibling of',1,NULL,NULL),(250,125,4,'b_a',140,'Sibling of',58,'Sibling of',1,NULL,NULL),(251,126,8,'a_b',130,'Household Member of',150,'Household Member is',1,NULL,NULL),(252,126,8,'b_a',150,'Household Member is',130,'Household Member of',1,NULL,NULL),(253,127,8,'a_b',140,'Household Member of',150,'Household Member is',1,NULL,NULL),(254,127,8,'b_a',150,'Household Member is',140,'Household Member of',1,NULL,NULL),(255,128,8,'a_b',58,'Household Member of',150,'Household Member is',1,NULL,NULL),(256,128,8,'b_a',150,'Household Member is',58,'Household Member of',1,NULL,NULL),(257,129,7,'a_b',10,'Head of Household for',150,'Head of Household is',1,NULL,NULL),(258,129,7,'b_a',150,'Head of Household is',10,'Head of Household for',1,NULL,NULL),(259,130,2,'a_b',130,'Spouse of',10,'Spouse of',1,NULL,NULL),(260,130,2,'b_a',10,'Spouse of',130,'Spouse of',1,NULL,NULL),(261,131,1,'a_b',78,'Child of',187,'Parent of',1,NULL,NULL),(262,131,1,'b_a',187,'Parent of',78,'Child of',1,NULL,NULL),(263,132,1,'a_b',181,'Child of',187,'Parent of',1,NULL,NULL),(264,132,1,'b_a',187,'Parent of',181,'Child of',1,NULL,NULL),(265,133,1,'a_b',78,'Child of',48,'Parent of',1,NULL,NULL),(266,133,1,'b_a',48,'Parent of',78,'Child of',1,NULL,NULL),(267,134,1,'a_b',181,'Child of',48,'Parent of',1,NULL,NULL),(268,134,1,'b_a',48,'Parent of',181,'Child of',1,NULL,NULL),(269,135,4,'a_b',181,'Sibling of',78,'Sibling of',1,NULL,NULL),(270,135,4,'b_a',78,'Sibling of',181,'Sibling of',1,NULL,NULL),(271,136,8,'a_b',48,'Household Member of',72,'Household Member is',1,NULL,NULL),(272,136,8,'b_a',72,'Household Member is',48,'Household Member of',1,NULL,NULL),(273,137,8,'a_b',78,'Household Member of',72,'Household Member is',1,NULL,NULL),(274,137,8,'b_a',72,'Household Member is',78,'Household Member of',1,NULL,NULL),(275,138,8,'a_b',181,'Household Member of',72,'Household Member is',1,NULL,NULL),(276,138,8,'b_a',72,'Household Member is',181,'Household Member of',1,NULL,NULL),(277,139,7,'a_b',187,'Head of Household for',72,'Head of Household is',0,NULL,NULL),(278,139,7,'b_a',72,'Head of Household is',187,'Head of Household for',0,NULL,NULL),(279,140,2,'a_b',48,'Spouse of',187,'Spouse of',0,NULL,NULL),(280,140,2,'b_a',187,'Spouse of',48,'Spouse of',0,NULL,NULL),(281,141,1,'a_b',20,'Child of',135,'Parent of',1,NULL,NULL),(282,141,1,'b_a',135,'Parent of',20,'Child of',1,NULL,NULL),(283,142,1,'a_b',13,'Child of',135,'Parent of',1,NULL,NULL),(284,142,1,'b_a',135,'Parent of',13,'Child of',1,NULL,NULL),(285,143,1,'a_b',20,'Child of',43,'Parent of',1,NULL,NULL),(286,143,1,'b_a',43,'Parent of',20,'Child of',1,NULL,NULL),(287,144,1,'a_b',13,'Child of',43,'Parent of',1,NULL,NULL),(288,144,1,'b_a',43,'Parent of',13,'Child of',1,NULL,NULL),(289,145,4,'a_b',13,'Sibling of',20,'Sibling of',1,NULL,NULL),(290,145,4,'b_a',20,'Sibling of',13,'Sibling of',1,NULL,NULL),(291,146,8,'a_b',43,'Household Member of',21,'Household Member is',1,NULL,NULL),(292,146,8,'b_a',21,'Household Member is',43,'Household Member of',1,NULL,NULL),(293,147,8,'a_b',20,'Household Member of',21,'Household Member is',1,NULL,NULL),(294,147,8,'b_a',21,'Household Member is',20,'Household Member of',1,NULL,NULL),(295,148,8,'a_b',13,'Household Member of',21,'Household Member is',1,NULL,NULL),(296,148,8,'b_a',21,'Household Member is',13,'Household Member of',1,NULL,NULL),(297,149,7,'a_b',135,'Head of Household for',21,'Head of Household is',0,NULL,NULL),(298,149,7,'b_a',21,'Head of Household is',135,'Head of Household for',0,NULL,NULL),(299,150,2,'a_b',43,'Spouse of',135,'Spouse of',0,NULL,NULL),(300,150,2,'b_a',135,'Spouse of',43,'Spouse of',0,NULL,NULL),(301,151,1,'a_b',89,'Child of',194,'Parent of',1,NULL,NULL),(302,151,1,'b_a',194,'Parent of',89,'Child of',1,NULL,NULL),(303,152,1,'a_b',75,'Child of',194,'Parent of',1,NULL,NULL),(304,152,1,'b_a',194,'Parent of',75,'Child of',1,NULL,NULL),(305,153,1,'a_b',89,'Child of',131,'Parent of',1,NULL,NULL),(306,153,1,'b_a',131,'Parent of',89,'Child of',1,NULL,NULL),(307,154,1,'a_b',75,'Child of',131,'Parent of',1,NULL,NULL),(308,154,1,'b_a',131,'Parent of',75,'Child of',1,NULL,NULL),(309,155,4,'a_b',75,'Sibling of',89,'Sibling of',1,NULL,NULL),(310,155,4,'b_a',89,'Sibling of',75,'Sibling of',1,NULL,NULL),(311,156,8,'a_b',131,'Household Member of',19,'Household Member is',1,NULL,NULL),(312,156,8,'b_a',19,'Household Member is',131,'Household Member of',1,NULL,NULL),(313,157,8,'a_b',89,'Household Member of',19,'Household Member is',1,NULL,NULL),(314,157,8,'b_a',19,'Household Member is',89,'Household Member of',1,NULL,NULL),(315,158,8,'a_b',75,'Household Member of',19,'Household Member is',1,NULL,NULL),(316,158,8,'b_a',19,'Household Member is',75,'Household Member of',1,NULL,NULL),(317,159,7,'a_b',194,'Head of Household for',19,'Head of Household is',0,NULL,NULL),(318,159,7,'b_a',19,'Head of Household is',194,'Head of Household for',0,NULL,NULL),(319,160,2,'a_b',131,'Spouse of',194,'Spouse of',0,NULL,NULL),(320,160,2,'b_a',194,'Spouse of',131,'Spouse of',0,NULL,NULL),(321,161,1,'a_b',121,'Child of',104,'Parent of',1,NULL,NULL),(322,161,1,'b_a',104,'Parent of',121,'Child of',1,NULL,NULL),(323,162,1,'a_b',39,'Child of',104,'Parent of',1,NULL,NULL),(324,162,1,'b_a',104,'Parent of',39,'Child of',1,NULL,NULL),(325,163,1,'a_b',121,'Child of',153,'Parent of',1,NULL,NULL),(326,163,1,'b_a',153,'Parent of',121,'Child of',1,NULL,NULL),(327,164,1,'a_b',39,'Child of',153,'Parent of',1,NULL,NULL),(328,164,1,'b_a',153,'Parent of',39,'Child of',1,NULL,NULL),(329,165,4,'a_b',39,'Sibling of',121,'Sibling of',1,NULL,NULL),(330,165,4,'b_a',121,'Sibling of',39,'Sibling of',1,NULL,NULL),(331,166,8,'a_b',153,'Household Member of',168,'Household Member is',1,NULL,NULL),(332,166,8,'b_a',168,'Household Member is',153,'Household Member of',1,NULL,NULL),(333,167,8,'a_b',121,'Household Member of',168,'Household Member is',1,NULL,NULL),(334,167,8,'b_a',168,'Household Member is',121,'Household Member of',1,NULL,NULL),(335,168,8,'a_b',39,'Household Member of',168,'Household Member is',1,NULL,NULL),(336,168,8,'b_a',168,'Household Member is',39,'Household Member of',1,NULL,NULL),(337,169,7,'a_b',104,'Head of Household for',168,'Head of Household is',1,NULL,NULL),(338,169,7,'b_a',168,'Head of Household is',104,'Head of Household for',1,NULL,NULL),(339,170,2,'a_b',153,'Spouse of',104,'Spouse of',1,NULL,NULL),(340,170,2,'b_a',104,'Spouse of',153,'Spouse of',1,NULL,NULL),(341,171,1,'a_b',36,'Child of',42,'Parent of',1,NULL,NULL),(342,171,1,'b_a',42,'Parent of',36,'Child of',1,NULL,NULL),(343,172,1,'a_b',26,'Child of',42,'Parent of',1,NULL,NULL),(344,172,1,'b_a',42,'Parent of',26,'Child of',1,NULL,NULL),(345,173,1,'a_b',36,'Child of',189,'Parent of',1,NULL,NULL),(346,173,1,'b_a',189,'Parent of',36,'Child of',1,NULL,NULL),(347,174,1,'a_b',26,'Child of',189,'Parent of',1,NULL,NULL),(348,174,1,'b_a',189,'Parent of',26,'Child of',1,NULL,NULL),(349,175,4,'a_b',26,'Sibling of',36,'Sibling of',1,NULL,NULL),(350,175,4,'b_a',36,'Sibling of',26,'Sibling of',1,NULL,NULL),(351,176,8,'a_b',189,'Household Member of',101,'Household Member is',1,NULL,NULL),(352,176,8,'b_a',101,'Household Member is',189,'Household Member of',1,NULL,NULL),(353,177,8,'a_b',36,'Household Member of',101,'Household Member is',1,NULL,NULL),(354,177,8,'b_a',101,'Household Member is',36,'Household Member of',1,NULL,NULL),(355,178,8,'a_b',26,'Household Member of',101,'Household Member is',1,NULL,NULL),(356,178,8,'b_a',101,'Household Member is',26,'Household Member of',1,NULL,NULL),(357,179,7,'a_b',42,'Head of Household for',101,'Head of Household is',1,NULL,NULL),(358,179,7,'b_a',101,'Head of Household is',42,'Head of Household for',1,NULL,NULL),(359,180,2,'a_b',189,'Spouse of',42,'Spouse of',1,NULL,NULL),(360,180,2,'b_a',42,'Spouse of',189,'Spouse of',1,NULL,NULL),(361,181,1,'a_b',69,'Child of',171,'Parent of',1,NULL,NULL),(362,181,1,'b_a',171,'Parent of',69,'Child of',1,NULL,NULL),(363,182,1,'a_b',109,'Child of',171,'Parent of',1,NULL,NULL),(364,182,1,'b_a',171,'Parent of',109,'Child of',1,NULL,NULL),(365,183,1,'a_b',69,'Child of',200,'Parent of',1,NULL,NULL),(366,183,1,'b_a',200,'Parent of',69,'Child of',1,NULL,NULL),(367,184,1,'a_b',109,'Child of',200,'Parent of',1,NULL,NULL),(368,184,1,'b_a',200,'Parent of',109,'Child of',1,NULL,NULL),(369,185,4,'a_b',109,'Sibling of',69,'Sibling of',1,NULL,NULL),(370,185,4,'b_a',69,'Sibling of',109,'Sibling of',1,NULL,NULL),(371,186,8,'a_b',200,'Household Member of',98,'Household Member is',1,NULL,NULL),(372,186,8,'b_a',98,'Household Member is',200,'Household Member of',1,NULL,NULL),(373,187,8,'a_b',69,'Household Member of',98,'Household Member is',1,NULL,NULL),(374,187,8,'b_a',98,'Household Member is',69,'Household Member of',1,NULL,NULL),(375,188,8,'a_b',109,'Household Member of',98,'Household Member is',1,NULL,NULL),(376,188,8,'b_a',98,'Household Member is',109,'Household Member of',1,NULL,NULL),(377,189,7,'a_b',171,'Head of Household for',98,'Head of Household is',1,NULL,NULL),(378,189,7,'b_a',98,'Head of Household is',171,'Head of Household for',1,NULL,NULL),(379,190,2,'a_b',200,'Spouse of',171,'Spouse of',1,NULL,NULL),(380,190,2,'b_a',171,'Spouse of',200,'Spouse of',1,NULL,NULL),(381,191,1,'a_b',158,'Child of',25,'Parent of',1,NULL,NULL),(382,191,1,'b_a',25,'Parent of',158,'Child of',1,NULL,NULL),(383,192,1,'a_b',4,'Child of',25,'Parent of',1,NULL,NULL),(384,192,1,'b_a',25,'Parent of',4,'Child of',1,NULL,NULL),(385,193,1,'a_b',158,'Child of',180,'Parent of',1,NULL,NULL),(386,193,1,'b_a',180,'Parent of',158,'Child of',1,NULL,NULL),(387,194,1,'a_b',4,'Child of',180,'Parent of',1,NULL,NULL),(388,194,1,'b_a',180,'Parent of',4,'Child of',1,NULL,NULL),(389,195,4,'a_b',4,'Sibling of',158,'Sibling of',1,NULL,NULL),(390,195,4,'b_a',158,'Sibling of',4,'Sibling of',1,NULL,NULL),(391,196,8,'a_b',180,'Household Member of',163,'Household Member is',1,NULL,NULL),(392,196,8,'b_a',163,'Household Member is',180,'Household Member of',1,NULL,NULL),(393,197,8,'a_b',158,'Household Member of',163,'Household Member is',1,NULL,NULL),(394,197,8,'b_a',163,'Household Member is',158,'Household Member of',1,NULL,NULL),(395,198,8,'a_b',4,'Household Member of',163,'Household Member is',1,NULL,NULL),(396,198,8,'b_a',163,'Household Member is',4,'Household Member of',1,NULL,NULL),(397,199,7,'a_b',25,'Head of Household for',163,'Head of Household is',0,NULL,NULL),(398,199,7,'b_a',163,'Head of Household is',25,'Head of Household for',0,NULL,NULL),(399,200,2,'a_b',180,'Spouse of',25,'Spouse of',0,NULL,NULL),(400,200,2,'b_a',25,'Spouse of',180,'Spouse of',0,NULL,NULL),(401,201,5,'a_b',26,'Employee of',14,'Employer of',1,NULL,NULL),(402,201,5,'b_a',14,'Employer of',26,'Employee of',1,NULL,NULL),(403,202,5,'a_b',36,'Employee of',37,'Employer of',1,NULL,NULL),(404,202,5,'b_a',37,'Employer of',36,'Employee of',1,NULL,NULL),(405,203,5,'a_b',20,'Employee of',46,'Employer of',1,NULL,NULL),(406,203,5,'b_a',46,'Employer of',20,'Employee of',1,NULL,NULL),(407,204,5,'a_b',89,'Employee of',50,'Employer of',1,NULL,NULL),(408,204,5,'b_a',50,'Employer of',89,'Employee of',1,NULL,NULL),(409,205,5,'a_b',189,'Employee of',56,'Employer of',1,NULL,NULL),(410,205,5,'b_a',56,'Employer of',189,'Employee of',1,NULL,NULL),(411,206,5,'a_b',29,'Employee of',62,'Employer of',1,NULL,NULL),(412,206,5,'b_a',62,'Employer of',29,'Employee of',1,NULL,NULL),(413,207,5,'a_b',75,'Employee of',73,'Employer of',1,NULL,NULL),(414,207,5,'b_a',73,'Employer of',75,'Employee of',1,NULL,NULL),(415,208,5,'a_b',197,'Employee of',86,'Employer of',1,NULL,NULL),(416,208,5,'b_a',86,'Employer of',197,'Employee of',1,NULL,NULL),(417,209,5,'a_b',120,'Employee of',91,'Employer of',1,NULL,NULL),(418,209,5,'b_a',91,'Employer of',120,'Employee of',1,NULL,NULL),(419,210,5,'a_b',151,'Employee of',105,'Employer of',1,NULL,NULL),(420,210,5,'b_a',105,'Employer of',151,'Employee of',1,NULL,NULL),(421,211,5,'a_b',85,'Employee of',117,'Employer of',1,NULL,NULL),(422,211,5,'b_a',117,'Employer of',85,'Employee of',1,NULL,NULL),(423,212,5,'a_b',34,'Employee of',137,'Employer of',1,NULL,NULL),(424,212,5,'b_a',137,'Employer of',34,'Employee of',1,NULL,NULL),(425,213,5,'a_b',170,'Employee of',142,'Employer of',1,NULL,NULL),(426,213,5,'b_a',142,'Employer of',170,'Employee of',1,NULL,NULL),(427,214,5,'a_b',18,'Employee of',144,'Employer of',1,NULL,NULL),(428,214,5,'b_a',144,'Employer of',18,'Employee of',1,NULL,NULL),(429,215,5,'a_b',104,'Employee of',148,'Employer of',1,NULL,NULL),(430,215,5,'b_a',148,'Employer of',104,'Employee of',1,NULL,NULL),(431,216,5,'a_b',57,'Employee of',157,'Employer of',1,NULL,NULL),(432,216,5,'b_a',157,'Employer of',57,'Employee of',1,NULL,NULL),(433,217,5,'a_b',185,'Employee of',174,'Employer of',1,NULL,NULL),(434,217,5,'b_a',174,'Employer of',185,'Employee of',1,NULL,NULL),(435,218,5,'a_b',186,'Employee of',178,'Employer of',1,NULL,NULL),(436,218,5,'b_a',178,'Employer of',186,'Employee of',1,NULL,NULL); +/*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Dumping data for table `civicrm_relationship_type` -- @@ -1337,7 +1347,7 @@ 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,50,2,'2020-05-13 14:53:48','Email','Added',NULL),(2,43,2,'2020-04-25 08:07:17','Admin','Added',NULL),(3,71,2,'2019-12-05 08:41:06','Email','Added',NULL),(4,177,2,'2020-01-24 06:40:14','Admin','Added',NULL),(5,110,2,'2020-04-02 11:48:17','Email','Added',NULL),(6,97,2,'2019-09-18 14:11:28','Admin','Added',NULL),(7,56,2,'2019-11-07 19:22:32','Admin','Added',NULL),(8,75,2,'2020-05-19 07:43:11','Admin','Added',NULL),(9,91,2,'2020-01-12 20:41:30','Admin','Added',NULL),(10,172,2,'2020-01-26 23:36:11','Email','Added',NULL),(11,37,2,'2019-09-26 19:43:21','Email','Added',NULL),(12,175,2,'2019-12-18 01:13:06','Email','Added',NULL),(13,15,2,'2019-12-12 12:08:24','Email','Added',NULL),(14,106,2,'2019-08-13 15:31:19','Email','Added',NULL),(15,115,2,'2019-10-25 19:36:36','Admin','Added',NULL),(16,147,2,'2019-10-06 03:04:07','Admin','Added',NULL),(17,198,2,'2019-09-02 22:34:44','Email','Added',NULL),(18,53,2,'2019-11-26 21:03:47','Email','Added',NULL),(19,99,2,'2019-09-10 22:14:27','Admin','Added',NULL),(20,146,2,'2020-02-21 01:19:57','Email','Added',NULL),(21,22,2,'2019-10-08 10:33:26','Admin','Added',NULL),(22,18,2,'2020-01-23 21:30:25','Email','Added',NULL),(23,108,2,'2020-03-26 08:34:08','Email','Added',NULL),(24,27,2,'2019-07-24 20:48:50','Admin','Added',NULL),(25,26,2,'2019-10-10 04:18:02','Email','Added',NULL),(26,92,2,'2019-09-14 04:18:10','Email','Added',NULL),(27,44,2,'2019-10-07 17:54:01','Admin','Added',NULL),(28,121,2,'2019-06-17 15:50:50','Admin','Added',NULL),(29,47,2,'2020-06-03 16:46:48','Admin','Added',NULL),(30,138,2,'2019-08-20 09:45:06','Email','Added',NULL),(31,34,2,'2019-10-13 23:53:58','Email','Added',NULL),(32,85,2,'2020-05-30 16:55:27','Admin','Added',NULL),(33,66,2,'2019-06-15 19:00:37','Admin','Added',NULL),(34,157,2,'2020-04-23 19:15:35','Admin','Added',NULL),(35,119,2,'2019-07-24 01:32:41','Admin','Added',NULL),(36,10,2,'2020-05-18 05:33:25','Email','Added',NULL),(37,159,2,'2020-01-20 22:08:22','Admin','Added',NULL),(38,194,2,'2019-08-23 13:13:22','Email','Added',NULL),(39,142,2,'2020-04-08 21:37:01','Email','Added',NULL),(40,61,2,'2020-03-10 17:34:44','Email','Added',NULL),(41,164,2,'2019-11-24 19:32:02','Email','Added',NULL),(42,134,2,'2019-07-06 20:16:56','Email','Added',NULL),(43,41,2,'2019-12-12 16:46:00','Admin','Added',NULL),(44,116,2,'2019-08-23 02:06:59','Admin','Added',NULL),(45,188,2,'2019-06-26 20:49:22','Email','Added',NULL),(46,120,2,'2020-04-19 10:11:06','Admin','Added',NULL),(47,16,2,'2020-05-14 05:05:59','Email','Added',NULL),(48,29,2,'2020-05-27 19:44:18','Email','Added',NULL),(49,128,2,'2020-03-18 13:14:49','Email','Added',NULL),(50,118,2,'2020-01-20 16:50:23','Email','Added',NULL),(51,103,2,'2020-01-29 13:06:47','Admin','Added',NULL),(52,143,2,'2019-08-06 06:47:09','Admin','Added',NULL),(53,149,2,'2019-10-15 16:39:59','Admin','Added',NULL),(54,136,2,'2020-03-11 04:03:13','Email','Added',NULL),(55,24,2,'2019-07-10 08:02:57','Email','Added',NULL),(56,36,2,'2019-08-22 00:56:45','Admin','Added',NULL),(57,7,2,'2020-02-24 20:30:37','Email','Added',NULL),(58,167,2,'2020-01-23 23:25:37','Admin','Added',NULL),(59,28,2,'2019-08-14 03:07:08','Email','Added',NULL),(60,145,2,'2020-02-04 15:15:13','Email','Added',NULL),(61,158,3,'2019-08-28 18:49:52','Admin','Added',NULL),(62,20,3,'2019-12-21 01:23:38','Email','Added',NULL),(63,199,3,'2020-04-24 14:05:33','Admin','Added',NULL),(64,112,3,'2019-12-31 06:31:48','Admin','Added',NULL),(65,93,3,'2019-09-05 23:32:40','Admin','Added',NULL),(66,69,3,'2019-07-23 03:20:42','Email','Added',NULL),(67,21,3,'2020-05-23 11:13:45','Admin','Added',NULL),(68,137,3,'2019-07-07 18:28:15','Admin','Added',NULL),(69,152,3,'2019-10-25 17:27:58','Admin','Added',NULL),(70,12,3,'2019-10-30 05:31:45','Email','Added',NULL),(71,129,3,'2019-10-16 21:40:00','Admin','Added',NULL),(72,81,3,'2020-03-21 22:25:15','Admin','Added',NULL),(73,185,3,'2019-08-26 12:30:47','Admin','Added',NULL),(74,30,3,'2019-06-14 16:15:18','Email','Added',NULL),(75,62,3,'2019-10-14 11:20:27','Admin','Added',NULL),(76,50,4,'2020-02-19 14:53:47','Email','Added',NULL),(77,75,4,'2019-09-22 19:15:11','Admin','Added',NULL),(78,115,4,'2019-11-10 22:22:54','Email','Added',NULL),(79,18,4,'2019-09-10 04:03:22','Admin','Added',NULL),(80,47,4,'2019-09-15 10:32:19','Email','Added',NULL),(81,10,4,'2019-09-14 09:37:32','Email','Added',NULL),(82,41,4,'2020-05-09 02:24:04','Email','Added',NULL),(83,118,4,'2019-12-18 12:17:55','Admin','Added',NULL); +INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES (1,169,2,'2019-11-20 21:26:21','Admin','Added',NULL),(2,24,2,'2019-12-23 11:52:30','Email','Added',NULL),(3,124,2,'2019-11-18 09:34:53','Email','Added',NULL),(4,57,2,'2019-09-21 08:05:46','Admin','Added',NULL),(5,17,2,'2019-11-27 11:47:55','Email','Added',NULL),(6,182,2,'2020-03-12 13:17:00','Email','Added',NULL),(7,99,2,'2019-08-04 20:42:42','Email','Added',NULL),(8,138,2,'2020-07-14 02:26:21','Email','Added',NULL),(9,81,2,'2020-02-17 20:51:29','Email','Added',NULL),(10,53,2,'2019-12-12 16:46:40','Email','Added',NULL),(11,15,2,'2020-06-08 11:55:39','Email','Added',NULL),(12,33,2,'2019-12-02 00:17:20','Email','Added',NULL),(13,179,2,'2019-09-18 20:51:54','Admin','Added',NULL),(14,83,2,'2020-02-21 16:59:13','Email','Added',NULL),(15,164,2,'2019-09-04 18:42:28','Email','Added',NULL),(16,146,2,'2019-08-16 17:31:30','Admin','Added',NULL),(17,120,2,'2019-10-25 00:35:51','Admin','Added',NULL),(18,193,2,'2020-05-08 16:05:56','Email','Added',NULL),(19,76,2,'2019-08-18 21:58:45','Email','Added',NULL),(20,162,2,'2019-08-25 15:21:21','Email','Added',NULL),(21,66,2,'2019-08-21 12:54:54','Admin','Added',NULL),(22,92,2,'2019-08-30 06:33:41','Admin','Added',NULL),(23,167,2,'2020-03-26 10:25:26','Email','Added',NULL),(24,65,2,'2020-04-21 20:54:05','Admin','Added',NULL),(25,190,2,'2019-09-11 17:19:20','Email','Added',NULL),(26,184,2,'2019-12-21 22:09:38','Email','Added',NULL),(27,67,2,'2019-08-13 13:10:41','Email','Added',NULL),(28,185,2,'2020-05-16 21:14:47','Admin','Added',NULL),(29,183,2,'2020-06-23 07:14:06','Email','Added',NULL),(30,175,2,'2019-12-09 11:30:16','Admin','Added',NULL),(31,129,2,'2020-03-06 02:22:27','Email','Added',NULL),(32,197,2,'2019-08-28 11:28:01','Email','Added',NULL),(33,122,2,'2019-09-12 07:55:23','Email','Added',NULL),(34,7,2,'2019-11-13 02:54:04','Admin','Added',NULL),(35,154,2,'2019-08-30 21:35:11','Email','Added',NULL),(36,51,2,'2020-03-13 22:09:33','Email','Added',NULL),(37,97,2,'2020-01-04 06:55:30','Email','Added',NULL),(38,111,2,'2020-04-21 03:12:40','Admin','Added',NULL),(39,143,2,'2019-11-15 07:26:31','Email','Added',NULL),(40,77,2,'2020-04-10 22:45:14','Email','Added',NULL),(41,186,2,'2020-05-11 19:35:51','Admin','Added',NULL),(42,12,2,'2020-02-20 08:29:05','Admin','Added',NULL),(43,8,2,'2020-01-17 21:34:08','Admin','Added',NULL),(44,84,2,'2020-05-11 14:40:31','Email','Added',NULL),(45,71,2,'2019-12-18 13:22:22','Admin','Added',NULL),(46,3,2,'2020-06-23 16:06:41','Email','Added',NULL),(47,123,2,'2020-04-15 15:26:58','Admin','Added',NULL),(48,119,2,'2020-02-11 11:16:39','Admin','Added',NULL),(49,161,2,'2019-09-14 18:37:42','Admin','Added',NULL),(50,145,2,'2020-05-23 07:34:56','Email','Added',NULL),(51,60,2,'2019-08-22 10:28:33','Email','Added',NULL),(52,31,2,'2019-11-13 10:56:38','Email','Added',NULL),(53,55,2,'2020-02-13 23:43:08','Admin','Added',NULL),(54,88,2,'2019-12-24 11:11:02','Email','Added',NULL),(55,64,2,'2020-02-03 07:32:36','Admin','Added',NULL),(56,41,2,'2019-08-08 18:06:57','Email','Added',NULL),(57,30,2,'2020-04-26 23:17:36','Email','Added',NULL),(58,2,2,'2020-01-16 00:51:51','Email','Added',NULL),(59,156,2,'2019-11-24 19:05:36','Email','Added',NULL),(60,118,2,'2020-05-08 22:41:55','Admin','Added',NULL),(61,87,3,'2020-02-12 19:47:53','Email','Added',NULL),(62,49,3,'2019-11-24 14:21:59','Email','Added',NULL),(63,23,3,'2020-03-20 02:01:17','Email','Added',NULL),(64,5,3,'2020-02-12 06:13:02','Email','Added',NULL),(65,93,3,'2020-03-26 23:29:51','Admin','Added',NULL),(66,18,3,'2019-09-26 12:23:17','Email','Added',NULL),(67,6,3,'2019-09-19 13:40:19','Admin','Added',NULL),(68,199,3,'2020-04-23 00:44:59','Email','Added',NULL),(69,176,3,'2020-02-29 17:05:30','Email','Added',NULL),(70,132,3,'2020-02-17 15:44:05','Admin','Added',NULL),(71,80,3,'2020-03-01 11:59:37','Email','Added',NULL),(72,45,3,'2020-01-23 09:13:35','Admin','Added',NULL),(73,44,3,'2019-08-22 22:38:26','Admin','Added',NULL),(74,96,3,'2020-07-20 11:43:21','Email','Added',NULL),(75,166,3,'2019-10-22 19:46:03','Email','Added',NULL),(76,169,4,'2020-04-20 15:35:07','Email','Added',NULL),(77,138,4,'2019-09-14 05:27:21','Admin','Added',NULL),(78,164,4,'2019-12-21 08:53:52','Email','Added',NULL),(79,92,4,'2019-11-08 12:12:13','Email','Added',NULL),(80,183,4,'2020-02-20 08:24:27','Email','Added',NULL),(81,51,4,'2020-05-18 10:54:03','Admin','Added',NULL),(82,8,4,'2019-08-23 17:30:49','Admin','Added',NULL),(83,145,4,'2020-06-15 07:19:20','Email','Added',NULL); /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */; UNLOCK TABLES; @@ -1433,7 +1443,7 @@ 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,74,'http://urbanpeacefund.org',1),(2,111,'http://sierrapeaceinitiative.org',1),(3,23,'http://creativeeducation.org',1),(4,65,'http://indiahomahealthcollective.org',1),(5,82,'http://pineassociation.org',1),(6,123,'http://mlkingeducation.org',1),(7,55,'http://mainarts.org',1),(8,144,'http://urbaninitiative.org',1),(9,63,'http://nyhealthsystems.org',1),(10,178,'http://wisconsinwellness.org',1),(11,101,'http://spactionservices.org',1),(12,135,'http://austinhealth.org',1),(13,39,'http://farmingtonservices.org',1),(14,60,'http://paluxyenvironmental.org',1),(15,182,'http://statespartnership.org',1),(16,105,'http://unitedtechnology.org',1); +INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES (1,174,'http://northpointdevelopmentschool.org',1),(2,105,'http://urbanculture.org',1),(3,144,'http://globalempowerment.org',1),(4,148,'http://dallaspartnership.org',1),(5,90,'http://rebeccafellowship.org',1),(6,86,'http://beechdevelopmenttrust.org',1),(7,56,'http://kentuckyinitiative.org',1),(8,137,'http://aptossustainability.org',1),(9,14,'http://bltechnologyfund.org',1),(10,178,'http://sierrasoftwaresolutions.org',1),(11,117,'http://maincollective.org',1),(12,157,'http://moxahaladevelopmentalliance.org',1),(13,91,'http://greenpoetry.org',1),(14,79,'http://ogdensburgpoetry.org',1),(15,37,'http://urbanactionschool.org',1),(16,46,'http://greeninitiative.org',1),(17,50,'http://collegehealthassociation.org',1); /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */; UNLOCK TABLES; @@ -1465,7 +1475,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2020-06-10 14:45:54 +-- Dump completed on 2020-07-24 15:34:05 -- +--------------------------------------------------------------------+ -- | Copyright CiviCRM LLC. All rights reserved. | -- | | @@ -1559,8 +1569,8 @@ INSERT INTO `civicrm_option_value` (`option_group_id`, `label`, `value`, `name`, DROP TABLE IF EXISTS `civicrm_value_donor_information_3`; CREATE TABLE IF NOT EXISTS `civicrm_value_donor_information_3` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Default MySQL primary key', `entity_id` int(10) unsigned NOT NULL COMMENT 'Table that this extends', `known_areas_of_interest_5` text COLLATE utf8_unicode_ci, `how_long_have_you_been_a_donor_6` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_entity_id` (`entity_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 8, 1, 1, 0, 'dummy', NULL, NULL, 'http://dummy.com', NULL, 'http://dummyrecur.com', NULL, NULL, 'Payment_Dummy', 1, 1, 1); -INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 8, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Payment_Dummy', 1, 1, 1); +INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 7, 1, 1, 0, 'dummy', NULL, NULL, 'http://dummy.com', NULL, 'http://dummyrecur.com', NULL, NULL, 'Payment_Dummy', 1, 1, 1); +INSERT INTO `civicrm_payment_processor` (`domain_id`, `name`, `description`, `payment_processor_type_id`, `is_active`, `is_default`, `is_test`, `user_name`, `password`, `signature`, `url_site`, `url_api`, `url_recur`, `url_button`, `subject`, `class_name`, `billing_mode`, `is_recur`, `payment_type`) VALUES (1, 'Test Processor', '', 7, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Payment_Dummy', 1, 1, 1); SELECT @dp := max(id) from civicrm_payment_processor where name = 'Test Processor' AND is_test = 0; SELECT @dpTest := max(id) from civicrm_payment_processor where name = 'Test Processor' AND is_test = 1; diff --git a/civicrm/templates/CRM/ACL/Form/ACL.tpl b/civicrm/templates/CRM/ACL/Form/ACL.tpl index fbecd9fce8..5c8bf2cc6d 100644 --- a/civicrm/templates/CRM/ACL/Form/ACL.tpl +++ b/civicrm/templates/CRM/ACL/Form/ACL.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-acl-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Delete will remove this permission from the specified ACL Role.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl b/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl index f905c4d583..764ebe85bd 100644 --- a/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl +++ b/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl @@ -14,7 +14,7 @@ {if $action eq 8} <div class="messages status no-popup"> <dl> - <dt><div class="icon inform-icon"></div></dt> + <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> diff --git a/civicrm/templates/CRM/ACL/Form/EntityRole.tpl b/civicrm/templates/CRM/ACL/Form/EntityRole.tpl index 75bf26e6a2..a2a8799c98 100644 --- a/civicrm/templates/CRM/ACL/Form/EntityRole.tpl +++ b/civicrm/templates/CRM/ACL/Form/EntityRole.tpl @@ -13,7 +13,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will remove this ACL Role Assignment.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Activity/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Activity/Form/Search/EmptyResults.tpl index 19eaaefeb2..1a4c04c173 100644 --- a/civicrm/templates/CRM/Activity/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Activity/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Activity/Form/Selector.tpl b/civicrm/templates/CRM/Activity/Form/Selector.tpl index cbd8d1c3a3..ab1e4f6e10 100644 --- a/civicrm/templates/CRM/Activity/Form/Selector.tpl +++ b/civicrm/templates/CRM/Activity/Form/Selector.tpl @@ -14,8 +14,8 @@ {strip} <table class="selector row-highlight"> - <thead> - <tr class="sticky"> + <thead class="sticky"> + <tr> {if !$single and $context eq 'Search' } <th scope="col" title="Select Rows">{$form.toggleSelect.html}</th> {/if} diff --git a/civicrm/templates/CRM/Activity/Form/Task/Delete.tpl b/civicrm/templates/CRM/Activity/Form/Task/Delete.tpl index fa8c71b915..d467db4b42 100644 --- a/civicrm/templates/CRM/Activity/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Activity/Form/Task/Delete.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-activity_delete-form-block"> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}Are you sure you want to delete the selected Activities?{/ts}</p> <p>{include file="CRM/Activity/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Activity/Form/Task/Print.tpl b/civicrm/templates/CRM/Activity/Form/Task/Print.tpl index 7fd288217c..d71d4408c4 100644 --- a/civicrm/templates/CRM/Activity/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Activity/Form/Task/Print.tpl @@ -67,7 +67,7 @@ {include file="CRM/common/formButtons.tpl" location="bottom"} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Activity/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Activity/Form/Task/SearchTaskHookSample.tpl index 8456ac24b4..4f1d28038a 100644 --- a/civicrm/templates/CRM/Activity/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Activity/Form/Task/SearchTaskHookSample.tpl @@ -37,7 +37,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Activity/Page/UserDashboard.tpl b/civicrm/templates/CRM/Activity/Page/UserDashboard.tpl index 8fb1f85f2b..14318c6eb7 100644 --- a/civicrm/templates/CRM/Activity/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Activity/Page/UserDashboard.tpl @@ -47,7 +47,7 @@ q="action=view&reset=1&id=`$row.activity_id`&cid=`$row.contact_id`&context=dashb {/strip} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no scheduled activities assigned to you.{/ts} </div> diff --git a/civicrm/templates/CRM/Admin/Form/ContactType.tpl b/civicrm/templates/CRM/Admin/Form/ContactType.tpl index ed5b54c53c..90c1962d33 100644 --- a/civicrm/templates/CRM/Admin/Form/ContactType.tpl +++ b/civicrm/templates/CRM/Admin/Form/ContactType.tpl @@ -12,7 +12,7 @@ <div class="crm-block crm-form-block crm-contact-type-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts}{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/Extensions.tpl b/civicrm/templates/CRM/Admin/Form/Extensions.tpl index bf114f4f69..6b9345faa6 100644 --- a/civicrm/templates/CRM/Admin/Form/Extensions.tpl +++ b/civicrm/templates/CRM/Admin/Form/Extensions.tpl @@ -12,20 +12,20 @@ <div class="crm-block crm-form-block crm-admin-optionvalue-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> - {ts}WARNING: Uninstalling this extension might result in the loss of all records which use the extension.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone. Please review the extension information below before you make final decision.{/ts} {ts}Do you want to continue?{/ts} + {icon icon="fa-info-circle"}{/icon} + {ts}WARNING: Uninstalling this extension might result in the loss of all records which use the extension.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone. Please review the extension information below before you make final decision.{/ts} {ts}Do you want to continue?{/ts} </div> {/if} {if $action eq 1} - <div class="messages status no-popup"> - <div class="icon inform-icon"></div> - {ts}Installing this extension will provide you with new functionality. Please make sure that the extension you're installing comes from a trusted source.{/ts} {ts}Do you want to continue?{/ts} + <div class="messages status no-popup"> + {icon icon="fa-info-circle"}{/icon} + {ts}Installing this extension will provide you with new functionality. Please make sure that the extension you're installing comes from a trusted source.{/ts} {ts}Do you want to continue?{/ts} </div> {/if} {if $action eq 2} - <div class="messages status no-popup"> - <div class="icon inform-icon"></div> - {ts}Downloading this extension will provide you with new functionality. Please make sure that the extension you're installing or upgrading comes from a trusted source.{/ts} {ts}Do you want to continue?{/ts} + <div class="messages status no-popup"> + {icon icon="fa-info-circle"}{/icon} + {ts}Downloading this extension will provide you with new functionality. Please make sure that the extension you're installing or upgrading comes from a trusted source.{/ts} {ts}Do you want to continue?{/ts} </div> {/if} {if $action eq 8 or $action eq 1 or $action eq 2} diff --git a/civicrm/templates/CRM/Admin/Form/Job.tpl b/civicrm/templates/CRM/Admin/Form/Job.tpl index 0fb95d4655..a4b78dda1d 100644 --- a/civicrm/templates/CRM/Admin/Form/Job.tpl +++ b/civicrm/templates/CRM/Admin/Form/Job.tpl @@ -14,12 +14,12 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this Scheduled Job will cause some important site functionality to stop working.{/ts} {ts}Do you want to continue?{/ts} </div> {elseif $action eq 4} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$jobName}Are you sure you would like to execute %1 job?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/LabelFormats.tpl b/civicrm/templates/CRM/Admin/Form/LabelFormats.tpl index c370eabac6..d5bcc2a96b 100644 --- a/civicrm/templates/CRM/Admin/Form/LabelFormats.tpl +++ b/civicrm/templates/CRM/Admin/Form/LabelFormats.tpl @@ -28,12 +28,12 @@ <div class="crm-block crm-form-block crm-labelFormat-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$formatName}WARNING: You are about to delete the Label Format titled <strong>%1</strong>.{/ts} {ts}Do you want to continue?{/ts} </div> {elseif $action eq 16384} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$formatName}Are you sure you would like to make a copy of the Label Format titled <strong>%1</strong>?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/LocationType.tpl b/civicrm/templates/CRM/Admin/Form/LocationType.tpl index 9e11f77665..2689513080 100644 --- a/civicrm/templates/CRM/Admin/Form/LocationType.tpl +++ b/civicrm/templates/CRM/Admin/Form/LocationType.tpl @@ -12,7 +12,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will result in the loss of all location type records which use the option.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/MailSettings.tpl b/civicrm/templates/CRM/Admin/Form/MailSettings.tpl index ee8987a22b..361ffe09e1 100644 --- a/civicrm/templates/CRM/Admin/Form/MailSettings.tpl +++ b/civicrm/templates/CRM/Admin/Form/MailSettings.tpl @@ -12,7 +12,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will result in the loss of mail settings data.{/ts} {ts}Do you want to continue?{/ts} </div> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> diff --git a/civicrm/templates/CRM/Admin/Form/Mapping.tpl b/civicrm/templates/CRM/Admin/Form/Mapping.tpl index af99fa96a2..b943bfd881 100644 --- a/civicrm/templates/CRM/Admin/Form/Mapping.tpl +++ b/civicrm/templates/CRM/Admin/Form/Mapping.tpl @@ -27,7 +27,7 @@ </table> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$mappingName}WARNING: Are you sure you want to delete mapping '<b>%1</b>'?{/ts} {ts}This action cannot be undone.{/ts} </div> <br /> diff --git a/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl b/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl index 28430b69e2..537e567516 100644 --- a/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl +++ b/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl @@ -22,7 +22,7 @@ <div class="form-item" id="message_templates"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$msg_title|escape}Do you want to delete the message template '%1'?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl b/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl index 60715a5e95..13f6ddee5b 100644 --- a/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl +++ b/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl @@ -12,7 +12,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option gruop will result in the loss of all records which use the option.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/Options.tpl b/civicrm/templates/CRM/Admin/Form/Options.tpl index 2a566c9b65..fa435bd63e 100644 --- a/civicrm/templates/CRM/Admin/Form/Options.tpl +++ b/civicrm/templates/CRM/Admin/Form/Options.tpl @@ -12,7 +12,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$gLabel}WARNING: Deleting this option will result in the loss of all %1 related records which use the option.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/ParticipantStatusType.tpl b/civicrm/templates/CRM/Admin/Form/ParticipantStatusType.tpl index a6c81f9b0d..6b159db7b2 100644 --- a/civicrm/templates/CRM/Admin/Form/ParticipantStatusType.tpl +++ b/civicrm/templates/CRM/Admin/Form/ParticipantStatusType.tpl @@ -15,7 +15,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this Participant Status will remove all of its settings.{/ts} {ts}Do you want to continue?{/ts} </div> <div>{include file="CRM/common/formButtons.tpl"} diff --git a/civicrm/templates/CRM/Admin/Form/PaymentProcessor.tpl b/civicrm/templates/CRM/Admin/Form/PaymentProcessor.tpl index 016fd7d846..67464d00e9 100644 --- a/civicrm/templates/CRM/Admin/Form/PaymentProcessor.tpl +++ b/civicrm/templates/CRM/Admin/Form/PaymentProcessor.tpl @@ -14,7 +14,7 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$deleteMessage|escape} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/PaymentProcessorType.tpl b/civicrm/templates/CRM/Admin/Form/PaymentProcessorType.tpl index ccb4a69705..3807b2e9b2 100644 --- a/civicrm/templates/CRM/Admin/Form/PaymentProcessorType.tpl +++ b/civicrm/templates/CRM/Admin/Form/PaymentProcessorType.tpl @@ -13,7 +13,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/PdfFormats.tpl b/civicrm/templates/CRM/Admin/Form/PdfFormats.tpl index 623c025254..7b6386d5d1 100644 --- a/civicrm/templates/CRM/Admin/Form/PdfFormats.tpl +++ b/civicrm/templates/CRM/Admin/Form/PdfFormats.tpl @@ -30,7 +30,7 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$formatName}WARNING: You are about to delete the PDF Page Format titled <strong>%1</strong>.{/ts}<p>{ts}This will remove the format from all Message Templates that use it. Do you want to continue?{/ts}</p> </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl b/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl index 0807cfffd2..b8bb250a0f 100644 --- a/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl +++ b/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl @@ -13,7 +13,7 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$reminderName}WARNING: You are about to delete the Reminder titled <strong>%1</strong>.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Debugging.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Debugging.tpl index 7a1c237412..5c785c8c8b 100644 --- a/civicrm/templates/CRM/Admin/Form/Setting/Debugging.tpl +++ b/civicrm/templates/CRM/Admin/Form/Setting/Debugging.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="help"> - {ts}In addition to the settings on this screen, there are a number of settings you can add to your sites's settings file (civicrm.settings.php) to provide additional debugging information.{/ts} {docURL page="Debugging for developers" resource="wiki"} + {ts}In addition to the settings on this screen, there are a number of settings you can add to your sites's settings file (civicrm.settings.php) to provide additional debugging information.{/ts} {docURL page="dev/tools/debugging/#changing-file-based-settings"} </div> <div class="crm-block crm-form-block crm-debugging-form-block"> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Mail.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Mail.tpl index 87318f8cc3..b73060be96 100644 --- a/civicrm/templates/CRM/Admin/Form/Setting/Mail.tpl +++ b/civicrm/templates/CRM/Admin/Form/Setting/Mail.tpl @@ -7,9 +7,8 @@ | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ *} -{capture assign=docLink}{docURL page="CiviMail Mailer Settings" text="CiviMail Mailer Settings and Optimization" resource="wiki"}{/capture} <div class="help"> - {ts 1=$docLink}These settings are used to configure mailer properties for the optional CiviMail component and may allow you to significantly optimize performance. Please read the %1 documentation, and make sure you understand it before modifying default values. (These settings are NOT used for the built-in 'Email - send now' feature).{/ts} + {ts}These settings are used to configure mailer properties for the optional CiviMail component and may allow you to significantly optimize performance. Please read the documentation, and make sure you understand it before modifying default values. (These settings are NOT used for the built-in 'Email - send now' feature).{/ts} {docURL page="sysadmin/setup/civimail/outbound"} </div> <div class="crm-block crm-form-block crm-mail-form-block"> {include file='CRM/Admin/Form/Setting/SettingForm.tpl'} diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl index 68ace19f26..00b453ce21 100644 --- a/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl +++ b/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl @@ -31,10 +31,14 @@ <td> {$form.logging.html}<br /> {if $validTriggerPermission} - <p class="description">{ts}If enabled, all actions will be logged with a complete record of changes.{/ts}</p> + {if $isMultilingual} + <p class="description">{ts}Logging is not supported in multilingual environments.{/ts}</p> + {else} + <p class="description">{ts}If enabled, all actions will be logged with a complete record of changes.{/ts}</p> + {/if} {else} <p class="description">{ts}In order to use this functionality, the installation's database user must have privileges to create triggers (in MySQL 5.0 – and in MySQL 5.1 if binary logging is enabled – this means the SUPER privilege). This install either does not seem to have the required privilege enabled.{/ts} {ts}This functionality cannot be enabled on multilingual installations.{/ts}</p> - {/if} + {/if} </td> </tr> <tr class="crm-miscellaneous-form-block-doNotAttachPDFReceipt"> diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Path.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Path.tpl index 69b5c652c7..98c6597244 100644 --- a/civicrm/templates/CRM/Admin/Form/Setting/Path.tpl +++ b/civicrm/templates/CRM/Admin/Form/Setting/Path.tpl @@ -40,7 +40,7 @@ <tr class="crm-path-form-block-customTemplateDir"> <td class="label">{$form.customTemplateDir.label}</td> <td>{$form.customTemplateDir.html|crmAddClass:'huge40'}<br /> - <span class="description">{ts}Path where site specific templates are stored if any. This directory is searched first if set. Custom JavaScript code can be added to templates by creating files named <em>templateFile.extra.tpl</em>.{/ts} {docURL page="Customize Built-in Screens" resource="wiki"}</span><br /> + <span class="description">{ts}Path where site specific templates are stored if any. This directory is searched first if set. Custom JavaScript code can be added to templates by creating files named <em>templateFile.extra.tpl</em>.{/ts} {docURL page="sysadmin/setup/directories"}</span><br /> <span class="description">{ts}CiviCase configuration files can also be stored in this custom path.{/ts} {docURL page="user/case-management/set-up"}</span> </td> </tr> diff --git a/civicrm/templates/CRM/Admin/Page/EventTemplate.tpl b/civicrm/templates/CRM/Admin/Page/EventTemplate.tpl index 72d50d871f..b7a091b847 100644 --- a/civicrm/templates/CRM/Admin/Page/EventTemplate.tpl +++ b/civicrm/templates/CRM/Admin/Page/EventTemplate.tpl @@ -56,7 +56,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p='civicrm/event/add' q="action=add&is_template=1&reset=1"}{/capture} {ts 1=$crmURL}There are no Event Templates present. You can <a href='%1'>add one</a>.{/ts} </div> diff --git a/civicrm/templates/CRM/Admin/Page/Extensions/AddNew.tpl b/civicrm/templates/CRM/Admin/Page/Extensions/AddNew.tpl index 3e025ac6a3..04df4239eb 100644 --- a/civicrm/templates/CRM/Admin/Page/Extensions/AddNew.tpl +++ b/civicrm/templates/CRM/Admin/Page/Extensions/AddNew.tpl @@ -41,7 +41,7 @@ Depends: CRM/common/enableDisableApi.tpl and CRM/common/jsortable.tpl </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no extensions to display. Please click "Refresh" to update information about available extensions.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Admin/Page/Extensions/AddNewReq.tpl b/civicrm/templates/CRM/Admin/Page/Extensions/AddNewReq.tpl index 1afe59b4f2..c400f940b5 100644 --- a/civicrm/templates/CRM/Admin/Page/Extensions/AddNewReq.tpl +++ b/civicrm/templates/CRM/Admin/Page/Extensions/AddNewReq.tpl @@ -1,7 +1,7 @@ <div class="crm-content-block crm-block"> {foreach from=$extAddNewReqs item=req} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$req.title}<br/> {$req.message} </div> diff --git a/civicrm/templates/CRM/Admin/Page/Extensions/Main.tpl b/civicrm/templates/CRM/Admin/Page/Extensions/Main.tpl index e23977a984..88875c8573 100644 --- a/civicrm/templates/CRM/Admin/Page/Extensions/Main.tpl +++ b/civicrm/templates/CRM/Admin/Page/Extensions/Main.tpl @@ -45,7 +45,7 @@ Depends: CRM/common/enableDisableApi.tpl and CRM/common/jsortable.tpl </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1="https://civicrm.org/extensions"}There are no extensions to display. Click the "Add New" tab to browse and install extensions posted on the <a href="%1">public CiviCRM Extensions Directory</a>. If you have downloaded extensions manually and don't see them here, try clicking the "Refresh" button.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Admin/Page/Job.tpl b/civicrm/templates/CRM/Admin/Page/Job.tpl index cb2d310b7c..2738a86b94 100644 --- a/civicrm/templates/CRM/Admin/Page/Job.tpl +++ b/civicrm/templates/CRM/Admin/Page/Job.tpl @@ -63,7 +63,7 @@ </div> {elseif $action ne 1} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no jobs configured.{/ts} </div> <div class="action-link"> diff --git a/civicrm/templates/CRM/Admin/Page/JobLog.tpl b/civicrm/templates/CRM/Admin/Page/JobLog.tpl index 12b1b687b7..367b0f5b1b 100644 --- a/civicrm/templates/CRM/Admin/Page/JobLog.tpl +++ b/civicrm/templates/CRM/Admin/Page/JobLog.tpl @@ -49,7 +49,7 @@ </div> {elseif $action ne 1} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $jobId} {ts}This scheduled job does not have any log entries.{/ts} {else} diff --git a/civicrm/templates/CRM/Admin/Page/LabelFormats.tpl b/civicrm/templates/CRM/Admin/Page/LabelFormats.tpl index d2dd488eea..e2ddf676bd 100644 --- a/civicrm/templates/CRM/Admin/Page/LabelFormats.tpl +++ b/civicrm/templates/CRM/Admin/Page/LabelFormats.tpl @@ -68,7 +68,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p='civicrm/admin/labelFormats' q="action=add&reset=1"}{/capture} {ts 1=$crmURL}There are no Label Formats configured. You can<a href='%1'>add one</a>.{/ts} </div> diff --git a/civicrm/templates/CRM/Admin/Page/MessageTemplates.hlp b/civicrm/templates/CRM/Admin/Page/MessageTemplates.hlp index 4586728908..dce28aeeaf 100644 --- a/civicrm/templates/CRM/Admin/Page/MessageTemplates.hlp +++ b/civicrm/templates/CRM/Admin/Page/MessageTemplates.hlp @@ -10,7 +10,7 @@ {capture assign=tokenDocLink}{docURL page="user/common-workflows/tokens-and-mail-merge"}{/capture} {capture assign=schedRemindersDocLink}{docURL page="user/email/scheduled-reminders/"}{/capture} {capture assign=schedRemURL}{crmURL p='civicrm/admin/scheduleReminders' q="reset=1"}{/capture} -{capture assign=upgradeTemplatesDocLink}{docURL page="Updating System Workflow Message Templates after Upgrades - method 1 - kdiff" resource="wiki"}{/capture} +{capture assign=upgradeTemplatesDocLink}{docURL page="sysadmin/upgrade/#updating-system-workflow-message-templates"}{/capture} {htxt id="id-intro-title"} {ts}Message Templates{/ts} {/htxt} diff --git a/civicrm/templates/CRM/Admin/Page/MessageTemplates.tpl b/civicrm/templates/CRM/Admin/Page/MessageTemplates.tpl index 2d704fdd96..b60355dede 100644 --- a/civicrm/templates/CRM/Admin/Page/MessageTemplates.tpl +++ b/civicrm/templates/CRM/Admin/Page/MessageTemplates.tpl @@ -147,7 +147,7 @@ {if empty( $template_row) } <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$crmURL}There are no User-driven Message Templates entered. You can <a href='%1'>add one</a>.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Admin/Page/Options.hlp b/civicrm/templates/CRM/Admin/Page/Options.hlp index c11452fc44..7f7018192d 100644 --- a/civicrm/templates/CRM/Admin/Page/Options.hlp +++ b/civicrm/templates/CRM/Admin/Page/Options.hlp @@ -11,9 +11,8 @@ {ts}Activity Types{/ts} {/htxt} {htxt id='id-activity-types'} - {capture assign=docLink}{docURL page="CiviCRM Public APIs" text="API Documentation" resource="wiki"}{/capture} <p>{ts}Activities are 'interactions with contacts' which you want to record and track. CiviCRM has several reserved (e.g. 'built-in') activity types (meetings, phone calls, emails sent). Create additional 'activity types' here if you need to record other types of activities. For example, you might want to add 'Job Interview', or 'Site Audit', etc.{/ts}</p> {capture assign=crmURL}{crmURL p='civicrm/admin/custom/group' q='reset=1'}{/capture} <p>{ts 1=$crmURL}Subject, location, date/time and description fields are provided for all activity types. You can add custom fields for tracking additional information about activities <a href='%1'>here</a>.{/ts}</p> - <p>{ts 1=$docLink}Scheduled and Completed Activities are searchable by type and/or activity date using 'Advanced Search'. Other applications may record activities for CiviCRM contacts using our APIs. For more information, refer to the online %1.{/ts}</p> + <p>{ts}Scheduled and Completed Activities are searchable by type and/or activity date using 'Advanced Search'. Other applications may record activities for CiviCRM contacts using our APIs.{/ts} {docURL page="dev/api"} </p> {/htxt} diff --git a/civicrm/templates/CRM/Admin/Page/PaymentProcessor.hlp b/civicrm/templates/CRM/Admin/Page/PaymentProcessor.hlp index 96722905bd..3568576d61 100644 --- a/civicrm/templates/CRM/Admin/Page/PaymentProcessor.hlp +++ b/civicrm/templates/CRM/Admin/Page/PaymentProcessor.hlp @@ -14,10 +14,10 @@ <p>{ts}Refer to the following documentation:{/ts}</p> <ul> <li>{docURL page="user/contributions/payment-processors" text="Payment processor overview"}</li> - <li>{docURL page="Payment Processors" text="Processor comparison and setup guide" resource="wiki"}</li> + <li>{docURL page="sysadmin/setup/payment-processors" text="Processor comparison and setup guide"}</li> </ul> <p>{ts}If you're not sure which processor to use - we recommend reviewing terms, limitations and coverage areas on each processor's website before proceeding.{/ts}</p> -<p>{ts 1="https://civicrm.org/extensions?tid_4[]=125"}If your desired processor is not in the list, check the <a href="%1">Extensions Directory</a> for more payment processors you can download. If you still can't find it, consider partnering with a developer and contributing a new extension.{/ts}</p> +<p>{ts 1="https://civicrm.org/extensions?field_extension_civi_use_target_id=125"}If your desired processor is not in the list, check the <a href="%1">Extensions Directory</a> for more payment processors you can download. If you still can't find it, consider partnering with a developer and contributing a new extension.{/ts}</p> {/htxt} {htxt id='AuthNet-live-user-name'} @@ -202,18 +202,6 @@ <br />{ts 1='<strong>https://www.eway.com.au/gateway_cvn/xmlpayment.asp</strong>'}Use %1 unless otherwise advised by eWAY.{/ts} {/htxt} -{htxt id='Payment_Express-test-user-name'} {ts}Payment Express UserID (Development account):{/ts} -{ts}This is the development user name provided to you by DPS/Payment Express.{/ts} -{ts 1='4111111111111111' 2='76'}The test Credit Card number is %1 - this is the only credit card number that will work on the test gateway. The test Total Amount can be any amount except one that ends in a value of .%2 (e.g. $10.%2) - all amounts ending in .%2 will return a failed response.{/ts} -{/htxt} - -{htxt id='Payment_Express-test-url-site'} {ts}This is the URL for accessing the DPS/Payment Express payment site. If you have been given a MAC key please fill in the Mac Key field, and use https://sec.paymentexpress.com/pxpay/pxpay.aspx for the Site URL. Otherwise use https://sec.paymentexpress.com/pxpay/pxaccess.aspx for the Site URL.{/ts} {/htxt} - -{htxt id='Payment_Express-live-user-name'} {ts}Payment Express UserID (LIVE account):{/ts} -{ts}This is the live user name provided to you by DPS/Payment Express.{/ts}{/htxt} - -{htxt id='Payment_Express-live-url-site'} {ts}This is the URL for accessing the DPS/Payment Express payment site. If you have been given a MAC key please fill in the Mac Key field, and use https://sec.paymentexpress.com/pxpay/pxpay.aspx for the Site URL. Otherwise use https://sec.paymentexpress.com/pxpay/pxaccess.aspx for the Site URL.{/ts} {/htxt} - {htxt id='Elavon-live-user-name'} <p>{ts}This is the LIVE <strong>Elavon Merchant ID</strong> associated with your Elavon account.{/ts}</p> {/htxt} diff --git a/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl b/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl index ba6d55da20..2323dffa9c 100644 --- a/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl +++ b/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl @@ -58,7 +58,7 @@ </div> {elseif $action ne 1} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no Payment Processors entered.{/ts} </div> <div class="action-link"> diff --git a/civicrm/templates/CRM/Admin/Page/PdfFormats.tpl b/civicrm/templates/CRM/Admin/Page/PdfFormats.tpl index 1b419c5752..063a160ff1 100644 --- a/civicrm/templates/CRM/Admin/Page/PdfFormats.tpl +++ b/civicrm/templates/CRM/Admin/Page/PdfFormats.tpl @@ -60,7 +60,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl b/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl index b5c9506544..0e004c2c88 100644 --- a/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl +++ b/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl @@ -29,7 +29,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Badge/Form/Layout.tpl b/civicrm/templates/CRM/Badge/Form/Layout.tpl index 3aeda9184f..00805e2e23 100644 --- a/civicrm/templates/CRM/Badge/Form/Layout.tpl +++ b/civicrm/templates/CRM/Badge/Form/Layout.tpl @@ -13,7 +13,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Batch/Form/Batch.tpl b/civicrm/templates/CRM/Batch/Form/Batch.tpl index 56e8d5bd9d..df8b072089 100644 --- a/civicrm/templates/CRM/Batch/Form/Batch.tpl +++ b/civicrm/templates/CRM/Batch/Form/Batch.tpl @@ -19,7 +19,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this batch will result in the loss of all data entered for the batch.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Campaign/Form/Campaign.tpl b/civicrm/templates/CRM/Campaign/Form/Campaign.tpl index ba17c99e82..a56b9df3b7 100644 --- a/civicrm/templates/CRM/Campaign/Form/Campaign.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Campaign.tpl @@ -14,7 +14,7 @@ <table class="form-layout"> <tr> <td colspan="2"> - <div class="status"><div class="icon inform-icon"></div> {ts}Are you sure you want to delete this Campaign?{/ts}</div> + <div class="status">{icon icon="fa-info-circle"}{/icon}{ts}Are you sure you want to delete this Campaign?{/ts}</div> </td> </tr> </table> diff --git a/civicrm/templates/CRM/Campaign/Form/Gotv.tpl b/civicrm/templates/CRM/Campaign/Form/Gotv.tpl index daa157e60d..c11c028724 100644 --- a/civicrm/templates/CRM/Campaign/Form/Gotv.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Gotv.tpl @@ -10,7 +10,7 @@ {if $errorMessages} <div class="messages status crm-error no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <ul> {foreach from=$errorMessages item=errorMsg} <li>{ts}{$errorMsg}{/ts}</li> diff --git a/civicrm/templates/CRM/Campaign/Form/Petition.tpl b/civicrm/templates/CRM/Campaign/Form/Petition.tpl index 2220c9d1f9..8b60e03238 100644 --- a/civicrm/templates/CRM/Campaign/Form/Petition.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Petition.tpl @@ -15,7 +15,7 @@ <tr> <td colspan="2"> <div class="status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete this Petition?{/ts}</div> </td> </tr> diff --git a/civicrm/templates/CRM/Campaign/Form/Search/Campaign.tpl b/civicrm/templates/CRM/Campaign/Form/Search/Campaign.tpl index ec68d2770f..f9fc2a79d4 100644 --- a/civicrm/templates/CRM/Campaign/Form/Search/Campaign.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Search/Campaign.tpl @@ -10,7 +10,7 @@ {if !$hasCampaigns} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> diff --git a/civicrm/templates/CRM/Campaign/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Campaign/Form/Search/EmptyResults.tpl index 0b2ef45f21..bfeb44999d 100644 --- a/civicrm/templates/CRM/Campaign/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Campaign/Form/Search/Petition.tpl b/civicrm/templates/CRM/Campaign/Form/Search/Petition.tpl index 3541466891..afb84dde62 100644 --- a/civicrm/templates/CRM/Campaign/Form/Search/Petition.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Search/Petition.tpl @@ -10,7 +10,7 @@ {if !$hasPetitions} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> diff --git a/civicrm/templates/CRM/Campaign/Form/Search/Survey.tpl b/civicrm/templates/CRM/Campaign/Form/Search/Survey.tpl index 09a53a4ece..324f403a04 100644 --- a/civicrm/templates/CRM/Campaign/Form/Search/Survey.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Search/Survey.tpl @@ -10,7 +10,7 @@ {if !$hasSurveys} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> diff --git a/civicrm/templates/CRM/Campaign/Form/Survey/Delete.tpl b/civicrm/templates/CRM/Campaign/Form/Survey/Delete.tpl index 1510b7bb4d..9c879e4098 100644 --- a/civicrm/templates/CRM/Campaign/Form/Survey/Delete.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Survey/Delete.tpl @@ -11,7 +11,7 @@ <table class="form-layout"> <tr> <td colspan="2"> - <div class="status"><div class="icon inform-icon"></div> {ts 1=$surveyTitle}Are you sure you want to delete the %1 survey?{/ts}</div> + <div class="status">{icon icon="fa-info-circle"}{/icon}{ts 1=$surveyTitle}Are you sure you want to delete the %1 survey?{/ts}</div> </td> </tr> </table> diff --git a/civicrm/templates/CRM/Campaign/Form/Survey/Main.tpl b/civicrm/templates/CRM/Campaign/Form/Survey/Main.tpl index 081559ef26..b861552d1f 100644 --- a/civicrm/templates/CRM/Campaign/Form/Survey/Main.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Survey/Main.tpl @@ -49,7 +49,7 @@ <tr class="crm-campaign-survey-main-form-block-release_frequency"> <td class="label">{$form.release_frequency.label}</td> <td class="view-value">{$form.release_frequency.html} - <div class="description">{ts}Reserved respondents are released if they haven't been surveyed within this number of days. The Respondent Processor script must be run periodically to release respondents.{/ts} {docURL page="Managing Scheduled Jobs" resource="wiki"}</div> </td> + <div class="description">{ts}Reserved respondents are released if they haven't been surveyed within this number of days. The Respondent Processor script must be run periodically to release respondents.{/ts} {docURL page="user/initial-set-up/scheduled-jobs"}</div> </td> </tr> <tr class="crm-campaign-survey-main-form-block-is_active"> <td class="label">{$form.is_active.label}</td> diff --git a/civicrm/templates/CRM/Campaign/Form/Task/Interview.tpl b/civicrm/templates/CRM/Campaign/Form/Task/Interview.tpl index 9c927d7b4c..2987636b71 100644 --- a/civicrm/templates/CRM/Campaign/Form/Task/Interview.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Task/Interview.tpl @@ -9,7 +9,7 @@ *} {if $votingTab and $errorMessages} <div class='messages status'> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <ul> {foreach from=$errorMessages item=errorMsg} <li>{ts}{$errorMsg}{/ts}</li> diff --git a/civicrm/templates/CRM/Campaign/Form/Task/Print.tpl b/civicrm/templates/CRM/Campaign/Form/Task/Print.tpl index fd17756a31..9c7023da1e 100644 --- a/civicrm/templates/CRM/Campaign/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Task/Print.tpl @@ -21,7 +21,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"/> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Campaign/Form/Task/Release.tpl b/civicrm/templates/CRM/Campaign/Form/Task/Release.tpl index cd99249430..618af12e3f 100644 --- a/civicrm/templates/CRM/Campaign/Form/Task/Release.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Task/Release.tpl @@ -16,7 +16,7 @@ <tr class="crm-campaign-task-release-form-block-surveytitle"> <td colspan=2> <div class="status"> - <div class="icon inform-icon"></div> {ts 1=$surveyTitle}Do you want to release respondents for '%1' ?{/ts} + {icon icon="fa-info-circle"}{/icon}{ts 1=$surveyTitle}Do you want to release respondents for '%1' ?{/ts} </div> </td> </tr> diff --git a/civicrm/templates/CRM/Campaign/Form/Task/Reserve.tpl b/civicrm/templates/CRM/Campaign/Form/Task/Reserve.tpl index a4ccaf412e..38fe35ac7e 100644 --- a/civicrm/templates/CRM/Campaign/Form/Task/Reserve.tpl +++ b/civicrm/templates/CRM/Campaign/Form/Task/Reserve.tpl @@ -16,7 +16,7 @@ <tr class="crm-campaign-task-reserve-form-block-surveytitle"> <td colspan=2> <div class="status"> - <div class="icon inform-icon"></div> {ts 1=$surveyTitle}Do you want to reserve respondents for '%1' ?{/ts} + {icon icon="fa-info-circle"}{/icon}{ts 1=$surveyTitle}Do you want to reserve respondents for '%1' ?{/ts} </div> </td> </tr> diff --git a/civicrm/templates/CRM/Campaign/Page/Petition.tpl b/civicrm/templates/CRM/Campaign/Page/Petition.tpl index 595c8582e7..160ae236ed 100644 --- a/civicrm/templates/CRM/Campaign/Page/Petition.tpl +++ b/civicrm/templates/CRM/Campaign/Page/Petition.tpl @@ -50,7 +50,7 @@ {else} <div class="status"> - <div class="icon inform-icon"></div> {ts}None found.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}None found.{/ts} </div> {/if} <div class="action-link"> diff --git a/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl b/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl index b207cf1d03..193b0aa4ff 100644 --- a/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl +++ b/civicrm/templates/CRM/Campaign/Page/Petition/Confirm.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $success} {ts 1=$display_name 2=$email}<strong>%1 - your email address '%2' has been successfully verified.</strong>{/ts} {else} diff --git a/civicrm/templates/CRM/Campaign/Page/SurveyType.tpl b/civicrm/templates/CRM/Campaign/Page/SurveyType.tpl index 6f1308bc10..c7ac2f4588 100644 --- a/civicrm/templates/CRM/Campaign/Page/SurveyType.tpl +++ b/civicrm/templates/CRM/Campaign/Page/SurveyType.tpl @@ -47,8 +47,8 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"> - {ts p=$addSurveyType.0 q=$addSurveyType.1}There are no survey types entered. You can <a href='%1'>add one</a>.{/ts}</div> + {icon icon="fa-info-circle"}{/icon} + {ts p=$addSurveyType.0 q=$addSurveyType.1}There are no survey types entered. You can <a href='%1'>add one</a>.{/ts} </div> {/if} {/if} diff --git a/civicrm/templates/CRM/Campaign/Page/Vote.tpl b/civicrm/templates/CRM/Campaign/Page/Vote.tpl index ff305b93c9..b4a4a13db7 100644 --- a/civicrm/templates/CRM/Campaign/Page/Vote.tpl +++ b/civicrm/templates/CRM/Campaign/Page/Vote.tpl @@ -33,7 +33,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}You are not authorized to access this page.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Case/Form/Case.tpl b/civicrm/templates/CRM/Case/Form/Case.tpl index d96b5cb26b..2edb838293 100644 --- a/civicrm/templates/CRM/Case/Form/Case.tpl +++ b/civicrm/templates/CRM/Case/Form/Case.tpl @@ -20,7 +20,7 @@ <h3>{if $action eq 8}{ts}Delete Case{/ts}{elseif $action eq 32768}{ts}Restore Case{/ts}{/if}</h3> {if $action eq 8 or $action eq 32768 } <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $action eq 8} {ts}Click Delete to move this case and all associated activities to the Trash.{/ts} {else} diff --git a/civicrm/templates/CRM/Case/Form/EditClient.tpl b/civicrm/templates/CRM/Case/Form/EditClient.tpl index d1108cc1a4..fea5368eb1 100644 --- a/civicrm/templates/CRM/Case/Form/EditClient.tpl +++ b/civicrm/templates/CRM/Case/Form/EditClient.tpl @@ -10,7 +10,7 @@ {* template for assigning the current case to another client*} <div class="crm-block crm-form-block crm-case-editclient-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts 1=$currentClientName}This is case is currently assigned to %1.{/ts} + {icon icon="fa-info-circle"}{/icon} {ts 1=$currentClientName}This is case is currently assigned to %1.{/ts} </div> <div class="crm-form-block"> <table class="form-layout-compressed"> diff --git a/civicrm/templates/CRM/Case/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Case/Form/Search/EmptyResults.tpl index 05bfa282ce..f3924aa879 100644 --- a/civicrm/templates/CRM/Case/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Case/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Case/Form/Task/Delete.tpl b/civicrm/templates/CRM/Case/Form/Task/Delete.tpl index d94f86eb03..e24d21d749 100644 --- a/civicrm/templates/CRM/Case/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Case/Form/Task/Delete.tpl @@ -9,7 +9,7 @@ *} {* Confirmation of contribution deletes *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete the selected cases? This will move the case(s) and all associated activities to the Trash.{/ts}<br/> <p>{include file="CRM/Case/Form/Task.tpl"}</p> diff --git a/civicrm/templates/CRM/Case/Form/Task/Print.tpl b/civicrm/templates/CRM/Case/Form/Task/Print.tpl index 31b56ebd7d..e15d076c6f 100644 --- a/civicrm/templates/CRM/Case/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Case/Form/Task/Print.tpl @@ -46,7 +46,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Case/Form/Task/Restore.tpl b/civicrm/templates/CRM/Case/Form/Task/Restore.tpl index 88f3f55456..790eb360dd 100644 --- a/civicrm/templates/CRM/Case/Form/Task/Restore.tpl +++ b/civicrm/templates/CRM/Case/Form/Task/Restore.tpl @@ -9,7 +9,7 @@ *} {* Confirmation of contribution deletes *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to restore the selected cases? This operation will retrieve the case(s) and all associated activities from Trash.{/ts}</p> <p>{include file="CRM/Case/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Case/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Case/Form/Task/SearchTaskHookSample.tpl index b146b79927..cff2cc5fb0 100644 --- a/civicrm/templates/CRM/Case/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Case/Form/Task/SearchTaskHookSample.tpl @@ -30,7 +30,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Case/Page/ConfigureError.tpl b/civicrm/templates/CRM/Case/Page/ConfigureError.tpl index 762ca73196..b2c69e68b7 100644 --- a/civicrm/templates/CRM/Case/Page/ConfigureError.tpl +++ b/civicrm/templates/CRM/Case/Page/ConfigureError.tpl @@ -12,7 +12,7 @@ {capture assign=docLink}{docURL page="user/case-management/set-up" text="CiviCase Setup documentation"}{/capture} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <strong>{ts}You need to setup and load Case and Activity configuration files before you can begin using the CiviCase component.{/ts}</strong> {ts 1=$docLink}Refer to the %1 to learn about this process.{/ts} </div> diff --git a/civicrm/templates/CRM/Case/Page/Tab.tpl b/civicrm/templates/CRM/Case/Page/Tab.tpl index 047fd3dc37..66ec5e72b0 100644 --- a/civicrm/templates/CRM/Case/Page/Tab.tpl +++ b/civicrm/templates/CRM/Case/Page/Tab.tpl @@ -12,7 +12,7 @@ {elseif $redirectToCaseAdmin} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <strong>{ts}Oops, It looks like there are no active case types.{/ts}</strong> {if call_user_func(array('CRM_Core_Permission','check'), ' administer CiviCase')} {capture assign=adminCaseTypeURL}{crmURL p='civicrm/a/#/caseType'} @@ -52,7 +52,7 @@ {include file="CRM/Case/Form/Selector.tpl"} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no case records for this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl b/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl index 0181f55f95..f83b4cb7bf 100644 --- a/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl +++ b/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl @@ -23,7 +23,7 @@ {if $blockId gt 1}<fieldset><legend>{ts}Supplemental Address{/ts}</legend>{/if} <table class="form-layout-compressed crm-edit-address-form"> {if $masterAddress.$blockId gt 0 } - <tr><td><div class="message status"><div class="icon inform-icon"></div> {ts 1=$masterAddress.$blockId}This address is shared with %1 contact record(s). Modifying this address will automatically update the shared address for these contacts.{/ts}</div></td></tr> + <tr><td><div class="message status">{icon icon="fa-info-circle"}{/icon} {ts 1=$masterAddress.$blockId}This address is shared with %1 contact record(s). Modifying this address will automatically update the shared address for these contacts.{/ts}</div></td></tr> {/if} {if $className eq 'CRM_Contact_Form_Contact'} diff --git a/civicrm/templates/CRM/Contact/Form/Merge.tpl b/civicrm/templates/CRM/Contact/Form/Merge.tpl index 6c2902a06b..dce608c1b8 100644 --- a/civicrm/templates/CRM/Contact/Form/Merge.tpl +++ b/civicrm/templates/CRM/Contact/Form/Merge.tpl @@ -13,13 +13,13 @@ </div> <div class="message status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <strong>{ts}WARNING: The duplicate contact record WILL BE DELETED after the merge is complete.{/ts}</strong> </div> {if $user} <div class="message status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <strong>{ts 1=$config->userFramework}WARNING: There are %1 user accounts associated with both the original and duplicate contacts. Ensure that the %1 user you want to retain is on the right - if necessary use the 'Flip between original and duplicate contacts.' option at top to swap the positions of the two records before doing the merge. The user record associated with the duplicate contact will not be deleted, but will be unlinked from the associated contact record (which will be deleted). You will need to manually delete that user (click on the link to open the %1 user account in new screen). You may need to give thought to how you handle any content or contents associated with that user.{/ts}</strong> diff --git a/civicrm/templates/CRM/Contact/Form/Search/Criteria/Basic.tpl b/civicrm/templates/CRM/Contact/Form/Search/Criteria/Basic.tpl index 7306bf6b38..8c1a39568c 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/Criteria/Basic.tpl +++ b/civicrm/templates/CRM/Contact/Form/Search/Criteria/Basic.tpl @@ -10,7 +10,7 @@ <div class="advanced-search-fields basic-fields form-layout"> {foreach from=$basicSearchFields item=fieldSpec} {assign var=field value=$form[$fieldSpec.name]} - {if $field} + {if $field && !in_array($fieldSpec.name, array('first_name', 'last_name'))} <div class="search-field {$fieldSpec.class|escape}"> {if $fieldSpec.template} {include file=$fieldSpec.template} diff --git a/civicrm/templates/CRM/Contact/Form/Search/Criteria/Fields/sort_name.tpl b/civicrm/templates/CRM/Contact/Form/Search/Criteria/Fields/sort_name.tpl index cdda1797a9..9f5e98e57e 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/Criteria/Fields/sort_name.tpl +++ b/civicrm/templates/CRM/Contact/Form/Search/Criteria/Fields/sort_name.tpl @@ -11,16 +11,16 @@ <script type="text/javascript"> CRM.$(function($) { function showIndivFldsSearch() { - $('#sortnameselect').hide(); - $('#indivfldselect').show(); + $('#sortnameselect').css('visibility', 'hidden').css('position','absolute'); + $('#indivfldselect').css('visibility', 'visible').css('position','static'); $('#sort_name').val(''); $('#first_name').removeClass('big').addClass('eight'); $('#last_name').removeClass('big').addClass('eight'); return false; } function showSortNameSearch() { - $('#indivfldselect').hide(); - $('#sortnameselect').show(); + $('#indivfldselect').css('visibility', 'hidden').css('position','absolute'); + $('#sortnameselect').css('visibility', 'visible').css('position','static'); $('#first_name').val(''); $('#last_name').val(''); return false; diff --git a/civicrm/templates/CRM/Contact/Form/Search/Custom/EmptyResults.tpl b/civicrm/templates/CRM/Contact/Form/Search/Custom/EmptyResults.tpl index 6a9308dbde..d27e0e7697 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/Custom/EmptyResults.tpl +++ b/civicrm/templates/CRM/Contact/Form/Search/Custom/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* Custom searches. Default template for NO MATCHES on submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill} {ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} diff --git a/civicrm/templates/CRM/Contact/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Contact/Form/Search/EmptyResults.tpl index 87e236eb97..c880ac5952 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Contact/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request or viewing an empty group. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $context EQ 'smog'} {capture assign=crmURL}{crmURL q="context=amtg&amtgID=`$group.id`&reset=1"}{/capture}{ts 1=$group.title 2=$crmURL}%1 has no contacts which match your search criteria. You can <a href='%2'>add contacts here.</a>{/ts} {else} diff --git a/civicrm/templates/CRM/Contact/Form/Task/Delete.tpl b/civicrm/templates/CRM/Contact/Form/Task/Delete.tpl index b24a66566f..436464f40e 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/Delete.tpl @@ -10,7 +10,7 @@ {* Confirmation of contact deletes *} <div class="crm-block crm-form-block crm-contact-task-delete-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $restore} {ts}Are you sure you want to restore the selected contact(s)? The contact(s) and all related data will be fully restored.{/ts} {elseif $trash} diff --git a/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl b/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl index cd912f92c6..d75f236513 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl @@ -44,12 +44,14 @@ </div><!-- /.crm-accordion-body --> </div><!-- /.crm-accordion-wrapper --> <div id="editMessageDetails" class="section"> - <div id="updateDetails" class="section" > - {$form.updateTemplate.html} {$form.updateTemplate.label} - </div> - <div class="section"> - {$form.saveTemplate.html} {$form.saveTemplate.label} - </div> + {if call_user_func(array('CRM_Core_Permission','check'), 'edit message templates') } + <div id="updateDetails" class="section" > + {$form.updateTemplate.html} {$form.updateTemplate.label} + </div> + <div class="section"> + {$form.saveTemplate.html} {$form.saveTemplate.label} + </div> + {/if} </div> <div id="saveDetails" class="section"> diff --git a/civicrm/templates/CRM/Contact/Form/Task/HookSample.tpl b/civicrm/templates/CRM/Contact/Form/Task/HookSample.tpl index bea1556df6..2808e89f3a 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/HookSample.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/HookSample.tpl @@ -38,7 +38,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Form/Task/Print.tpl b/civicrm/templates/CRM/Contact/Form/Task/Print.tpl index 6b29669289..b91d92ce9f 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/Print.tpl @@ -103,7 +103,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Form/Task/Unhold.tpl b/civicrm/templates/CRM/Contact/Form/Task/Unhold.tpl index 2b2534f8ab..e2f019db57 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/Unhold.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/Unhold.tpl @@ -10,7 +10,7 @@ <div class="crm-block crm-form-block crm-unhold-form-block"> <div class="spacer"></div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}Are you sure you want to unhold email of selected contact(s)?.{/ts} {ts}This action cannot be undone.{/ts}</p> <p>{include file="CRM/Contact/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Contact/Import/Form/DataSource.tpl b/civicrm/templates/CRM/Contact/Import/Form/DataSource.tpl index 42312a195d..5009af8a19 100644 --- a/civicrm/templates/CRM/Contact/Import/Form/DataSource.tpl +++ b/civicrm/templates/CRM/Contact/Import/Form/DataSource.tpl @@ -70,7 +70,7 @@ <span class="description"> {ts}This option is not recommended for large imports. Use the command-line geocoding script instead.{/ts} </span> - {docURL page="Managing Scheduled Jobs" resource="wiki"} + {docURL page="user/initial-set-up/scheduled-jobs"} </td> </tr> {/if} diff --git a/civicrm/templates/CRM/Contact/Page/CustomSearch.hlp b/civicrm/templates/CRM/Contact/Page/CustomSearch.hlp index 91987733b5..86f030bb40 100644 --- a/civicrm/templates/CRM/Contact/Page/CustomSearch.hlp +++ b/civicrm/templates/CRM/Contact/Page/CustomSearch.hlp @@ -14,7 +14,7 @@ <p> {ts}These are developed and contributed by members of the CiviCRM community. Consider adding any custom searches which you use often to your Search menu (from Administer > Customize Data and Screens > Navigation Menu). As new custom searches become available they can be viewed (and installed if useful) from Administer > System Settings > Manage Extensions.{/ts} </p> -<p>{docURL page="Create a Custom-Search Extension" resource="wiki"}</p> +<p>{docURL page="dev/extensions/civix/#generate-search"}</p> </p> <p> {ts}NOTE: Some of these searches may rely on specific site configurations - and may not work as expected on your site.{/ts} diff --git a/civicrm/templates/CRM/Contact/Page/View/ContactSmartGroup.tpl b/civicrm/templates/CRM/Contact/Page/View/ContactSmartGroup.tpl index 1cc375c9d4..e1248deb55 100644 --- a/civicrm/templates/CRM/Contact/Page/View/ContactSmartGroup.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/ContactSmartGroup.tpl @@ -10,7 +10,7 @@ <div class="section-shown"> {if !$groupSmart AND !$groupParent} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}This contact does not currently belong to any smart groups.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Page/View/Delete.tpl b/civicrm/templates/CRM/Contact/Page/View/Delete.tpl index 14a7730240..5b8c511577 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Delete.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Delete.tpl @@ -9,7 +9,7 @@ *} {* Confirmation of contact deletes *} <div class="messages status no-popup"> -<div class="icon inform-icon"></div> +{icon icon="fa-info-circle"}{/icon} <p>{ts 1=$displayName}Are you sure you want to delete the contact record and all related information for <strong>%1</strong>?{/ts}</p> <p>{ts}This action cannot be undone.{/ts}</p> </div> diff --git a/civicrm/templates/CRM/Contact/Page/View/Group.tpl b/civicrm/templates/CRM/Contact/Page/View/Group.tpl index ba78dff8db..bc3343b56c 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Group.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Group.tpl @@ -30,7 +30,7 @@ </table> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}This contact does not belong to any groups.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Page/View/GroupContact.tpl b/civicrm/templates/CRM/Contact/Page/View/GroupContact.tpl index 77bfdf27bb..4e5162643a 100644 --- a/civicrm/templates/CRM/Contact/Page/View/GroupContact.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/GroupContact.tpl @@ -10,7 +10,7 @@ <div class="view-content view-contact-groups"> {if $groupCount eq 0} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}This contact does not currently belong to any groups.{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Contact/Page/View/Log.tpl b/civicrm/templates/CRM/Contact/Page/View/Log.tpl index 3849b21195..11b21f7555 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Log.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Log.tpl @@ -27,7 +27,7 @@ </table> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Page/View/Note.tpl b/civicrm/templates/CRM/Contact/Page/View/Note.tpl index 6e8c11ab7f..8cdf82cfd7 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Note.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Note.tpl @@ -240,7 +240,7 @@ </div> {elseif ($action eq 16)} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no Notes for this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Page/View/Summary.js b/civicrm/templates/CRM/Contact/Page/View/Summary.js index 95c2abe558..1d57d9992c 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Summary.js +++ b/civicrm/templates/CRM/Contact/Page/View/Summary.js @@ -61,10 +61,14 @@ function reloadBlock(el) { return $(el).each(function() { var data = $(this).data('edit-params'); - data.snippet = data.reset = 1; - data.class_name = data.class_name.replace('Form', 'Page'); - data.type = 'page'; - $(this).closest('.crm-summary-block').load(CRM.url('civicrm/ajax/inline', data), function() {$(this).trigger('crmLoad');}); + if (data) { + data.snippet = data.reset = 1; + data.class_name = data.class_name.replace('Form', 'Page'); + data.type = 'page'; + $(this).closest('.crm-summary-block').load(CRM.url('civicrm/ajax/inline', data), function() { + $(this).trigger('crmLoad'); + }); + } }); } @@ -192,7 +196,7 @@ document.title = $('title').html().replace(oldName, contactName); oldName = contactName; } - $('#contactname-block').load(refreshTitle); + $('#contactname-block').on('load', refreshTitle); refreshTitle(); var clicking; diff --git a/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl b/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl index 94d8cd08e7..7306c342a0 100644 --- a/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl @@ -16,7 +16,7 @@ <div class="view-content"> {if $groupCount eq 0 } <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}You are not currently subscribed to any Groups.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/AcceptCreditCard.tpl b/civicrm/templates/CRM/Contribute/Form/AcceptCreditCard.tpl index 95204a5396..004070019d 100644 --- a/civicrm/templates/CRM/Contribute/Form/AcceptCreditCard.tpl +++ b/civicrm/templates/CRM/Contribute/Form/AcceptCreditCard.tpl @@ -13,7 +13,7 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: If you delete this option, contributors will not be able to use this credit card type on your Online Contribution pages.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl b/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl index 08a41ddfa1..40049945e7 100644 --- a/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl +++ b/civicrm/templates/CRM/Contribute/Form/AdditionalPayment.tpl @@ -20,7 +20,7 @@ {if !$email} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}You will not be able to send an automatic email receipt for this payment because there is no email address recorded for this contact. If you want a receipt to be sent when this payment is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the payment.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}You will not be able to send an automatic email receipt for this payment because there is no email address recorded for this contact. If you want a receipt to be sent when this payment is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the payment.{/ts} </div> {/if} {if $newCredit AND $contributionMode EQ null} diff --git a/civicrm/templates/CRM/Contribute/Form/CancelSubscription.tpl b/civicrm/templates/CRM/Contribute/Form/CancelSubscription.tpl index c193513b62..d93037432a 100644 --- a/civicrm/templates/CRM/Contribute/Form/CancelSubscription.tpl +++ b/civicrm/templates/CRM/Contribute/Form/CancelSubscription.tpl @@ -10,7 +10,7 @@ <div class="crm-block crm-form-block crm-auto-renew-membership-cancellation"> <div class="help"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$cancelRecurDetailText} {if $cancelRecurNotSupportedText} <div class="status-warning">{$cancelRecurNotSupportedText}</div> diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl index f3674420c1..9ab874819b 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl @@ -33,13 +33,13 @@ {if !$email and $action neq 8 and $context neq 'standalone'} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}You will not be able to send an automatic email receipt for this contribution because there is no email address recorded for this contact. If you want a receipt to be sent when this contribution is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the contribution.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}You will not be able to send an automatic email receipt for this contribution because there is no email address recorded for this contact. If you want a receipt to be sent when this contribution is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the contribution.{/ts} </div> {/if} {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this contribution will result in the loss of the associated financial transactions (if any).{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl index 0b6a9443bb..d6ef535aae 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl @@ -56,6 +56,11 @@ </div> {/if} + {if call_user_func(array('CRM_Core_Permission','check'), 'administer CiviCRM') } + {capture assign="buttonTitle"}{ts}Configure Contribution Page{/ts}{/capture} + {crmButton target="_blank" p="civicrm/admin/contribute/settings" q="reset=1&action=update&id=`$contributionPageID`" fb=1 title="$buttonTitle" icon="fa-wrench"}{ts}Configure{/ts}{/crmButton} + <div class='clear'></div> + {/if} {include file="CRM/common/TrackingFields.tpl"} <div class="crm-contribution-page-id-{$contributionPageID} crm-block crm-contribution-main-form-block"> @@ -333,15 +338,27 @@ var isRecur = cj('input[id="is_recur"]:checked'); var allowAutoRenew = {/literal}'{$allowAutoRenewMembership}'{literal}; var quickConfig = {/literal}{$quickConfig}{literal}; - if ( allowAutoRenew && cj("#auto_renew") && quickConfig) { + if (allowAutoRenew && cj("#auto_renew") && quickConfig) { showHideAutoRenew(null); } + + var frequencyUnit = cj('#frequency_unit'); + var frequencyInerval = cj('#frequency_interval'); + var installments = cj('#installments'); + isDisabled = false; + if (isRecur.val() > 0) { cj('#recurHelp').show(); + frequencyUnit.prop('disabled', false).addClass('required'); + frequencyInerval.prop('disabled', false).addClass('required'); + installments.prop('disabled', false); cj('#amount_sum_label').text('{/literal}{ts escape='js'}Regular amount{/ts}{literal}'); } else { cj('#recurHelp').hide(); + frequencyUnit.prop('disabled', true).removeClass('required'); + frequencyInerval.prop('disabled', true).removeClass('required'); + installments.prop('disabled', true); cj('#amount_sum_label').text('{/literal}{ts escape='js'}Total Amount{/ts}{literal}'); } } diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl index eb0b41ccc9..3d282628fa 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl @@ -21,7 +21,7 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to remove this premium product from this Contribution page?{/ts} </div> {elseif $action eq 1024} diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl index 4969078327..8be7d88e7b 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl @@ -177,9 +177,9 @@ <tr id="minMaxFields" class="crm-contribution-form-block-minMaxFields"><td> </td><td> <table class="form-layout-compressed"> <tr class="crm-contribution-form-block-min_amount"><th scope="row" class="label">{$form.min_amount.label}</th> - <td>{$form.min_amount.html|crmMoney}</td></tr> + <td>{$form.min_amount.html}</td></tr> <tr class="crm-contribution-form-block-max_amount"><th scope="row" class="label">{$form.max_amount.label}</th> - <td>{$form.max_amount.html|crmMoney}<br /> + <td>{$form.max_amount.html}<br /> <span class="description">{ts 1=5|crmMoney}If you have chosen to <strong>Allow Other Amounts</strong>, you can use the fields above to control minimum and/or maximum acceptable values (e.g. don't allow contribution amounts less than %1).{/ts}</span></td></tr> </table> </td></tr> @@ -194,7 +194,7 @@ <tr class="columnheader" ><th scope="column">{ts}Contribution Label{/ts}</th><th scope="column">{ts}Amount{/ts}</th><th scope="column">{ts}Default?{/ts}<br />{$form.default.0.html}</th></tr> {section name=loop start=1 loop=11} {assign var=idx value=$smarty.section.loop.index} - <tr><td class="even-row">{$form.label.$idx.html}</td><td>{$form.value.$idx.html|crmMoney}</td><td class="even-row">{$form.default.$idx.html}</td></tr> + <tr><td class="even-row">{$form.label.$idx.html}</td><td>{$form.value.$idx.html}</td><td class="even-row">{$form.default.$idx.html}</td></tr> {/section} </table> </fieldset> diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Delete.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Delete.tpl index bffeb24bfa..98544852fb 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Delete.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Delete.tpl @@ -9,7 +9,7 @@ *} {* this template is used for confirmation of delete for a group *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $relatedContributions} {ts 1=$title}You cannot delete this Contribution Page because it has already been used to submit a contribution or membership payment. It is recommended that your disable the page instead of deleting it, to preserve the integrity of your contribution records. If you do want to completely delete this contribution page, you first need to search for and delete all of the contribution transactions associated with this page in CiviContribute.{/ts} {else} diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Widget.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Widget.tpl index 2f8eb10031..9ae6af8026 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Widget.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Widget.tpl @@ -11,7 +11,7 @@ <h3>{ts}Configure Widget{/ts}</h3> {if $showStatus} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}It looks like you may have posted and / or distributed the flash version of the Contribution widget. We won't be supporting the flash version in next release. You should try and get all sites using the flash widget to update to the improved HTML widget code below as soon as possible.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/ManagePremiums.tpl b/civicrm/templates/CRM/Contribute/Form/ManagePremiums.tpl index 415206b4f3..c688678b93 100644 --- a/civicrm/templates/CRM/Contribute/Form/ManagePremiums.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ManagePremiums.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-contribution-manage_premiums-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete this premium?{/ts} {ts}This action cannot be undone.{/ts} {ts}This will also remove the premium from any contribution pages that currently include it.{/ts} </div> {elseif $action eq 1024} diff --git a/civicrm/templates/CRM/Contribute/Form/PCP/Delete.tpl b/civicrm/templates/CRM/Contribute/Form/PCP/Delete.tpl index 8ca432991e..9ebac095e2 100644 --- a/civicrm/templates/CRM/Contribute/Form/PCP/Delete.tpl +++ b/civicrm/templates/CRM/Contribute/Form/PCP/Delete.tpl @@ -10,7 +10,7 @@ {* this template is used for confirmation of delete for a group *} <fieldset><legend>{ts}Delete Campaign Page {/ts}</legend> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}Are you sure you want to delete Campaign Page '%1'?{/ts}<br /> {ts}This action cannot be undone.{/ts} </div> diff --git a/civicrm/templates/CRM/Contribute/Form/PaymentInstrument.tpl b/civicrm/templates/CRM/Contribute/Form/PaymentInstrument.tpl index 4b43f2b097..113c9483c0 100644 --- a/civicrm/templates/CRM/Contribute/Form/PaymentInstrument.tpl +++ b/civicrm/templates/CRM/Contribute/Form/PaymentInstrument.tpl @@ -13,7 +13,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will result in the loss of all contribution records which use this option.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Contribute/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Contribute/Form/Search/EmptyResults.tpl index 8b8cea760b..8ce4069f41 100644 --- a/civicrm/templates/CRM/Contribute/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Contribute/Form/Task/Delete.tpl b/civicrm/templates/CRM/Contribute/Form/Task/Delete.tpl index bd63906c08..0b4dfc49aa 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/Delete.tpl @@ -9,7 +9,7 @@ *} {* Confirmation of contribution deletes *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}Are you sure you want to delete the selected contributions? This delete operation cannot be undone and will delete all transactions and activity associated with these contributions.{/ts}</p> <p>{include file="CRM/Contribute/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl b/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl index 7fb22b7d12..9f3dde8889 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {include file="CRM/Contribute/Form/Task.tpl"} </div> {if $selectedOutput ne 'email'} diff --git a/civicrm/templates/CRM/Contribute/Form/Task/PDF.tpl b/civicrm/templates/CRM/Contribute/Form/Task/PDF.tpl index eebec04694..ca5b3e1228 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/PDF.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/PDF.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {include file="CRM/Contribute/Form/Task.tpl"} </div> <div class="help"> diff --git a/civicrm/templates/CRM/Contribute/Form/Task/Print.tpl b/civicrm/templates/CRM/Contribute/Form/Task/Print.tpl index b4c4deda2f..6625f15eaa 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/Print.tpl @@ -52,7 +52,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"/> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Contribute/Form/Task/SearchTaskHookSample.tpl index 2fa8f7d0ad..a14a183b17 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/SearchTaskHookSample.tpl @@ -32,7 +32,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/Task/Status.tpl b/civicrm/templates/CRM/Contribute/Form/Task/Status.tpl index 635c4890d7..9d16b90aeb 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/Status.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/Status.tpl @@ -8,50 +8,49 @@ +--------------------------------------------------------------------+ *} <div class="form-item crm-block crm-form-block crm-contribution-form-block"> -<div class="help"> - {ts}Use this form to record received payments for 'pay later' online contributions, membership signups and event registrations. You can use the Transaction ID field to record account+check number, bank transfer identifier, or other unique payment identifier.{/ts} -</div> -<fieldset> - <legend>{ts}Update Contribution Status{/ts}</legend> - <table class="form-layout-compressed"> - <tr class="crm-contribution-form-block-contribution_status_id"><td class="label">{$form.contribution_status_id.label}</td><td class="html-adjust">{$form.contribution_status_id.html}<br /> - <span class="description">{ts}Assign the selected status to all contributions listed below.{/ts}</td></tr> - <tr class="crm-contribution-form-block-is_email_receipt"><td class="label">{$form.is_email_receipt.label}</td> - <td class="html-adjust">{$form.is_email_receipt.html}<br /> - <span class="description">{ts}When checked CiviCRM will send an e-mail receipt to the donor. Leave unchecked when you don't want to send an e-mail.{/ts} - </td> - </tr> - </table> -<table> -<tr class="columnheader"> - <th>{ts}Name{/ts}</th> - <th class="right">{ts}Amount{/ts} </th> - <th>{ts}Source{/ts}</th> - <th>{ts}Fee Amount{/ts}</th> - <th>{ts}Payment Method{/ts}</th> - <th>{ts}Check{/ts} #</th> - <th>{ts}Transaction ID{/ts}</th> - <th>{ts}Transaction Date{/ts}</th> -</tr> + <h3>{ts}Record payments for contributions{/ts}</h3> + <div class="help"> + <p>{ts}Use this form to record received payments for "pay later" online contributions, membership signups and event registrations. You can use the Transaction ID field to record account+check number, bank transfer identifier, or other unique payment identifier.{/ts}</p> + <p>{ts}The contribution status will be updated as appropriate. To update contribution statuses directly, return to the search results and select "Update multiple contributions".{/ts}</p> + </div> + + <table class="form-layout-compressed"> + <tr class="crm-contribution-form-block-is_email_receipt"> + <td class="label">{$form.is_email_receipt.label}</td> + <td class="html-adjust">{$form.is_email_receipt.html}<br /> + <span class="description">{ts}When checked CiviCRM will send an e-mail receipt to the donor. Leave unchecked when you don't want to send an e-mail.{/ts}</span> + </td> + </tr> + </table> + <table> + <tr class="columnheader"> + <th>{ts}Name{/ts}</th> + <th class="right">{ts}Amount{/ts} </th> + <th>{ts}Source{/ts}</th> + <th>{ts}Fee Amount{/ts}</th> + <th>{ts}Payment Method{/ts}</th> + <th>{ts}Check{/ts} #</th> + <th>{ts}Transaction ID{/ts}</th> + <th>{ts}Transaction Date{/ts}</th> + </tr> -{foreach from=$rows item=row} -<tr class="{cycle values="odd-row,even-row"}"> - <td>{$row.display_name}</td> - <td class="right nowrap">{$row.amount|crmMoney} </td> - <td>{$row.source}</td> - {assign var="element_name" value="fee_amount_"|cat:$row.contribution_id} - <td>{$form.$element_name.html}</td> - {assign var="element_name" value="payment_instrument_id_"|cat:$row.contribution_id} - <td class="form-text four">{$form.$element_name.html}</td> - {assign var="element_name" value="check_number_"|cat:$row.contribution_id} - <td class="form-text four">{$form.$element_name.html|crmAddClass:four}</td> - {assign var="element_name" value="trxn_id_"|cat:$row.contribution_id} - <td>{$form.$element_name.html|crmAddClass:eight}</td> - {assign var="element_name" value="trxn_date_"|cat:$row.contribution_id} - <td>{$form.$element_name.html}</td> -</tr> -{/foreach} -</table> + {foreach from=$rows item=row} + <tr class="{cycle values="odd-row,even-row"}"> + <td>{$row.display_name}</td> + <td class="right nowrap">{$row.amount|crmMoney} </td> + <td>{$row.source}</td> + {assign var="element_name" value="fee_amount_"|cat:$row.contribution_id} + <td>{$form.$element_name.html}</td> + {assign var="element_name" value="payment_instrument_id_"|cat:$row.contribution_id} + <td class="form-text four">{$form.$element_name.html}</td> + {assign var="element_name" value="check_number_"|cat:$row.contribution_id} + <td class="form-text four">{$form.$element_name.html|crmAddClass:four}</td> + {assign var="element_name" value="trxn_id_"|cat:$row.contribution_id} + <td>{$form.$element_name.html|crmAddClass:eight}</td> + {assign var="element_name" value="trxn_date_"|cat:$row.contribution_id} + <td>{$form.$element_name.html}</td> + </tr> + {/foreach} + </table> <div class="crm-submit-buttons">{$form.buttons.html}</div> -</fieldset> </div> diff --git a/civicrm/templates/CRM/Contribute/Form/UpdateBilling.tpl b/civicrm/templates/CRM/Contribute/Form/UpdateBilling.tpl index 8c819d0f10..72d13b28f6 100644 --- a/civicrm/templates/CRM/Contribute/Form/UpdateBilling.tpl +++ b/civicrm/templates/CRM/Contribute/Form/UpdateBilling.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="help"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $mode eq 'auto_renew'} {ts}Use this form to update the credit card and billing name and address used with the auto-renewal option for your {$membershipType} membership.{/ts} {else} diff --git a/civicrm/templates/CRM/Contribute/Page/ContributionPage.tpl b/civicrm/templates/CRM/Contribute/Page/ContributionPage.tpl index a4665f8026..f39728a087 100644 --- a/civicrm/templates/CRM/Contribute/Page/ContributionPage.tpl +++ b/civicrm/templates/CRM/Contribute/Page/ContributionPage.tpl @@ -99,7 +99,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$newPageURL}No contribution pages have been created yet. Click <a accesskey="N" href='%1'>here</a> to create a new contribution page.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Page/ContributionRecurPayments.tpl b/civicrm/templates/CRM/Contribute/Page/ContributionRecurPayments.tpl index 16873b7b83..8867ffe409 100644 --- a/civicrm/templates/CRM/Contribute/Page/ContributionRecurPayments.tpl +++ b/civicrm/templates/CRM/Contribute/Page/ContributionRecurPayments.tpl @@ -36,7 +36,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No contributions have been recorded for this recurring contribution.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Page/ContributionType.tpl b/civicrm/templates/CRM/Contribute/Page/ContributionType.tpl index fd1b6befbd..25103e624d 100644 --- a/civicrm/templates/CRM/Contribute/Page/ContributionType.tpl +++ b/civicrm/templates/CRM/Contribute/Page/ContributionType.tpl @@ -49,7 +49,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl b/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl index 919e854cb0..43e62b4ebf 100644 --- a/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl +++ b/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl @@ -40,7 +40,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}You do not have any active Personal Campaign pages.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Page/Premium.tpl b/civicrm/templates/CRM/Contribute/Page/Premium.tpl index 3737acf5ae..5dd5aa9157 100644 --- a/civicrm/templates/CRM/Contribute/Page/Premium.tpl +++ b/civicrm/templates/CRM/Contribute/Page/Premium.tpl @@ -51,11 +51,11 @@ {if $showForm eq false} <div class="messages status no-popup"> {if $products ne null } - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p='civicrm/admin/contribute/addProductToPage' q="reset=1&action=update&id=$id"}{/capture} {ts 1=$crmURL}There are no premiums offered on this contribution page yet. You can <a href='%1'>add one</a>.{/ts} {else} - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$managePremiumsURL}There are no active premiums for your site. You can <a href='%1'>create and/or enable premiums here</a>.{/ts} {/if} </div> diff --git a/civicrm/templates/CRM/Contribute/Page/Tab.tpl b/civicrm/templates/CRM/Contribute/Page/Tab.tpl index 8e17896d60..e6b2ce8d71 100644 --- a/civicrm/templates/CRM/Contribute/Page/Tab.tpl +++ b/civicrm/templates/CRM/Contribute/Page/Tab.tpl @@ -63,7 +63,7 @@ {include file="CRM/Contribute/Form/Selector.tpl"} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No contributions have been recorded from this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl b/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl index 29ae828479..0520ebc1a3 100644 --- a/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl @@ -71,7 +71,7 @@ {/if} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no contributions on record for you.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Core/Form/EntityForm.tpl b/civicrm/templates/CRM/Core/Form/EntityForm.tpl index a14bd7686c..903eb96bb3 100644 --- a/civicrm/templates/CRM/Core/Form/EntityForm.tpl +++ b/civicrm/templates/CRM/Core/Form/EntityForm.tpl @@ -12,7 +12,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$deleteMessage|escape} </div> {else} diff --git a/civicrm/templates/CRM/Custom/Form/ChangeFieldType.tpl b/civicrm/templates/CRM/Custom/Form/ChangeFieldType.tpl index d3ddb9aef6..e87067ea84 100644 --- a/civicrm/templates/CRM/Custom/Form/ChangeFieldType.tpl +++ b/civicrm/templates/CRM/Custom/Form/ChangeFieldType.tpl @@ -9,7 +9,7 @@ *} <div class="crm-block crm-form-block crm-custom-field-form-block"> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> - <div class='status'><div class="icon inform-icon"></div> + <div class='status'>{icon icon="fa-info-circle"}{/icon} {ts}Warning: This functionality is currently in beta stage. Consider backing up your database before using it. Click "Cancel" to return to the "edit custom field" form without making changes.{/ts} </div> <table class="form-layout"> diff --git a/civicrm/templates/CRM/Custom/Form/DeleteField.tpl b/civicrm/templates/CRM/Custom/Form/DeleteField.tpl index 60a3e2ee31..fbb546d19a 100644 --- a/civicrm/templates/CRM/Custom/Form/DeleteField.tpl +++ b/civicrm/templates/CRM/Custom/Form/DeleteField.tpl @@ -10,7 +10,7 @@ {* this template is used for confirmation of delete for a Fields *} <div class="crm-block crm-form-block crm-custom-deletefield-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}WARNING: Deleting this custom field will result in the loss of all '%1' data. Any Profile form and listings field(s) linked with '%1' will also be deleted.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> diff --git a/civicrm/templates/CRM/Custom/Form/DeleteFile.tpl b/civicrm/templates/CRM/Custom/Form/DeleteFile.tpl index 7507bc1d55..9bd7c6fdb5 100644 --- a/civicrm/templates/CRM/Custom/Form/DeleteFile.tpl +++ b/civicrm/templates/CRM/Custom/Form/DeleteFile.tpl @@ -11,7 +11,7 @@ <fieldset><legend>{ts}Delete Attached File{/ts}</legend> <div class="status"> <dl> - <dt><div class="icon inform-icon"></div></dt> + <dt>{icon icon="fa-info-circle"}{/icon}</dt> <dd> {ts}WARNING: Are you sure you want to delete the attached file?{/ts} </dd> diff --git a/civicrm/templates/CRM/Custom/Form/DeleteGroup.tpl b/civicrm/templates/CRM/Custom/Form/DeleteGroup.tpl index e6f4831401..cd77148e29 100644 --- a/civicrm/templates/CRM/Custom/Form/DeleteGroup.tpl +++ b/civicrm/templates/CRM/Custom/Form/DeleteGroup.tpl @@ -14,7 +14,7 @@ {include file="CRM/common/formButtons.tpl" location="top"} </div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}WARNING: Deleting this custom field set will result in the loss of all '%1' data.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> <div class="crm-submit-buttons"> diff --git a/civicrm/templates/CRM/Custom/Form/Field.tpl b/civicrm/templates/CRM/Custom/Form/Field.tpl index 41700a80d6..fe0d691482 100644 --- a/civicrm/templates/CRM/Custom/Form/Field.tpl +++ b/civicrm/templates/CRM/Custom/Form/Field.tpl @@ -77,7 +77,7 @@ {$form.filter.html} <span><a class="crm-hover-button toggle-contact-ref-mode" href="#Group">{ts}Filter by Group{/ts}</a></span> <br /> - <span class="description">{ts}Filter contact search results for this field using Contact get API parameters. EXAMPLE: To list Students in group 3:{/ts} "action=get&group=3&contact_sub_type=Student" {docURL page="Using the API" resource="wiki"}</span> + <span class="description">{ts}Filter contact search results for this field using Contact get API parameters. EXAMPLE: To list Students in group 3:{/ts} "action=get&group=3&contact_sub_type=Student" {docURL page="dev/api"}</span> </td> </tr> <tr class="crm-custom-field-form-block-options_per_line" id="optionsPerLine" {if $action neq 2 && ($form.data_type.value.0.0 >= 4 && $form.data_type.value.1.0 neq 'CheckBox' || $form.data_type.value.1.0 neq 'Radio' )}class="hiddenElement"{/if}> diff --git a/civicrm/templates/CRM/Custom/Form/Option.tpl b/civicrm/templates/CRM/Custom/Form/Option.tpl index 5a1fb626aa..f45cb95e8b 100644 --- a/civicrm/templates/CRM/Custom/Form/Option.tpl +++ b/civicrm/templates/CRM/Custom/Form/Option.tpl @@ -14,7 +14,7 @@ {/if} {* $action ne view *} {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this custom field option will result in the loss of all related data.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Custom/Page/Option.tpl b/civicrm/templates/CRM/Custom/Page/Option.tpl index 41b49ac784..2aec75a532 100644 --- a/civicrm/templates/CRM/Custom/Page/Option.tpl +++ b/civicrm/templates/CRM/Custom/Page/Option.tpl @@ -12,7 +12,7 @@ {else} {if $reusedNames} <div class="message status"> - <div class="icon inform-icon"></div> {ts 1=$reusedNames}These Multiple Choice Options are shared by the following custom fields: %1{/ts} + {icon icon="fa-info-circle"}{/icon} {ts 1=$reusedNames}These Multiple Choice Options are shared by the following custom fields: %1{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Dashlet/Page/Blog.tpl b/civicrm/templates/CRM/Dashlet/Page/Blog.tpl index 16d33ff2de..be40890a77 100644 --- a/civicrm/templates/CRM/Dashlet/Page/Blog.tpl +++ b/civicrm/templates/CRM/Dashlet/Page/Blog.tpl @@ -60,7 +60,7 @@ {/foreach} {if !$feeds} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Sorry but we are not able to provide this at the moment.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Form/ManageEvent/Delete.tpl b/civicrm/templates/CRM/Event/Form/ManageEvent/Delete.tpl index 4ef9efa2be..5503063595 100644 --- a/civicrm/templates/CRM/Event/Form/ManageEvent/Delete.tpl +++ b/civicrm/templates/CRM/Event/Form/ManageEvent/Delete.tpl @@ -13,7 +13,7 @@ {include file="CRM/common/formButtons.tpl" location="top"} </div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <div> {if $isTemplate} {ts}Warning: Deleting this event template will also delete associated Event Registration Page and Event Fee configurations.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} diff --git a/civicrm/templates/CRM/Event/Form/Participant.tpl b/civicrm/templates/CRM/Event/Form/Participant.tpl index 069ad4e287..bf8a4c4fdf 100644 --- a/civicrm/templates/CRM/Event/Form/Participant.tpl +++ b/civicrm/templates/CRM/Event/Form/Participant.tpl @@ -196,7 +196,7 @@ {if $action eq 8} {* If action is Delete *} <div class="crm-participant-form-block-delete messages status no-popup"> <div class="crm-content"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this registration will result in the loss of related payment records (if any).{/ts} {ts}Do you want to continue?{/ts} </div> {if $additionalParticipant} diff --git a/civicrm/templates/CRM/Event/Form/Registration/Register.tpl b/civicrm/templates/CRM/Event/Form/Registration/Register.tpl index cc2ccfdb34..cc4dedfac3 100644 --- a/civicrm/templates/CRM/Event/Form/Registration/Register.tpl +++ b/civicrm/templates/CRM/Event/Form/Registration/Register.tpl @@ -7,6 +7,11 @@ | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ *} +{if call_user_func(array('CRM_Core_Permission','check'), 'administer CiviCRM') } + {capture assign="buttonTitle"}{ts}Configure Event{/ts}{/capture} + {crmButton target="_blank" p="civicrm/event/manage/settings" q="reset=1&action=update&id=`$event.id`" fb=1 title="$buttonTitle" icon="fa-wrench"}{ts}Configure{/ts}{/crmButton} + <div class='clear'></div> +{/if} {* Callback snippet: Load payment processor *} {if $action & 1024} {include file="CRM/Event/Form/Registration/PreviewHeader.tpl"} @@ -55,7 +60,7 @@ {$form.additional_participants.html}{if $contact_id || $contact_id == NULL}{ts}(including yourself){/ts}{/if} <br/> <span - class="description">{ts}Fill in your registration information on this page. If you are registering additional people, you will be able to enter their registration information after you complete this page and click "Continue".{/ts}</span> + class="description">{ts}Fill in your registration information on this page. If you are registering additional people, you will be able to enter their registration information after you complete this page and click "Review your registration".{/ts}</span> </div> <div class="clear"></div> </div> diff --git a/civicrm/templates/CRM/Event/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Event/Form/Search/EmptyResults.tpl index d71c6369d3..593f14522c 100644 --- a/civicrm/templates/CRM/Event/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Event/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Event/Form/Task/Cancel.tpl b/civicrm/templates/CRM/Event/Form/Task/Cancel.tpl index acf605096e..d7badca1f9 100644 --- a/civicrm/templates/CRM/Event/Form/Task/Cancel.tpl +++ b/civicrm/templates/CRM/Event/Form/Task/Cancel.tpl @@ -10,7 +10,7 @@ {* Confirmation of Cancel Registration *} <div class="crm-block crm-form-block crm-event-cancel-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <div> <p>{ts}Are you sure you want to set status to Cancelled for the selected participants?{/ts}</p> <p>{include file="CRM/Event/Form/Task.tpl"}</p> diff --git a/civicrm/templates/CRM/Event/Form/Task/Delete.tpl b/civicrm/templates/CRM/Event/Form/Task/Delete.tpl index eb35a19794..b99fa017ee 100644 --- a/civicrm/templates/CRM/Event/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Event/Form/Task/Delete.tpl @@ -10,7 +10,7 @@ {* Confirmation of participation deletes *} <div class="crm-block crm-form-block crm-event-delete-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <div> <p>{ts}Are you sure you want to delete the selected participations? This delete operation cannot be undone and will delete all transactions and activity associated with these participations.{/ts}</p> <p>{include file="CRM/Event/Form/Task.tpl"}</p> diff --git a/civicrm/templates/CRM/Event/Form/Task/Print.tpl b/civicrm/templates/CRM/Event/Form/Task/Print.tpl index f80be344b9..013cf6fd28 100644 --- a/civicrm/templates/CRM/Event/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Event/Form/Task/Print.tpl @@ -59,6 +59,6 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}There are no records selected for Print.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Event/Form/Task/SearchTaskHookSample.tpl index 339070156c..9cfdab0008 100644 --- a/civicrm/templates/CRM/Event/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Event/Form/Task/SearchTaskHookSample.tpl @@ -31,6 +31,6 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}There are no records selected.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Page/DashBoard.tpl b/civicrm/templates/CRM/Event/Page/DashBoard.tpl index b5db9cad5e..3ca364f093 100644 --- a/civicrm/templates/CRM/Event/Page/DashBoard.tpl +++ b/civicrm/templates/CRM/Event/Page/DashBoard.tpl @@ -124,7 +124,7 @@ <br /> <div class="messages status no-popup"> <table> - <tr><div class="icon inform-icon"></div></tr> + <tr>{icon icon="fa-info-circle"}{/icon}</tr> <tr> {ts}There are no active Events to display.{/ts} {ts 1=$newEventURL}You can <a href="%1">Create a New Event</a> now.{/ts} diff --git a/civicrm/templates/CRM/Event/Page/List.tpl b/civicrm/templates/CRM/Event/Page/List.tpl index 4cbf20b541..e4578b1d49 100644 --- a/civicrm/templates/CRM/Event/Page/List.tpl +++ b/civicrm/templates/CRM/Event/Page/List.tpl @@ -10,10 +10,8 @@ {* Displays current and upcoming public Events Listing as an HTML page. *} {include file="CRM/common/jsortable.tpl"} <div class="crm-section crm-event-list"> - {if $eventCartEnabled} - <a href="{crmURL p='civicrm/event/view_cart' }" class="button crm-shoppingcart-button"><i class="crm-i fa-shopping-cart" aria-hidden="true"></i> {ts}View Cart{/ts}</a> - <a href="{crmURL p='civicrm/event/cart_checkout'}" class="button crm-check-out-button"><i class="crm-i fa-credit-card" aria-hidden="true"></i> {ts}Checkout{/ts}</a> - {/if} + {crmRegion name="crm-event-list-pre"} + {/crmRegion} <table id="options" class="display"> <thead> @@ -48,4 +46,7 @@ </tr> {/foreach} </table> + + {crmRegion name="crm-event-list-post"} + {/crmRegion} </div> diff --git a/civicrm/templates/CRM/Event/Page/ManageEvent.tpl b/civicrm/templates/CRM/Event/Page/ManageEvent.tpl index 0f4a98d4aa..099221a5af 100644 --- a/civicrm/templates/CRM/Event/Page/ManageEvent.tpl +++ b/civicrm/templates/CRM/Event/Page/ManageEvent.tpl @@ -137,7 +137,7 @@ {else} {if $isSearch eq 1} <div class="status messages"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=browseURL}{crmURL p='civicrm/event/manage' q="reset=1"}{/capture} {ts}No available Events match your search criteria. Suggestions:{/ts} <div class="spacer"></div> @@ -151,7 +151,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$newEventURL}There are no events scheduled for the date range. You can <a href='%1'>add one</a>.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Page/ParticipantListing/Name.tpl b/civicrm/templates/CRM/Event/Page/ParticipantListing/Name.tpl index ec1fde1a12..695f53bebe 100644 --- a/civicrm/templates/CRM/Event/Page/ParticipantListing/Name.tpl +++ b/civicrm/templates/CRM/Event/Page/ParticipantListing/Name.tpl @@ -33,7 +33,7 @@ {else} <div class='spacer'></div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are currently no participants registered for this event.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Page/ParticipantListing/NameAndEmail.tpl b/civicrm/templates/CRM/Event/Page/ParticipantListing/NameAndEmail.tpl index 362f678fa7..0626d6d15d 100644 --- a/civicrm/templates/CRM/Event/Page/ParticipantListing/NameAndEmail.tpl +++ b/civicrm/templates/CRM/Event/Page/ParticipantListing/NameAndEmail.tpl @@ -34,7 +34,7 @@ {else} <div class='spacer'></div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are currently no participants registered for this event.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Page/ParticipantListing/NameStatusAndDate.tpl b/civicrm/templates/CRM/Event/Page/ParticipantListing/NameStatusAndDate.tpl index 6e875175c9..650dee0dea 100644 --- a/civicrm/templates/CRM/Event/Page/ParticipantListing/NameStatusAndDate.tpl +++ b/civicrm/templates/CRM/Event/Page/ParticipantListing/NameStatusAndDate.tpl @@ -35,7 +35,7 @@ {else} <div class='spacer'></div> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are currently no participants registered for this event.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Event/Page/Tab.tpl b/civicrm/templates/CRM/Event/Page/Tab.tpl index a85621d558..56f95044a6 100644 --- a/civicrm/templates/CRM/Event/Page/Tab.tpl +++ b/civicrm/templates/CRM/Event/Page/Tab.tpl @@ -43,7 +43,7 @@ {else} <div class="messages status no-popup"> <table class="form-layout"> - <tr><div class="icon inform-icon"></div> + <tr>{icon icon="fa-info-circle"}{/icon} {ts}No event registrations have been recorded for this contact.{/ts} </tr> </table> diff --git a/civicrm/templates/CRM/Event/Page/UserDashboard.tpl b/civicrm/templates/CRM/Event/Page/UserDashboard.tpl index 037ab085a4..5da7e3a430 100644 --- a/civicrm/templates/CRM/Event/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Event/Page/UserDashboard.tpl @@ -50,7 +50,7 @@ {/strip} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}You are not registered for any current or upcoming Events.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Financial/Form/Export.tpl b/civicrm/templates/CRM/Financial/Form/Export.tpl index 5b974eb2a6..4b1bf47f1d 100644 --- a/civicrm/templates/CRM/Financial/Form/Export.tpl +++ b/civicrm/templates/CRM/Financial/Form/Export.tpl @@ -10,7 +10,7 @@ {* Confirmation of Export Batch(s) *} <h3>{ts}Export Batch{/ts}</h3> <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Warning: You will not be able to reopen or change the batch after it is exported. Are you sure you want to export?{/ts} </div> <div class="crm-block crm-form-block crm-export_batch-form-block"> diff --git a/civicrm/templates/CRM/Financial/Form/FinancialAccount.tpl b/civicrm/templates/CRM/Financial/Form/FinancialAccount.tpl index efa70c635e..87026e64e2 100644 --- a/civicrm/templates/CRM/Financial/Form/FinancialAccount.tpl +++ b/civicrm/templates/CRM/Financial/Form/FinancialAccount.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-contribution_type-form-block crm-financial_type-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: You cannot delete a {$delName} Financial Account if it is currently used by any Financial Types. Consider disabling this option instead.{/ts} {ts}Deleting a financial type cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Financial/Form/FinancialBatch.tpl b/civicrm/templates/CRM/Financial/Form/FinancialBatch.tpl index 55a48bcee1..6dbaef8787 100644 --- a/civicrm/templates/CRM/Financial/Form/FinancialBatch.tpl +++ b/civicrm/templates/CRM/Financial/Form/FinancialBatch.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-financial_type-form-block"> {if $action eq 8} <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: You cannot delete a financial type if it is currently used by any Contributions, Contribution Pages or Membership Types. Consider disabling this option instead.{/ts} {ts}Deleting a financial type cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Financial/Form/FinancialTypeAccount.tpl b/civicrm/templates/CRM/Financial/Form/FinancialTypeAccount.tpl index 0ed2b3d5a6..498460aa74 100644 --- a/civicrm/templates/CRM/Financial/Form/FinancialTypeAccount.tpl +++ b/civicrm/templates/CRM/Financial/Form/FinancialTypeAccount.tpl @@ -11,7 +11,7 @@ <div class="crm-block crm-form-block crm-financial_type-form-block"> {if $action eq 8} <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: You cannot delete a financial type if it is currently used by any Contributions, Contribution Pages or Membership Types. Consider disabling this option instead.{/ts} {ts}Deleting a financial type cannot be undone. Unbalanced transactions may be created if you delete this account.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Financial/Page/FinancialAccount.tpl b/civicrm/templates/CRM/Financial/Page/FinancialAccount.tpl index 711003614e..646255fe29 100644 --- a/civicrm/templates/CRM/Financial/Page/FinancialAccount.tpl +++ b/civicrm/templates/CRM/Financial/Page/FinancialAccount.tpl @@ -69,7 +69,7 @@ </div> {else} <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL q="action=add&reset=1"}{/capture} {ts 1=$crmURL}There are no Financial Account entered. You can <a href='%1'>add one</a>.{/ts} </div> diff --git a/civicrm/templates/CRM/Financial/Page/FinancialType.tpl b/civicrm/templates/CRM/Financial/Page/FinancialType.tpl index 59851127e8..d42ca6f53b 100644 --- a/civicrm/templates/CRM/Financial/Page/FinancialType.tpl +++ b/civicrm/templates/CRM/Financial/Page/FinancialType.tpl @@ -53,7 +53,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Financial/Page/FinancialTypeAccount.tpl b/civicrm/templates/CRM/Financial/Page/FinancialTypeAccount.tpl index 59732c8231..5bc7943483 100644 --- a/civicrm/templates/CRM/Financial/Page/FinancialTypeAccount.tpl +++ b/civicrm/templates/CRM/Financial/Page/FinancialTypeAccount.tpl @@ -56,7 +56,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL q="action=add&reset=1&aid=$aid"}{/capture} {ts 1=$crmURL}There are no financial accounts assigned to this financial type. You can <a href='%1'>assign one</a>.{/ts} </div> diff --git a/civicrm/templates/CRM/Grant/Form/Grant.tpl b/civicrm/templates/CRM/Grant/Form/Grant.tpl index 7361b97e3c..6fa4d9f9ac 100644 --- a/civicrm/templates/CRM/Grant/Form/Grant.tpl +++ b/civicrm/templates/CRM/Grant/Form/Grant.tpl @@ -12,7 +12,7 @@ <div class="crm-block crm-form-block crm-grant-form-block"> {if $action eq 8} <div class="messages status"> - <p><div class="icon inform-icon"></div> + <p>{icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete this Grant?{/ts} {ts}This action cannot be undone.{/ts}</p> <p>{include file="CRM/Grant/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Grant/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Grant/Form/Search/EmptyResults.tpl index dafc913626..5237c908d6 100644 --- a/civicrm/templates/CRM/Grant/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Grant/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Grant/Form/Task/Delete.tpl b/civicrm/templates/CRM/Grant/Form/Task/Delete.tpl index 3016c073f9..85f3168b06 100644 --- a/civicrm/templates/CRM/Grant/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Grant/Form/Task/Delete.tpl @@ -10,7 +10,7 @@ {* Confirmation of Grant delete *} <div class="crm-block crm-form-block crm-grant-task-delete-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete the selected Grants? This delete operation cannot be undone and will delete all transactions associated with these grants.{/ts} <p>{include file="CRM/Grant/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Grant/Form/Task/Print.tpl b/civicrm/templates/CRM/Grant/Form/Task/Print.tpl index 43e7f35ddb..98e16d5d4a 100644 --- a/civicrm/templates/CRM/Grant/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Grant/Form/Task/Print.tpl @@ -43,7 +43,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Grant/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Grant/Form/Task/SearchTaskHookSample.tpl index 6520e0845c..144ad174ca 100644 --- a/civicrm/templates/CRM/Grant/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Grant/Form/Task/SearchTaskHookSample.tpl @@ -28,7 +28,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Grant/Page/Tab.tpl b/civicrm/templates/CRM/Grant/Page/Tab.tpl index 8ad0066174..bbebe0592e 100644 --- a/civicrm/templates/CRM/Grant/Page/Tab.tpl +++ b/civicrm/templates/CRM/Grant/Page/Tab.tpl @@ -35,7 +35,7 @@ {include file="CRM/Grant/Form/Selector.tpl"} {else} <div class="messages status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No grants have been recorded for this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Logging/ReportDetail.tpl b/civicrm/templates/CRM/Logging/ReportDetail.tpl index 63b3e7c1a0..9f647186b7 100644 --- a/civicrm/templates/CRM/Logging/ReportDetail.tpl +++ b/civicrm/templates/CRM/Logging/ReportDetail.tpl @@ -12,7 +12,7 @@ {if $raw} <div class="status"> <dl> - <dt><div class="icon inform-icon"></div></dt> + <dt>{icon icon="fa-info-circle"}{/icon}</dt> <dd> {ts}WARNING: Are you sure you want to revert the below changes?{/ts} </dd> @@ -27,7 +27,7 @@ {/if} {else} <div class='messages status'> - <div class='icon inform-icon'></div> {ts}This report can not be displayed because there are no relevant entries in the logging tables.{/ts} + {icon icon="fa-info-circle"}{/icon}{ts}This report can not be displayed because there are no relevant entries in the logging tables.{/ts} </div> {/if} {if $layout neq 'overlay'} diff --git a/civicrm/templates/CRM/Mailing/Form/InsertTokens.tpl b/civicrm/templates/CRM/Mailing/Form/InsertTokens.tpl index 8929ddeda6..06634d7c97 100644 --- a/civicrm/templates/CRM/Mailing/Form/InsertTokens.tpl +++ b/civicrm/templates/CRM/Mailing/Form/InsertTokens.tpl @@ -54,8 +54,26 @@ var isMailing = false; {/if} {literal} +/** + * Checks if both the Save Template and Update Template fields exist. + * These fields will not exist if user does not have the edit message + * templates permission. + * + * @param {String} prefix + */ +function manageTemplateFieldsExists(prefix) { + var saveTemplate = document.getElementsByName(prefix + "saveTemplate"); + var updateTemplate = document.getElementsByName(prefix + "updateTemplate"); + + return saveTemplate.length > 0 && updateTemplate.length > 0; +} + function showSaveUpdateChkBox(prefix) { prefix = prefix || ''; + if (!manageTemplateFieldsExists(prefix)) { + document.getElementById(prefix + "saveDetails").style.display = "none"; + return; + } if (document.getElementById(prefix + "template") == null) { if (document.getElementsByName(prefix + "saveTemplate")[0].checked){ document.getElementById(prefix + "saveDetails").style.display = "block"; @@ -89,9 +107,11 @@ function showSaveUpdateChkBox(prefix) { } function selectValue( val, prefix) { - document.getElementsByName(prefix + "saveTemplate")[0].checked = false; - document.getElementsByName(prefix + "updateTemplate")[0].checked = false; - showSaveUpdateChkBox(prefix); + if (manageTemplateFieldsExists(prefix)) { + document.getElementsByName(prefix + "saveTemplate")[0].checked = false; + document.getElementsByName(prefix + "updateTemplate")[0].checked = false; + showSaveUpdateChkBox(prefix); + } if ( !val ) { if (document.getElementById("subject").length) { document.getElementById("subject").value =""; @@ -180,6 +200,9 @@ if ( isMailing ) { function verify(select, prefix) { prefix = prefix || ''; + if (!manageTemplateFieldsExists(prefix)) { + return; + } if (document.getElementsByName(prefix + "saveTemplate")[0].checked == false) { document.getElementById(prefix + "saveDetails").style.display = "none"; } diff --git a/civicrm/templates/CRM/Mailing/Form/Settings.hlp b/civicrm/templates/CRM/Mailing/Form/Settings.hlp index bb82ab94fc..99d515ee39 100644 --- a/civicrm/templates/CRM/Mailing/Form/Settings.hlp +++ b/civicrm/templates/CRM/Mailing/Form/Settings.hlp @@ -21,4 +21,8 @@ </p><p> {ts}"user and user admin" only means that only users that received the mailing or administrators can view the content of this email as a web page; the recipients will have to log in to be able to view the message{/ts} <p></p> +{htxt id="mailing-sync-interval-title"} + {ts}Sync Interval{/ts} +{ts}"civimail_sync_interval" specifies how frequently CiviMail records which emails it has sent. A value of 1 means that it updates the database with every email sent, but this may have a performance hit.{/ts}: +<p></p> {/htxt} diff --git a/civicrm/templates/CRM/Mailing/Form/Task/Print.tpl b/civicrm/templates/CRM/Mailing/Form/Task/Print.tpl index b5a7c10110..de38e6e8f6 100644 --- a/civicrm/templates/CRM/Mailing/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Mailing/Form/Task/Print.tpl @@ -43,7 +43,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"/> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Mailing/Page/Browse.tpl b/civicrm/templates/CRM/Mailing/Page/Browse.tpl index 7abb827f0a..448cd77bdb 100644 --- a/civicrm/templates/CRM/Mailing/Page/Browse.tpl +++ b/civicrm/templates/CRM/Mailing/Page/Browse.tpl @@ -97,7 +97,7 @@ {/if} <div class="status messages"> <table class="form-layout"> - <tr><div class="icon inform-icon"></div> + <tr>{icon icon="fa-info-circle"}{/icon} {ts 1=$componentName}No %1 match your search criteria. Suggestions:{/ts} </tr> <div class="spacer"></div> @@ -111,7 +111,7 @@ {elseif $unscheduled} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p=$newMassUrl q='reset=1'}{/capture} {ts 1=$componentName}There are no Unscheduled %1.{/ts} {if $showLinks}{ts 1=$crmURL}You can <a href='%1'>create and send one</a>.{/ts}{/if} @@ -119,13 +119,13 @@ {elseif $archived} <div class="messages status no-popup"> - <div class="icon inform-icon"></div>  + {icon icon="fa-info-circle"}{/icon}  {capture assign=crmURL}{crmURL p='civicrm/mailing/browse/scheduled' q='scheduled=true&reset=1'}{$qVal}{/capture} {ts 1=$crmURL 2=$componentName}There are no Archived %2. You can archive %2 from <a href='%1'>Scheduled or Sent %2</a>.{/ts} </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p=$newMassUrl q='reset=1'}{/capture} {capture assign=archiveURL}{crmURL p='civicrm/mailing/browse/archived' q='reset=1'}{$qVal}{/capture} {ts 1=$componentName}There are no Scheduled or Sent %1.{/ts} diff --git a/civicrm/templates/CRM/Mailing/Page/Confirm.tpl b/civicrm/templates/CRM/Mailing/Page/Confirm.tpl index d84fca88fe..d466cf7d42 100644 --- a/civicrm/templates/CRM/Mailing/Page/Confirm.tpl +++ b/civicrm/templates/CRM/Mailing/Page/Confirm.tpl @@ -8,7 +8,7 @@ +--------------------------------------------------------------------+ *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $success} {ts 1=$display_name 2=$email 3=$group}<strong>%1 (%2)</strong> has been successfully subscribed to the <strong>%3</strong> mailing list.{/ts} {else} diff --git a/civicrm/templates/CRM/Mailing/Page/Event.tpl b/civicrm/templates/CRM/Mailing/Page/Event.tpl index 7c66c8be0e..4636f96d5e 100644 --- a/civicrm/templates/CRM/Mailing/Page/Event.tpl +++ b/civicrm/templates/CRM/Mailing/Page/Event.tpl @@ -39,7 +39,7 @@ {/strip} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}There are currently no %1.{/ts} </div> diff --git a/civicrm/templates/CRM/Mailing/Page/Resubscribe.tpl b/civicrm/templates/CRM/Mailing/Page/Resubscribe.tpl index 95a6fd1175..47b413d078 100644 --- a/civicrm/templates/CRM/Mailing/Page/Resubscribe.tpl +++ b/civicrm/templates/CRM/Mailing/Page/Resubscribe.tpl @@ -9,7 +9,7 @@ *} {if $confirm} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <label>{$display_name} ({$email})</label> {ts}has been successfully resubscribed.{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Member/Form/Membership.tpl b/civicrm/templates/CRM/Member/Form/Membership.tpl index 36e5d8678f..78d49280a1 100644 --- a/civicrm/templates/CRM/Member/Form/Membership.tpl +++ b/civicrm/templates/CRM/Member/Form/Membership.tpl @@ -10,7 +10,7 @@ {* this template is used for adding/editing/deleting memberships for a contact *} {if $isRecur} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}This membership is set to renew automatically {if $endDate}on {$endDate|crmDate}{/if}. Please be aware that any changes that you make here may not be reflected in the payment processor. Please ensure that you alter the related subscription at the payment processor.{/ts}</p> {if $cancelAutoRenew}<p>{ts 1=$cancelAutoRenew}To stop the automatic renewal: <a href="%1">Cancel auto-renew</a> @@ -42,7 +42,7 @@ {/if} {if !$emailExists and $action neq 8 and $context neq 'standalone'} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}You will not be able to send an automatic email receipt for this Membership because there is no email address recorded for this contact. If you want a receipt to be sent when this Membership is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the Membership.{/ts}</p> </div> {/if} @@ -65,7 +65,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$deleteMessage} </div> {else} diff --git a/civicrm/templates/CRM/Member/Form/MembershipRenewal.tpl b/civicrm/templates/CRM/Member/Form/MembershipRenewal.tpl index bfaf1acc92..73b1b6850a 100644 --- a/civicrm/templates/CRM/Member/Form/MembershipRenewal.tpl +++ b/civicrm/templates/CRM/Member/Form/MembershipRenewal.tpl @@ -15,7 +15,7 @@ {/if} {if !$email} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}You will not be able to send an automatic email receipt for this Renew Membership because there is no email address recorded for this contact. If you want a receipt to be sent when this Membership is recorded, click Cancel and then click Edit from the Summary tab to add an email address before Renewal the Membership.{/ts}</p> </div> {/if} @@ -29,7 +29,7 @@ {if $action eq 32768} {if $cancelAutoRenew} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts 1=$cancelAutoRenew}This membership is set to renew automatically {if $renewalDate}on {$renewalDate|crmDate}{/if}. You will need to cancel the auto-renew option if you want to modify the Membership Type, End Date or Membership Status. <a href="%1">Click here</a> if you want to cancel the automatic renewal option.{/ts}</p> diff --git a/civicrm/templates/CRM/Member/Form/MembershipStatus.tpl b/civicrm/templates/CRM/Member/Form/MembershipStatus.tpl index 0ae925ddfd..0994cd0251 100644 --- a/civicrm/templates/CRM/Member/Form/MembershipStatus.tpl +++ b/civicrm/templates/CRM/Member/Form/MembershipStatus.tpl @@ -13,7 +13,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$deleteMessage|escape} </div> {else} diff --git a/civicrm/templates/CRM/Member/Form/MembershipType.tpl b/civicrm/templates/CRM/Member/Form/MembershipType.tpl index c5ff09011b..8be9e23fd9 100644 --- a/civicrm/templates/CRM/Member/Form/MembershipType.tpl +++ b/civicrm/templates/CRM/Member/Form/MembershipType.tpl @@ -104,7 +104,7 @@ <fieldset><legend>{ts}Renewal Reminders{/ts}</legend> <div class="help"> {capture assign=reminderLink}{crmURL p='civicrm/admin/scheduleReminders' q='reset=1'}{/capture} - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$reminderLink}Configure membership renewal reminders using <a href="%1">Schedule Reminders</a>. If you have previously configured renewal reminder templates, you can re-use them with your new scheduled reminders.{/ts} {docURL page="user/email/scheduled-reminders"} </div> </fieldset> diff --git a/civicrm/templates/CRM/Member/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Member/Form/Search/EmptyResults.tpl index ec880d3b1e..fb2e3984f0 100644 --- a/civicrm/templates/CRM/Member/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Member/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Member/Form/Task/Delete.tpl b/civicrm/templates/CRM/Member/Form/Task/Delete.tpl index cabc7be1e9..585f457ee4 100644 --- a/civicrm/templates/CRM/Member/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Member/Form/Task/Delete.tpl @@ -10,7 +10,7 @@ {* Confirmation of membership deletes *} <div class="crm-block crm-form-block crm-member-task-delete-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <span>{ts}Are you sure you want to delete the selected memberships? This delete operation cannot be undone and will delete all transactions and activity associated with these memberships.{/ts}</span> <p>{include file="CRM/Member/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Member/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Member/Form/Task/SearchTaskHookSample.tpl index 170001ab8f..c906f807d0 100644 --- a/civicrm/templates/CRM/Member/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Member/Form/Task/SearchTaskHookSample.tpl @@ -30,7 +30,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Member/Page/MembershipType.tpl b/civicrm/templates/CRM/Member/Page/MembershipType.tpl index cea515a485..04dc38cc7d 100644 --- a/civicrm/templates/CRM/Member/Page/MembershipType.tpl +++ b/civicrm/templates/CRM/Member/Page/MembershipType.tpl @@ -10,7 +10,7 @@ {capture assign=reminderLink}{crmURL p='civicrm/admin/scheduleReminders' q='reset=1'}{/capture} <div class="help"> - <p><div class="icon inform-icon"></div> {ts}Membership types are used to categorize memberships. You can define an unlimited number of types. Each type incorporates a 'name' (Gold Member, Honor Society Member...), a description, a minimum fee (can be $0), and a duration (can be 'lifetime'). Each member type is specifically linked to the membership entity (organization) - e.g. Bay Area Chapter.{/ts} {docURL page="user/membership/defining-memberships/"}</p> + <p>{icon icon="fa-info-circle"}{/icon}{ts}Membership types are used to categorize memberships. You can define an unlimited number of types. Each type incorporates a 'name' (Gold Member, Honor Society Member...), a description, a minimum fee (can be $0), and a duration (can be 'lifetime'). Each member type is specifically linked to the membership entity (organization) - e.g. Bay Area Chapter.{/ts} {docURL page="user/membership/defining-memberships/"}</p> <p>{ts 1=$reminderLink}Configure membership renewal reminders using <a href="%1">Schedule Reminders</a>.{/ts} {docURL page="user/email/scheduled-reminders"}</p> </div> diff --git a/civicrm/templates/CRM/Member/Page/Tab.tpl b/civicrm/templates/CRM/Member/Page/Tab.tpl index d4abafedf5..249634931c 100644 --- a/civicrm/templates/CRM/Member/Page/Tab.tpl +++ b/civicrm/templates/CRM/Member/Page/Tab.tpl @@ -44,7 +44,7 @@ {/if} {if NOT ($activeMembers or $inActiveMembers) and $action ne 2 and $action ne 1 and $action ne 8 and $action ne 4 and $action ne 32768} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No memberships have been recorded for this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Member/Page/UserDashboard.tpl b/civicrm/templates/CRM/Member/Page/UserDashboard.tpl index 1e3cd972d1..084b6a22e0 100644 --- a/civicrm/templates/CRM/Member/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Member/Page/UserDashboard.tpl @@ -73,7 +73,7 @@ {if NOT ($activeMembers or $inActiveMembers)} <div class="messages status no-popup"> - <div class="icon inform-icon"></div></dt> + {icon icon="fa-info-circle"}{/icon}</dt> {ts}There are no memberships on record for you.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/PCP/Form/PCP/Delete.tpl b/civicrm/templates/CRM/PCP/Form/PCP/Delete.tpl index 8ca432991e..9ebac095e2 100644 --- a/civicrm/templates/CRM/PCP/Form/PCP/Delete.tpl +++ b/civicrm/templates/CRM/PCP/Form/PCP/Delete.tpl @@ -10,7 +10,7 @@ {* this template is used for confirmation of delete for a group *} <fieldset><legend>{ts}Delete Campaign Page {/ts}</legend> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}Are you sure you want to delete Campaign Page '%1'?{/ts}<br /> {ts}This action cannot be undone.{/ts} </div> diff --git a/civicrm/templates/CRM/PCP/Page/PCP.tpl b/civicrm/templates/CRM/PCP/Page/PCP.tpl index e16b55ffe4..9aca301ba3 100644 --- a/civicrm/templates/CRM/PCP/Page/PCP.tpl +++ b/civicrm/templates/CRM/PCP/Page/PCP.tpl @@ -53,7 +53,7 @@ </div> {else} <div class="messages status no-popup"> -<div class="icon inform-icon"></div> +{icon icon="fa-info-circle"}{/icon} {if $isSearch} {ts}There are no Personal Campaign Pages which match your search criteria.{/ts} {else} diff --git a/civicrm/templates/CRM/PCP/Page/PCPInfo.tpl b/civicrm/templates/CRM/PCP/Page/PCPInfo.tpl index 450f685bf5..866402fbfd 100644 --- a/civicrm/templates/CRM/PCP/Page/PCPInfo.tpl +++ b/civicrm/templates/CRM/PCP/Page/PCPInfo.tpl @@ -10,7 +10,7 @@ {* this template is used for displaying PCP information *} {if $owner} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p><strong>{ts}Personal Campaign Preview{/ts}</strong> - {ts}This is a preview of your Personal Campaign Page in support of{/ts} <a href="{$parentURL}"><strong>{$pageName}</strong></a>.</p> {ts}The current status of your page is{/ts}: <strong {if $pcp.status_id NEQ 2}class=disabled {/if}>{$owner.status}</strong>. {if $pcp.status_id NEQ 2}<br /><span class="description">{ts}You will receive an email notification when your page is Approved and you can begin promoting your campaign.{/ts}</span>{/if} diff --git a/civicrm/templates/CRM/Pledge/Form/Pledge.tpl b/civicrm/templates/CRM/Pledge/Form/Pledge.tpl index 81cd2afe3b..82c7e77087 100644 --- a/civicrm/templates/CRM/Pledge/Form/Pledge.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Pledge.tpl @@ -13,7 +13,7 @@ {else} {if !$email and $action neq 8 and $context neq 'standalone'} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}You will not be able to send an acknowledgment for this pledge because there is no email address recorded for this contact. If you want a acknowledgment to be sent when this pledge is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the pledge.{/ts}</p> </div> {/if} @@ -29,7 +29,7 @@ <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <span class="font-red bold">{ts}WARNING: Deleting this pledge will also delete any related pledge payments.{/ts} {ts}This action cannot be undone.{/ts}</span> <p>{ts}Consider cancelling the pledge instead if you want to maintain an audit trail and avoid losing payment data. To set the pledge status to Cancelled and cancel any not-yet-paid pledge payments, first click Cancel on this form. Then click the more > link from the pledge listing, and select the Cancel action.{/ts}</p> </div> @@ -43,7 +43,7 @@ <td class="label">{$form.amount.label}</td> <td> <span>{$form.currency.html|crmAddClass:eight} {$form.amount.html|crmAddClass:eight}</span> - {if $originalPledgeAmount}<div class="messages status no-popup"><div class="icon inform-icon"></div> {ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} + {if $originalPledgeAmount}<div class="messages status no-popup">{icon icon="fa-info-circle"}{/icon}{ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} </td> </tr> <tr class="crm-pledge-form-block-installments"> diff --git a/civicrm/templates/CRM/Pledge/Form/PledgeView.tpl b/civicrm/templates/CRM/Pledge/Form/PledgeView.tpl index a9276b3ac8..742e47a4bd 100644 --- a/civicrm/templates/CRM/Pledge/Form/PledgeView.tpl +++ b/civicrm/templates/CRM/Pledge/Form/PledgeView.tpl @@ -20,7 +20,7 @@ <tr class="crm-pledge-form-block-amount"> <td class="label">{ts}Total Pledge Amount{/ts}</td> <td><span class="bold">{$amount|crmMoney:$currency}</span> - {if $originalPledgeAmount}<div class="messages status no-popup"><div class="icon inform-icon"></div>{ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} + {if $originalPledgeAmount}<div class="messages status no-popup">{icon icon="fa-info-circle"}{/icon}{ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} </td> </tr> <tr class="crm-pledge-form-block-installments"><td class="label">{ts}To be paid in{/ts}</td><td>{$installments} {ts}installments of{/ts} {$original_installment_amount|crmMoney:$currency} {ts}every{/ts} {$frequency_interval} {$frequencyUnit}</td></tr> diff --git a/civicrm/templates/CRM/Pledge/Form/Search/EmptyResults.tpl b/civicrm/templates/CRM/Pledge/Form/Search/EmptyResults.tpl index df7b7dcd61..5a1812a2f1 100644 --- a/civicrm/templates/CRM/Pledge/Form/Search/EmptyResults.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Search/EmptyResults.tpl @@ -9,7 +9,7 @@ *} {* No matches for submitted search request. *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $qill}{ts}No matches found for:{/ts} {include file="CRM/common/displaySearchCriteria.tpl"} {else} diff --git a/civicrm/templates/CRM/Pledge/Form/Task/Delete.tpl b/civicrm/templates/CRM/Pledge/Form/Task/Delete.tpl index bfc15a2ffc..2a027be5d7 100644 --- a/civicrm/templates/CRM/Pledge/Form/Task/Delete.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Task/Delete.tpl @@ -9,7 +9,7 @@ *} {* Confirmation of participation deletes *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <p>{ts}Are you sure you want to delete the selected pledges? This delete operation cannot be undone and will delete all transactions associated with these pledges.{/ts}</p> <p>{include file="CRM/Pledge/Form/Task.tpl"}</p> </div> diff --git a/civicrm/templates/CRM/Pledge/Form/Task/Print.tpl b/civicrm/templates/CRM/Pledge/Form/Task/Print.tpl index a9a5995533..32d8829100 100644 --- a/civicrm/templates/CRM/Pledge/Form/Task/Print.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Task/Print.tpl @@ -43,7 +43,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no records selected for Print.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Pledge/Form/Task/SearchTaskHookSample.tpl b/civicrm/templates/CRM/Pledge/Form/Task/SearchTaskHookSample.tpl index d75e3879d2..7bf90eecb0 100644 --- a/civicrm/templates/CRM/Pledge/Form/Task/SearchTaskHookSample.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Task/SearchTaskHookSample.tpl @@ -30,7 +30,7 @@ {else} <div class="messages status no-popup"> - <dt><div class="icon inform-icon"></div> + <dt>{icon icon="fa-info-circle"}{/icon} {ts}There are no records selected.{/ts} </dl> </div> diff --git a/civicrm/templates/CRM/Pledge/Page/Tab.tpl b/civicrm/templates/CRM/Pledge/Page/Tab.tpl index 38740278c9..98e5a5c622 100644 --- a/civicrm/templates/CRM/Pledge/Page/Tab.tpl +++ b/civicrm/templates/CRM/Pledge/Page/Tab.tpl @@ -36,7 +36,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No pledges have been recorded from this contact.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl b/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl index f67db5d031..97ff8596d2 100644 --- a/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl @@ -45,7 +45,7 @@ {crmScript file='js/crm.expandRow.js'} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}There are no Pledges for your record.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Price/Form/Calculate.tpl b/civicrm/templates/CRM/Price/Form/Calculate.tpl index 153fb4af44..2c6c7c0395 100644 --- a/civicrm/templates/CRM/Price/Form/Calculate.tpl +++ b/civicrm/templates/CRM/Price/Form/Calculate.tpl @@ -157,7 +157,7 @@ function display(totalfee) { // totalfee is monetary, round it to 2 decimal points so it can // go as a float - CRM-13491 totalfee = Math.round(totalfee*100)/100; - var totalFormattedFee = CRM.formatMoney(totalfee); + var totalFormattedFee = symbol + ' ' + CRM.formatMoney(totalfee, true); cj('#pricevalue').html(totalFormattedFee); cj('#total_amount').val( totalfee ); diff --git a/civicrm/templates/CRM/Price/Form/DeleteField.tpl b/civicrm/templates/CRM/Price/Form/DeleteField.tpl index 236f1125dc..3259d4d282 100644 --- a/civicrm/templates/CRM/Price/Form/DeleteField.tpl +++ b/civicrm/templates/CRM/Price/Form/DeleteField.tpl @@ -10,7 +10,7 @@ {* this template is used for confirmation of delete for a Fields *} <div class="crm-block crm-form-block crm-price_field_delete-form-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$title}WARNING: Deleting this price field will result in the loss of all '%1' data.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> diff --git a/civicrm/templates/CRM/Price/Form/Option.tpl b/civicrm/templates/CRM/Price/Form/Option.tpl index e65c52bd79..18b72acd55 100644 --- a/civicrm/templates/CRM/Price/Form/Option.tpl +++ b/civicrm/templates/CRM/Price/Form/Option.tpl @@ -10,7 +10,7 @@ <div class="crm-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will result in the loss of all data.{/ts} {ts}This action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/Price/Form/PriceSet.tpl b/civicrm/templates/CRM/Price/Form/PriceSet.tpl index e41bdb7b1e..f2b56eb2b6 100644 --- a/civicrm/templates/CRM/Price/Form/PriceSet.tpl +++ b/civicrm/templates/CRM/Price/Form/PriceSet.tpl @@ -16,6 +16,13 @@ {assign var='adminFld' value=false} {if call_user_func(array('CRM_Core_Permission','check'), 'administer CiviCRM') } {assign var='adminFld' value=true} + {if $priceSet.id && !$priceSet.is_quick_config} + <div class='float-right'> + <a class="crm-hover-button" target="_blank" href="{crmURL p="civicrm/admin/price/field" q="reset=1&action=browse&sid=`$priceSet.id`" fb=1}"> + {icon icon="fa-wrench"}{ts}Edit Price Set{/ts}{/icon} + </a> + </div> + {/if} {/if} {foreach from=$priceSet.fields item=element key=field_id} diff --git a/civicrm/templates/CRM/Price/Page/Field.tpl b/civicrm/templates/CRM/Price/Page/Field.tpl index 9a3b9e1add..88ec508d58 100644 --- a/civicrm/templates/CRM/Price/Page/Field.tpl +++ b/civicrm/templates/CRM/Price/Page/Field.tpl @@ -15,7 +15,7 @@ {include file="CRM/Price/Form/Preview.tpl"} {elseif ($usedBy and $action eq 8) or $usedBy.civicrm_event or $usedBy.civicrm_contribution_page} <div id="price_set_used_by" class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $action eq 8} {ts 1=$usedPriceSetTitle}Unable to delete the '%1' Price Field - it is currently in use by one or more active events or contribution pages or contributions or event templates.{/ts} {/if} @@ -89,7 +89,7 @@ {else} {if $action eq 16} <div class="messages status no-popup crm-empty-table"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> <div class="action-link"> diff --git a/civicrm/templates/CRM/Price/Page/Option.tpl b/civicrm/templates/CRM/Price/Page/Option.tpl index 22f82229a4..0f4a5b079a 100644 --- a/civicrm/templates/CRM/Price/Page/Option.tpl +++ b/civicrm/templates/CRM/Price/Page/Option.tpl @@ -13,7 +13,7 @@ {elseif $usedBy} <div class='spacer'></div> <div id="price_set_used_by" class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $action eq 8} {ts 1=$usedPriceSetTitle}Unable to delete the '%1' Price Field Option - it is currently in use by one or more active events or contribution pages or contributions.{/ts} {/if} diff --git a/civicrm/templates/CRM/Price/Page/Set.tpl b/civicrm/templates/CRM/Price/Page/Set.tpl index d57b2e437a..e145781fe9 100644 --- a/civicrm/templates/CRM/Price/Page/Set.tpl +++ b/civicrm/templates/CRM/Price/Page/Set.tpl @@ -21,7 +21,7 @@ {if $usedBy} <div class='spacer'></div> <div id="price_set_used_by" class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $action eq 8} {ts 1=$usedPriceSetTitle}Unable to delete the '%1' price set - it is currently in use by one or more active events or contribution pages or contributions or event templates.{/ts} {/if} diff --git a/civicrm/templates/CRM/Profile/Form/Dynamic.tpl b/civicrm/templates/CRM/Profile/Form/Dynamic.tpl index 206ec5444d..2d0240fb88 100644 --- a/civicrm/templates/CRM/Profile/Form/Dynamic.tpl +++ b/civicrm/templates/CRM/Profile/Form/Dynamic.tpl @@ -14,7 +14,7 @@ cms account edit (mode=8) or civicrm/profile (mode=4) pages *} {if $deleteRecord} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you want to delete this record?{/ts} </div> @@ -203,8 +203,10 @@ {if ($action eq 1 and $mode eq 4 ) or ($action eq 2) or ($action eq 8192)} {if $action eq 2 and $multiRecordFieldListing} - {include file="CRM/Profile/Page/MultipleRecordFieldsListing.tpl" showListing=true} - {assign var=floatStyle value='float:right'} + <div class="crm-multi-record-custom-field-listing"> + {include file="CRM/Profile/Page/MultipleRecordFieldsListing.tpl" showListing=true} + {assign var=floatStyle value='float:right'} + </div> {/if} <div class="crm-submit-buttons" style='{$floatStyle}'> {include file="CRM/common/formButtons.tpl"}{if $isDuplicate}<span class="crm-button">{$form._qf_Edit_upload_duplicate.html}</span>{/if} @@ -250,7 +252,7 @@ invert = 0 } {elseif $statusMessage} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$statusMessage} </div> {/if} diff --git a/civicrm/templates/CRM/Profile/Form/Search.tpl b/civicrm/templates/CRM/Profile/Form/Search.tpl index d09429a17a..0b093ea450 100644 --- a/civicrm/templates/CRM/Profile/Form/Search.tpl +++ b/civicrm/templates/CRM/Profile/Form/Search.tpl @@ -85,12 +85,12 @@ {elseif $statusMessage} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$statusMessage} </div> {else} {* empty fields *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No fields in this Profile have been configured as searchable. Ask the site administrator to check the Profile setup.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Profile/Page/Listings.tpl b/civicrm/templates/CRM/Profile/Page/Listings.tpl index bd02d534e2..e3b3e23bec 100644 --- a/civicrm/templates/CRM/Profile/Page/Listings.tpl +++ b/civicrm/templates/CRM/Profile/Page/Listings.tpl @@ -77,7 +77,7 @@ {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}No fields in this Profile have been configured to display as a result column in the search results table. Ask the site administrator to check the Profile setup.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl b/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl index bd740966b6..dc185e6d1d 100644 --- a/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl +++ b/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl @@ -91,7 +91,7 @@ <div id='{$dialogId}' class="hiddenElement"></div> {elseif !$records} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts 1=$customGroupTitle}No records of type '%1' found.{/ts} </div> diff --git a/civicrm/templates/CRM/Report/Form/ErrorMessage.tpl b/civicrm/templates/CRM/Report/Form/ErrorMessage.tpl index 79f2c59f10..800544e8ed 100644 --- a/civicrm/templates/CRM/Report/Form/ErrorMessage.tpl +++ b/civicrm/templates/CRM/Report/Form/ErrorMessage.tpl @@ -9,6 +9,6 @@ *} {if $outputMode eq 'html' && !$rows} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}None found.{/ts} + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/Report/Form/Layout/Table.tpl b/civicrm/templates/CRM/Report/Form/Layout/Table.tpl index 09a31e218e..4e0c9c2401 100644 --- a/civicrm/templates/CRM/Report/Form/Layout/Table.tpl +++ b/civicrm/templates/CRM/Report/Form/Layout/Table.tpl @@ -136,7 +136,11 @@ {foreach from=$columnHeaders item=header key=field} <td class="report-label"> {if $header.type eq 1024} - {$grandStat.$field|crmMoney} + {if $currencyColumn} + {$grandStat.$field|crmMoney:$row.$currencyColumn} + {else} + {$grandStat.$field|crmMoney} + {/if} {else} {$grandStat.$field} {/if} diff --git a/civicrm/templates/CRM/Report/Form/Register.tpl b/civicrm/templates/CRM/Report/Form/Register.tpl index 15f9ce53a2..49f8ff0d5c 100644 --- a/civicrm/templates/CRM/Report/Form/Register.tpl +++ b/civicrm/templates/CRM/Report/Form/Register.tpl @@ -25,7 +25,7 @@ <tr> <td colspan=2> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this option will result in the loss of all Report related records which use the option. This may mean the loss of a substantial amount of data, and the action cannot be undone. Do you want to continue?{/ts} </div> </td> diff --git a/civicrm/templates/CRM/Report/Form/Tabs/GroupBy.tpl b/civicrm/templates/CRM/Report/Form/Tabs/GroupBy.tpl index 5f77291455..c53b7f579f 100644 --- a/civicrm/templates/CRM/Report/Form/Tabs/GroupBy.tpl +++ b/civicrm/templates/CRM/Report/Form/Tabs/GroupBy.tpl @@ -13,11 +13,11 @@ <tr class="crm-report crm-report-criteria-groupby"> {foreach from=$groupByElements item=gbElem key=dnc} {assign var="count" value=`$count+1`} - <td width="25%" {if $form.fields.$gbElem}"{/if}> - {$form.group_bys[$gbElem].html} - {if $form.group_bys_freq[$gbElem].html}:<br> - {$form.group_bys_freq[$gbElem].label} {$form.group_bys_freq[$gbElem].html} - {/if} + <td width="25%"> + {$form.group_bys[$gbElem].html} + {if $form.group_bys_freq[$gbElem].html}:<br> + {$form.group_bys_freq[$gbElem].label} {$form.group_bys_freq[$gbElem].html} + {/if} </td> {if $count is div by 4} </tr><tr class="crm-report crm-report-criteria-groupby"> diff --git a/civicrm/templates/CRM/Report/Form/Tabs/Settings.hlp b/civicrm/templates/CRM/Report/Form/Tabs/Settings.hlp index 64326f4865..acd4388f08 100644 --- a/civicrm/templates/CRM/Report/Form/Tabs/Settings.hlp +++ b/civicrm/templates/CRM/Report/Form/Tabs/Settings.hlp @@ -15,7 +15,7 @@ {ts}A copy of this report can be automatically generated and delivered via email to specified recipients. Use the settings in this section to control Subject of the email containing the report, as well as the recipient list (To and Cc fields). Separate multiple 'To' or 'CC' email addresses with commas.{/ts} </p> <p> - {ts}Your site administrator will need to setup an instance of the Scheduled Job "Mail Reports" to trigger creation and delivery of each report. When invoked, this job will deliver email to the recipients specified for the report. The report can be attached to the email as a PDF file (default), as a CSV file, or included in HTML format.{/ts} {docURL page="Managing Scheduled Jobs" resource="wiki"} + {ts}Your site administrator will need to setup an instance of the Scheduled Job "Mail Reports" to trigger creation and delivery of each report. When invoked, this job will deliver email to the recipients specified for the report. The report can be attached to the email as a PDF file (default), as a CSV file, or included in HTML format.{/ts} {docURL page="user/initial-set-up/scheduled-jobs"} </p> {/htxt} diff --git a/civicrm/templates/CRM/Report/Page/InstanceList.tpl b/civicrm/templates/CRM/Report/Page/InstanceList.tpl index 354edd5444..1727e19907 100644 --- a/civicrm/templates/CRM/Report/Page/InstanceList.tpl +++ b/civicrm/templates/CRM/Report/Page/InstanceList.tpl @@ -64,7 +64,7 @@ {else} <div class="crm-content-block"> <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {if $myReports} {ts}You do not have any private reports. To add a report to this section, edit the Report Settings for a report and set 'Add to My Reports' to Yes.{/ts} {else} diff --git a/civicrm/templates/CRM/Report/Page/TemplateList.tpl b/civicrm/templates/CRM/Report/Page/TemplateList.tpl index 497157d074..fe677c0dd7 100644 --- a/civicrm/templates/CRM/Report/Page/TemplateList.tpl +++ b/civicrm/templates/CRM/Report/Page/TemplateList.tpl @@ -46,7 +46,7 @@ {/foreach} {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> {ts}There are currently no Report Templates.{/ts} + {icon icon="fa-info-circle"}{/icon} {ts}There are currently no Report Templates.{/ts} </div> {/if} {/strip} diff --git a/civicrm/templates/CRM/SMS/Form/Group.tpl b/civicrm/templates/CRM/SMS/Form/Group.tpl index da6aa95bfb..2ce5486d8c 100644 --- a/civicrm/templates/CRM/SMS/Form/Group.tpl +++ b/civicrm/templates/CRM/SMS/Form/Group.tpl @@ -9,7 +9,7 @@ *} {if $groupCount == 0 and $mailingCount == 0} <div class="status"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}To send a Mass SMS, you must have a valid group of recipients - either at least one group that's a Mailing List{/ts} </div> {else} diff --git a/civicrm/templates/CRM/SMS/Form/Provider.tpl b/civicrm/templates/CRM/SMS/Form/Provider.tpl index 7995a794b7..183d5a20c0 100644 --- a/civicrm/templates/CRM/SMS/Form/Provider.tpl +++ b/civicrm/templates/CRM/SMS/Form/Provider.tpl @@ -13,12 +13,12 @@ {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Do you want to continue?{/ts} </div> {elseif $action eq 128} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}Are you sure you would like to execute this job?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/SMS/Page/Provider.tpl b/civicrm/templates/CRM/SMS/Page/Provider.tpl index 3d25551c63..9a9deac2c2 100644 --- a/civicrm/templates/CRM/SMS/Page/Provider.tpl +++ b/civicrm/templates/CRM/SMS/Page/Provider.tpl @@ -10,9 +10,8 @@ {if $action eq 1 or $action eq 2 or $action eq 8} {include file="CRM/SMS/Form/Provider.tpl"} {else} - {capture assign=wikiLink}{docURL page="Setting up a SMS Provider for CiviSMS" text="(How to add a SMS Provider)" resource="wiki"}{/capture} <div class="help"> - {ts}You can configure one or more SMS Providers for your CiviCRM installation. To learn more about the procedure to install SMS extension and Provider, refer{/ts} {$wikiLink} + {ts}You can configure one or more SMS Providers for your CiviCRM installation.{/ts} {docURL page="user/sms-text-messaging/set-up"} </div> <div class="crm-content-block crm-block"> @@ -47,7 +46,7 @@ </div> {else} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> diff --git a/civicrm/templates/CRM/UF/Form/Field.tpl b/civicrm/templates/CRM/UF/Form/Field.tpl index 447732e867..83a5056f7a 100644 --- a/civicrm/templates/CRM/UF/Form/Field.tpl +++ b/civicrm/templates/CRM/UF/Form/Field.tpl @@ -10,7 +10,7 @@ <div class="crm-block crm-form-block crm-uf-field-form-block"> {if $action eq 8} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}WARNING: Deleting this profile field will remove it from Profile forms and listings. If this field is used in any 'stand-alone' Profile forms, you will need to update those forms to remove this field.{/ts} {ts}Do you want to continue?{/ts} </div> {else} diff --git a/civicrm/templates/CRM/UF/Form/Group.tpl b/civicrm/templates/CRM/UF/Form/Group.tpl index 77a8c35d58..24c97000be 100644 --- a/civicrm/templates/CRM/UF/Form/Group.tpl +++ b/civicrm/templates/CRM/UF/Form/Group.tpl @@ -25,7 +25,7 @@ {if $action eq 8 or $action eq 64} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {$message} </div> {else} diff --git a/civicrm/templates/CRM/UF/Page/Field.tpl b/civicrm/templates/CRM/UF/Page/Field.tpl index 6c90c9482a..75229e7bc6 100644 --- a/civicrm/templates/CRM/UF/Page/Field.tpl +++ b/civicrm/templates/CRM/UF/Page/Field.tpl @@ -70,7 +70,7 @@ {if $action eq 16} {capture assign=crmURL}{crmURL p="civicrm/admin/uf/group/field/add" q="reset=1&action=add&gid=$gid"}{/capture} <div class="messages status no-popup crm-empty-table"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {ts}None found.{/ts} </div> <div class="action-link"> diff --git a/civicrm/templates/CRM/UF/Page/Group.tpl b/civicrm/templates/CRM/UF/Page/Group.tpl index eb25d0e9b7..d77ffdede5 100644 --- a/civicrm/templates/CRM/UF/Page/Group.tpl +++ b/civicrm/templates/CRM/UF/Page/Group.tpl @@ -147,7 +147,7 @@ {else} {if $action ne 1} {* When we are adding an item, we should not display this message *} <div class="messages status no-popup"> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} {capture assign=crmURL}{crmURL p='civicrm/admin/uf/group/add' q='action=add&reset=1'}{/capture}{ts 1=$crmURL}No CiviCRM Profiles have been created yet. You can <a href='%1'>add one now</a>.{/ts} </div> {/if} diff --git a/civicrm/templates/CRM/common/civicrm.settings.php.template b/civicrm/templates/CRM/common/civicrm.settings.php.template index 28102ccd78..46ed344835 100644 --- a/civicrm/templates/CRM/common/civicrm.settings.php.template +++ b/civicrm/templates/CRM/common/civicrm.settings.php.template @@ -294,7 +294,7 @@ if (!defined('CIVICRM_UF_BASEURL')) { * If you are using any CiviCRM script in the bin directory that * requires authentication, then you also need to set this key. * We recommend using a 16-32 bit alphanumeric/punctuation key. - * More info at http://wiki.civicrm.org/confluence/display/CRMDOC/Command-line+Script+Configuration + * More info at https://docs.civicrm.org/sysadmin/en/latest/setup/site-key/ */ if (!defined('CIVICRM_SITE_KEY')) { define( 'CIVICRM_SITE_KEY', '%%siteKey%%'); @@ -449,7 +449,7 @@ if (!defined('CIVICRM_PSR16_STRICT')) { * # dpkg-reconfigure locales * * For more information: - * http://wiki.civicrm.org/confluence/x/YABFBQ + * https://lab.civicrm.org/dev/translation/-/wikis/Administrator-Guide#native-gettext */ // if (!defined('CIVICRM_GETTEXT_NATIVE')) { // define('CIVICRM_GETTEXT_NATIVE', 1); @@ -472,12 +472,6 @@ define('CIVICRM_DEADLOCK_RETRIES', 3); // define('CIVICRM_MYSQL_STRICT', TRUE ); // } -/** - * Specify whether the CRM_Core_BAO_Cache should use the legacy - * direct-to-SQL-mode or the interim PSR-16 adapter. - */ -// define('CIVICRM_BAO_CACHE_ADAPTER', 'CRM_Core_BAO_Cache_Psr16'); - if (CIVICRM_UF === 'UnitTests') { if (!defined('CIVICRM_CONTAINER_CACHE')) define('CIVICRM_CONTAINER_CACHE', 'auto'); if (!defined('CIVICRM_MYSQL_STRICT')) define('CIVICRM_MYSQL_STRICT', true); @@ -502,6 +496,27 @@ if (CIVICRM_UF === 'UnitTests') { // define('CIVICRM_LOG_ROTATESIZE', 0 ); // } +/** + * Which directories should we exclude when scanning the codebase for things + * like extension .info files, or .html partials or .xml files etc. This needs + * to be a valid preg_match() pattern. + * + * If you do not define it, a pattern that excludes dirs starting with a dot is + * used, e.g. to exclude .git/). Adding suitable patterns here can vastly speed + * up your container rebuilds and cache flushes. The pattern is matched against + * the absolute path. Remember to use your system's DIRECTORY_SEPARATOR the + * examples below assume / + * + * Example: This excludes node_modules (can be huge), various CiviCRM dirs that + * are unlikely to have anything we need to scan inside, and (what could be + * your) Drupal's private file storage area. + * + * '@/(\.|node_modules|js/|css/|bower_components|packages/|vendor/|sites/default/files/private)@' + */ +// if (!defined('CIVICRM_EXCLUDE_DIRS_PATTERN')) { +// define('CIVICRM_EXCLUDE_DIRS_PATTERN', '@/\.@'); +// } + /** * * Do not change anything below this line. Keep as is diff --git a/civicrm/templates/CRM/common/info.tpl b/civicrm/templates/CRM/common/info.tpl index aa000e5790..de02a23e78 100644 --- a/civicrm/templates/CRM/common/info.tpl +++ b/civicrm/templates/CRM/common/info.tpl @@ -8,9 +8,9 @@ +--------------------------------------------------------------------+ *} {* Handles display of passed $infoMessage. *} -{if $infoMessage} +{if $infoMessage or $infoTitle} <div class="messages status {$infoType}"{if $infoOptions} data-options='{$infoOptions}'{/if}> - <div class="icon inform-icon"></div> + {icon icon="fa-info-circle"}{/icon} <span class="msg-title">{$infoTitle}</span> <span class="msg-text">{$infoMessage}</span> </div> diff --git a/civicrm/templates/CRM/common/l10n.js.tpl b/civicrm/templates/CRM/common/l10n.js.tpl index bba775f40a..f6eec45ea6 100644 --- a/civicrm/templates/CRM/common/l10n.js.tpl +++ b/civicrm/templates/CRM/common/l10n.js.tpl @@ -96,7 +96,15 @@ errorClass: 'crm-inline-error alert-danger', messages: {}, ignore: '.select2-offscreen, [readonly], :hidden:not(.crm-select2), .crm-no-validate', - ignoreTitle: true + ignoreTitle: true, + errorPlacement: function(error, element) { + if (element.prop('type') === 'radio') { + error.appendTo(element.parent('div.content')); + } + else { + error.insertAfter(element); + } + } }; // use civicrm notifications when there are errors diff --git a/civicrm/templates/CRM/common/success.tpl b/civicrm/templates/CRM/common/success.tpl index a1fbfb3702..14ca9873a9 100644 --- a/civicrm/templates/CRM/common/success.tpl +++ b/civicrm/templates/CRM/common/success.tpl @@ -26,8 +26,7 @@ </div> {/if} <p><strong>{ts}Back up your database before continuing.{/ts}</strong> - {capture assign=docLink}{docURL page="Installation and Upgrades" text="Upgrade Documentation" style="text-decoration: underline;" resource="wiki"}{/capture} - {ts 1=$docLink}This process may change your database structure and values. In case of emergency you may need to revert to a backup. For more detailed information, refer to the %1.{/ts}</p> + {ts}This process may change your database structure and values. In case of emergency you may need to revert to a backup.{/ts} {docURL page="sysadmin/upgrade"}</p> <input type="hidden" name="action" value="begin" /> <button type="submit" class="crm-button" name="upgrade" onclick="return confirm('{ts escape="js"}Are you sure you are ready to upgrade now?{/ts}');" > <i class="crm-i fa-rocket" aria-hidden="true"></i> diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php index f415eb7639..c3e3e239b7 100644 --- a/civicrm/vendor/autoload.php +++ b/civicrm/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7::getLoader(); +return ComposerAutoloaderInit191eca689b99b98f3334e35c02d03840::getLoader(); diff --git a/civicrm/vendor/composer/autoload_classmap.php b/civicrm/vendor/composer/autoload_classmap.php index 00e85ad083..f2352a7a10 100644 --- a/civicrm/vendor/composer/autoload_classmap.php +++ b/civicrm/vendor/composer/autoload_classmap.php @@ -12,10 +12,10 @@ return array( 'CallbackParameterToReference' => $vendorDir . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', 'CallbackReturnReference' => $vendorDir . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', 'CallbackReturnValue' => $vendorDir . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', - 'Cpdf' => $vendorDir . '/dompdf/dompdf/lib/Cpdf.php', 'DOMDocumentWrapper' => $vendorDir . '/electrolinux/phpquery/phpQuery/phpQuery/DOMDocumentWrapper.php', 'DOMEvent' => $vendorDir . '/electrolinux/phpquery/phpQuery/phpQuery/DOMEvent.php', 'Datamatrix' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php', + 'Dompdf\\Cpdf' => $vendorDir . '/dompdf/dompdf/lib/Cpdf.php', 'HTML5_Data' => $vendorDir . '/dompdf/dompdf/lib/html5lib/Data.php', 'HTML5_InputStream' => $vendorDir . '/dompdf/dompdf/lib/html5lib/InputStream.php', 'HTML5_Parser' => $vendorDir . '/dompdf/dompdf/lib/html5lib/Parser.php', diff --git a/civicrm/vendor/composer/autoload_namespaces.php b/civicrm/vendor/composer/autoload_namespaces.php index 2fc96bee6a..7ae201cfc1 100644 --- a/civicrm/vendor/composer/autoload_namespaces.php +++ b/civicrm/vendor/composer/autoload_namespaces.php @@ -13,7 +13,7 @@ return array( 'PHPUnit_' => array($baseDir . '/packages'), 'Net' => array($vendorDir . '/phpseclib/phpseclib/phpseclib', $vendorDir . '/pear/net_socket', $vendorDir . '/pear/net_smtp'), 'Math' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'), - 'Mail' => array($vendorDir . '/pear/mail'), + 'Mail' => array($vendorDir . '/pear/mail', $vendorDir . '/pear/mail_mime'), 'Log' => array($vendorDir . '/pear/log'), 'File' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'), 'Dflydev\\ApacheMimeTypes' => array($vendorDir . '/dflydev/apache-mime-types/src'), diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php index f5102f8df3..6775052330 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 ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7 +class ComposerAutoloaderInit191eca689b99b98f3334e35c02d03840 { private static $loader; @@ -19,9 +19,9 @@ class ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit191eca689b99b98f3334e35c02d03840', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit191eca689b99b98f3334e35c02d03840', 'loadClassLoader')); $includePaths = require __DIR__ . '/include_paths.php'; $includePaths[] = get_include_path(); @@ -31,7 +31,7 @@ class ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7 if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit191eca689b99b98f3334e35c02d03840::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -52,19 +52,19 @@ class ComposerAutoloaderInit5d1590a84317c7221c13a6c8764590a7 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit191eca689b99b98f3334e35c02d03840::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire5d1590a84317c7221c13a6c8764590a7($fileIdentifier, $file); + composerRequire191eca689b99b98f3334e35c02d03840($fileIdentifier, $file); } return $loader; } } -function composerRequire5d1590a84317c7221c13a6c8764590a7($fileIdentifier, $file) +function composerRequire191eca689b99b98f3334e35c02d03840($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php index 4c1f88db3c..072ec1603e 100644 --- a/civicrm/vendor/composer/autoload_static.php +++ b/civicrm/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit5d1590a84317c7221c13a6c8764590a7 +class ComposerStaticInit191eca689b99b98f3334e35c02d03840 { public static $files = array ( '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', @@ -323,6 +323,7 @@ class ComposerStaticInit5d1590a84317c7221c13a6c8764590a7 'Mail' => array ( 0 => __DIR__ . '/..' . '/pear/mail', + 1 => __DIR__ . '/..' . '/pear/mail_mime', ), ), 'L' => @@ -389,10 +390,10 @@ class ComposerStaticInit5d1590a84317c7221c13a6c8764590a7 'CallbackParameterToReference' => __DIR__ . '/..' . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', 'CallbackReturnReference' => __DIR__ . '/..' . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', 'CallbackReturnValue' => __DIR__ . '/..' . '/electrolinux/phpquery/phpQuery/phpQuery/Callback.php', - 'Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php', 'DOMDocumentWrapper' => __DIR__ . '/..' . '/electrolinux/phpquery/phpQuery/phpQuery/DOMDocumentWrapper.php', 'DOMEvent' => __DIR__ . '/..' . '/electrolinux/phpquery/phpQuery/phpQuery/DOMEvent.php', 'Datamatrix' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php', + 'Dompdf\\Cpdf' => __DIR__ . '/..' . '/dompdf/dompdf/lib/Cpdf.php', 'HTML5_Data' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Data.php', 'HTML5_InputStream' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/InputStream.php', 'HTML5_Parser' => __DIR__ . '/..' . '/dompdf/dompdf/lib/html5lib/Parser.php', @@ -530,11 +531,11 @@ class ComposerStaticInit5d1590a84317c7221c13a6c8764590a7 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$prefixesPsr0; - $loader->fallbackDirsPsr0 = ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$fallbackDirsPsr0; - $loader->classMap = ComposerStaticInit5d1590a84317c7221c13a6c8764590a7::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit191eca689b99b98f3334e35c02d03840::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit191eca689b99b98f3334e35c02d03840::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit191eca689b99b98f3334e35c02d03840::$prefixesPsr0; + $loader->fallbackDirsPsr0 = ComposerStaticInit191eca689b99b98f3334e35c02d03840::$fallbackDirsPsr0; + $loader->classMap = ComposerStaticInit191eca689b99b98f3334e35c02d03840::$classMap; }, null, ClassLoader::class); } diff --git a/civicrm/vendor/composer/include_paths.php b/civicrm/vendor/composer/include_paths.php index 4d5058c529..975aca43d6 100644 --- a/civicrm/vendor/composer/include_paths.php +++ b/civicrm/vendor/composer/include_paths.php @@ -14,6 +14,7 @@ return array( $vendorDir . '/pear/console_getopt', $vendorDir . '/pear/pear-core-minimal/src', $vendorDir . '/pear/mail', + $vendorDir . '/pear/mail_mime', $vendorDir . '/pear/net_socket', $vendorDir . '/pear/net_smtp', $vendorDir . '/pear/validate_finance_creditcard', diff --git a/civicrm/vendor/composer/installed.json b/civicrm/vendor/composer/installed.json index 4702aa1520..3c2cfe85bd 100644 --- a/civicrm/vendor/composer/installed.json +++ b/civicrm/vendor/composer/installed.json @@ -460,36 +460,36 @@ }, { "name": "dompdf/dompdf", - "version": "v0.8.3", - "version_normalized": "0.8.3.0", + "version": "v0.8.5", + "version_normalized": "0.8.5.0", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "75f13c700009be21a1965dc2c5b68a8708c22ba2" + "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/75f13c700009be21a1965dc2c5b68a8708c22ba2", - "reference": "75f13c700009be21a1965dc2c5b68a8708c22ba2", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6782abfc090b132134cd6cea0ec6d76f0fce2c56", + "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "phenx/php-font-lib": "0.5.*", - "phenx/php-svg-lib": "0.3.*", - "php": ">=5.4.0" + "phenx/php-font-lib": "^0.5.1", + "phenx/php-svg-lib": "^0.3.3", + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.5|^6.5", - "squizlabs/php_codesniffer": "2.*" + "phpunit/phpunit": "^7.5", + "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "ext-gd": "Needed to process images", "ext-gmagick": "Improves image processing performance", "ext-imagick": "Improves image processing performance" }, - "time": "2018-12-14T02:40:31+00:00", + "time": "2020-02-20T03:52:51+00:00", "type": "library", "extra": { "branch-alias": { @@ -1149,6 +1149,59 @@ "description": "Class that provides multiple interfaces for sending emails.", "homepage": "http://pear.php.net/package/Mail" }, + { + "name": "pear/mail_mime", + "version": "1.10.9", + "version_normalized": "1.10.9.0", + "source": { + "type": "git", + "url": "https://github.com/pear/Mail_Mime.git", + "reference": "1e7ae4e5258b6c0d385a8e76add567934245d38d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pear/Mail_Mime/zipball/1e7ae4e5258b6c0d385a8e76add567934245d38d", + "reference": "1e7ae4e5258b6c0d385a8e76add567934245d38d", + "shasum": "" + }, + "require": { + "pear/pear-core-minimal": "*" + }, + "time": "2020-06-27T08:35:27+00:00", + "type": "library", + "extra": { + "patches_applied": { + "Apply patch for CRM-3133 wordwrap body to be 750 characters to apply with RFC 2821": "https://raw.githubusercontent.com/civicrm/civicrm-core/74e25f27bb3be32519657539afe8a285c6c99a08/tools/scripts/composer/patches/mail_mime_crm_3133.patch" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Mail": "./" + } + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "./" + ], + "license": [ + "BSD-3-clause" + ], + "authors": [ + { + "name": "Cipriano Groenendal", + "email": "cipri@php.net", + "role": "Lead" + }, + { + "name": "Aleksander Machniak", + "email": "alec@php.net", + "role": "Lead" + } + ], + "description": "Mail_Mime provides classes to create MIME messages", + "homepage": "http://pear.php.net/package/Mail_Mime" + }, { "name": "pear/net_smtp", "version": "1.9.0", @@ -1422,23 +1475,23 @@ }, { "name": "phenx/php-font-lib", - "version": "0.5", - "version_normalized": "0.5.0.0", + "version": "0.5.2", + "version_normalized": "0.5.2.0", "source": { "type": "git", "url": "https://github.com/PhenX/php-font-lib.git", - "reference": "19ad2bebc35be028fcc0221025fcbf3d436a3962" + "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/19ad2bebc35be028fcc0221025fcbf3d436a3962", - "reference": "19ad2bebc35be028fcc0221025fcbf3d436a3962", + "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8", + "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8", "shasum": "" }, "require-dev": { - "phpunit/phpunit": "^4.8" + "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7" }, - "time": "2017-02-11T10:58:43+00:00", + "time": "2020-03-08T15:31:32+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2072,17 +2125,17 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.3.0", - "version_normalized": "8.3.0.0", + "version": "8.3.1", + "version_normalized": "8.3.1.0", "source": { "type": "git", "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f" + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796", + "reference": "d217848e1396ef962fb1997cf3e2421acba7f796", "shasum": "" }, "require": { @@ -2092,7 +2145,7 @@ "codacy/coverage": "^1.4", "phpunit/phpunit": "~4.8" }, - "time": "2019-02-22T07:42:52+00:00", + "time": "2020-06-01T09:10:00+00:00", "type": "library", "installation-source": "dist", "autoload": { diff --git a/civicrm/vendor/dompdf/dompdf/README.md b/civicrm/vendor/dompdf/dompdf/README.md index 9f0e6ca3de..0c69c8d415 100644 --- a/civicrm/vendor/dompdf/dompdf/README.md +++ b/civicrm/vendor/dompdf/dompdf/README.md @@ -25,8 +25,7 @@ release. For released code please question on [StackOverflow](http://stackoverflow.com/questions/tagged/dompdf) or on the [Google Groups](http://groups.google.com/group/dompdf).** -Follow us on [](http://www.twitter.com/dompdf) or -[](https://plus.google.com/108710008521858993320?prsrc=3). +Follow us on [](http://www.twitter.com/dompdf). --- @@ -48,16 +47,18 @@ Follow us on []( ## Requirements - * PHP version 5.4.0 or higher + * PHP version 7.1 or higher * DOM extension - * GD extension * MBString extension * php-font-lib * php-svg-lib + +Note that some required dependencies may have further dependencies (notably php-svg-lib requires sabberworm/php-css-parser). ### Recommendations * OPcache (OPcache, XCache, APC, etc.): improves performance + * GD (for image processing) * IMagick or GMagick extension: improves image processing performance Visit the wiki for more information: @@ -74,7 +75,7 @@ reference in CSS @font-face rules. See the [font overview](https://github.com/dompdf/dompdf/wiki/About-Fonts-and-Character-Encoding) for more information on how to use fonts. -The [DejaVu TrueType fonts](http://dejavu-fonts.org) have been pre-installed +The [DejaVu TrueType fonts](https://dejavu-fonts.github.io/) have been pre-installed to give dompdf decent Unicode character coverage by default. To use the DejaVu fonts reference the font in your stylesheet, e.g. `body { font-family: DejaVu Sans; }` (for DejaVu Sans). The following DejaVu 2.34 fonts are available: @@ -102,8 +103,9 @@ require 'vendor/autoload.php'; ### Download and install -Download an archive of dompdf and extract it into the directory where dompdf -will reside +Download a packaged archive of dompdf and extract it into the +directory where dompdf will reside + * You can download stable copies of dompdf from https://github.com/dompdf/dompdf/releases * Or download a nightly (the latest, unreleased code) from @@ -117,35 +119,38 @@ and helper functions in your PHP: require_once 'dompdf/autoload.inc.php'; ``` +Note: packaged releases are named according using semantic +versioning (_dompdf_MAJOR-MINOR-PATCH.zip_). So the 1.0.0 +release would be dompdf_1-0-0.zip. This is the only download +that includes the autoloader for Dompdf and all its dependencies. + ### Install with git -From the command line, switch to the directory where dompdf will reside and run -the following commands: +From the command line, switch to the directory where dompdf will +reside and run the following commands: ```sh git clone https://github.com/dompdf/dompdf.git -cd dompdf +cd dompdf/lib -git clone https://github.com/PhenX/php-font-lib.git lib/php-font-lib -cd lib/php-font-lib +git clone https://github.com/PhenX/php-font-lib.git php-font-lib +cd php-font-lib git checkout 0.5.1 cd .. git clone https://github.com/PhenX/php-svg-lib.git php-svg-lib cd php-svg-lib -git checkout v0.3 -``` - -Require dompdf, libraries, and helper functions in your PHP: +git checkout v0.3.2 +cd .. -```php -require_once 'dompdf/lib/html5lib/Parser.php'; -require_once 'dompdf/lib/php-font-lib/src/FontLib/Autoloader.php'; -require_once 'dompdf/lib/php-svg-lib/src/autoload.php'; -require_once 'dompdf/src/Autoloader.php'; -Dompdf\Autoloader::register(); +git clone https://github.com/sabberworm/PHP-CSS-Parser.git php-css-parser +cd php-css-parser +git checkout 8.1.0 ``` +Require dompdf and it's dependencies in your PHP. +For details see the [autoloader in the utils project](https://github.com/dompdf/utils/blob/master/autoload.inc.php). + ## Quick Start Just pass your HTML in to dompdf and stream the output: @@ -201,8 +206,8 @@ See [Dompdf\Options](src/Options.php) for a list of available options. or run your HTML through a HTML validator/cleaner (such as [Tidy](http://tidy.sourceforge.net) or the [W3C Markup Validation Service](http://validator.w3.org)). - * Large files or large tables can take a while to render. - * CSS float is in development and may not produce the desired result + * Table cells are not pageable, meaning a table row must fit on a single page. + * Elements are rendered on the active page when they are parsed. --- diff --git a/civicrm/vendor/dompdf/dompdf/VERSION b/civicrm/vendor/dompdf/dompdf/VERSION index d9f4c29851..6530b07e3b 100644 --- a/civicrm/vendor/dompdf/dompdf/VERSION +++ b/civicrm/vendor/dompdf/dompdf/VERSION @@ -1 +1 @@ -<75f13c70> \ No newline at end of file +<6782abfc> \ No newline at end of file diff --git a/civicrm/vendor/dompdf/dompdf/composer.json b/civicrm/vendor/dompdf/dompdf/composer.json index ad6481850c..ef0fe35282 100644 --- a/civicrm/vendor/dompdf/dompdf/composer.json +++ b/civicrm/vendor/dompdf/dompdf/composer.json @@ -19,21 +19,23 @@ } ], "autoload": { - "psr-4" : { - "Dompdf\\" : "src/" + "psr-4": { + "Dompdf\\": "src/" }, - "classmap" : ["lib/"] + "classmap": [ + "lib/" + ] }, "require": { - "php": ">=5.4.0", + "php": "^7.1", "ext-dom": "*", "ext-mbstring": "*", - "phenx/php-font-lib": "0.5.*", - "phenx/php-svg-lib": "0.3.*" + "phenx/php-font-lib": "^0.5.1", + "phenx/php-svg-lib": "^0.3.3" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.5|^6.5", - "squizlabs/php_codesniffer": "2.*" + "phpunit/phpunit": "^7.5", + "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "ext-gd": "Needed to process images", diff --git a/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php b/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php index 7748d4f159..014895b8d0 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php +++ b/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php @@ -15,6 +15,9 @@ * @license Public Domain http://creativecommons.org/licenses/publicdomain/ * @package Cpdf */ + +namespace Dompdf; + use FontLib\Font; use FontLib\BinaryStream; @@ -29,7 +32,7 @@ class Cpdf /** * @var array This array contains all of the pdf objects, ready for final assembly */ - public $objects = array(); + public $objects = []; /** * @var integer The objectId (number within the objects array) of the document catalog @@ -40,7 +43,7 @@ class Cpdf * @var array Array carrying information about the fonts that the system currently knows about * Used to ensure that a font is not loaded twice, among other things */ - public $fonts = array(); + public $fonts = []; /** * @var string The default font metrics file to use if no other font has been loaded. @@ -91,7 +94,7 @@ class Cpdf /** * @var array Number of graphic state resources used */ - private $gstates = array(); + private $gstates = []; /** * @var array Current color for fill operations, defaults to inactive value, @@ -117,18 +120,18 @@ class Cpdf /** * @var array Current line transparency (partial graphics state) */ - public $currentLineTransparency = array("mode" => "Normal", "opacity" => 1.0); + public $currentLineTransparency = ["mode" => "Normal", "opacity" => 1.0]; /** * array Current fill transparency (partial graphics state) */ - public $currentFillTransparency = array("mode" => "Normal", "opacity" => 1.0); + public $currentFillTransparency = ["mode" => "Normal", "opacity" => 1.0]; /** * @var array An array which is used to save the state of the document, mainly the colors and styles * it is used to temporarily change to another state, then change back to what it was before */ - public $stateStack = array(); + public $stateStack = []; /** * @var integer Number of elements within the state stack @@ -143,7 +146,7 @@ class Cpdf /** * @var array Object Id storage stack */ - public $stack = array(); + public $stack = []; /** * @var integer Number of elements within the object Id storage stack @@ -154,12 +157,12 @@ class Cpdf * an array which contains information about the objects which are not firmly attached to pages * these have been added with the addObject function */ - public $looseObjects = array(); + public $looseObjects = []; /** * array contains information about how the loose objects are to be added to the document */ - public $addLooseObjects = array(); + public $addLooseObjects = []; /** * @var integer The objectId of the information object for the document @@ -176,7 +179,7 @@ class Cpdf * @var array An array containing options about the document * it defaults to turning on the compression of the objects */ - public $options = array('compression' => true); + public $options = ['compression' => true]; /** * @var integer The objectId of the first page of the document @@ -193,7 +196,7 @@ class Cpdf * this used so that the code knows which font is the bold version of another font, etc. * the value of this array is initialised in the constructor function. */ - public $fontFamilies = array(); + public $fontFamilies = []; /** * @var string Folder for php serialized formats of font metrics files. @@ -255,7 +258,7 @@ class Cpdf /** * @var array Array which forms a stack to keep track of nested callback functions */ - public $callback = array(); + public $callback = []; /** * @var integer The number of callback functions in the callback array @@ -266,7 +269,7 @@ class Cpdf * @var array Store label->id pairs for named destinations, these will be used to replace internal links * done this way so that destinations can be defined after the location that links to them */ - public $destinations = array(); + public $destinations = []; /** * @var array Store the stack for the transaction commands, each item in here is a record of the values of all the @@ -279,7 +282,7 @@ class Cpdf * @var array Table of Image origin filenames and image labels which were already added with o_image(). * Allows to merge identical images */ - public $imagelist = array(); + public $imagelist = []; /** * @var boolean Whether the text passed in should be treated as Unicode or just local character set. @@ -299,22 +302,22 @@ class Cpdf /** * @var array Current page size */ - protected $currentPageSize = array("width" => 0, "height" => 0); + protected $currentPageSize = ["width" => 0, "height" => 0]; /** * @var array All the chars that will be required in the font subsets */ - protected $stringSubsets = array(); + protected $stringSubsets = []; /** * @var string The target internal encoding */ - static protected $targetEncoding = 'Windows-1252'; + protected static $targetEncoding = 'Windows-1252'; /** * @var array The list of the core fonts */ - static protected $coreFonts = array( + protected static $coreFonts = [ 'courier', 'courier-bold', 'courier-oblique', @@ -329,7 +332,7 @@ class Cpdf 'times-bolditalic', 'symbol', 'zapfdingbats' - ); + ]; /** * Class constructor @@ -340,7 +343,7 @@ class Cpdf * @param string $fontcache The font cache folder * @param string $tmp The temporary folder */ - function __construct($pageSize = array(0, 0, 612, 792), $isUnicode = false, $fontcache = '', $tmp = '') + function __construct($pageSize = [0, 0, 612, 792], $isUnicode = false, $fontcache = '', $tmp = '') { $this->isUnicode = $isUnicode; $this->fontcache = rtrim($fontcache, DIRECTORY_SEPARATOR."/\\"); @@ -384,7 +387,7 @@ class Cpdf { switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'destination', 'info' => array()); + $this->objects[$id] = ['t' => 'destination', 'info' => []]; $tmp = ''; switch ($options['type']) { case 'XYZ': @@ -429,7 +432,7 @@ class Cpdf { switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'viewerPreferences', 'info' => array()); + $this->objects[$id] = ['t' => 'viewerPreferences', 'info' => []]; break; case 'add': @@ -463,28 +466,28 @@ class Cpdf // Named with limited valid values case 'NonFullScreenPageMode': - if (!in_array($v, array('UseNone', 'UseOutlines', 'UseThumbs', 'UseOC'))) { + if (!in_array($v, ['UseNone', 'UseOutlines', 'UseThumbs', 'UseOC'])) { break; } $o['info'][$k] = $v; break; case 'Direction': - if (!in_array($v, array('L2R', 'R2L'))) { + if (!in_array($v, ['L2R', 'R2L'])) { break; } $o['info'][$k] = $v; break; case 'PrintScaling': - if (!in_array($v, array('None', 'AppDefault'))) { + if (!in_array($v, ['None', 'AppDefault'])) { break; } $o['info'][$k] = $v; break; case 'Duplex': - if (!in_array($v, array('None', 'AppDefault'))) { + if (!in_array($v, ['None', 'AppDefault'])) { break; } $o['info'][$k] = $v; @@ -542,7 +545,7 @@ class Cpdf switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'catalog', 'info' => array()); + $this->objects[$id] = ['t' => 'catalog', 'info' => []]; $this->catalogId = $id; break; @@ -616,7 +619,7 @@ class Cpdf switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'pages', 'info' => array()); + $this->objects[$id] = ['t' => 'pages', 'info' => []]; $this->o_catalog($this->catalogId, 'pages', $id); break; @@ -666,19 +669,19 @@ class Cpdf case 'mediaBox': $o['info']['mediaBox'] = $options; // which should be an array of 4 numbers - $this->currentPageSize = array('width' => $options[2], 'height' => $options[3]); + $this->currentPageSize = ['width' => $options[2], 'height' => $options[3]]; break; case 'font': - $o['info']['fonts'][] = array('objNum' => $options['objNum'], 'fontNum' => $options['fontNum']); + $o['info']['fonts'][] = ['objNum' => $options['objNum'], 'fontNum' => $options['fontNum']]; break; case 'extGState': - $o['info']['extGStates'][] = array('objNum' => $options['objNum'], 'stateNum' => $options['stateNum']); + $o['info']['extGStates'][] = ['objNum' => $options['objNum'], 'stateNum' => $options['stateNum']]; break; case 'xObject': - $o['info']['xObjects'][] = array('objNum' => $options['objNum'], 'label' => $options['label']); + $o['info']['xObjects'][] = ['objNum' => $options['objNum'], 'label' => $options['label']]; break; case 'out': @@ -764,7 +767,7 @@ class Cpdf switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'outlines', 'info' => array('outlines' => array())); + $this->objects[$id] = ['t' => 'outlines', 'info' => ['outlines' => []]]; $this->o_catalog($this->catalogId, 'outlines', $id); break; @@ -806,14 +809,14 @@ class Cpdf switch ($action) { case 'new': - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'font', - 'info' => array( + 'info' => [ 'name' => $options['name'], 'fontFileName' => $options['fontFileName'], 'SubType' => 'Type1' - ) - ); + ] + ]; $fontNum = $this->numFonts; $this->objects[$id]['info']['fontNum'] = $fontNum; @@ -864,7 +867,7 @@ class Cpdf } // also tell the pages node about the new font - $this->o_pages($this->currentNode, 'font', array('fontNum' => $fontNum, 'objNum' => $id)); + $this->o_pages($this->currentNode, 'font', ['fontNum' => $fontNum, 'objNum' => $id]); break; case 'add': @@ -962,9 +965,9 @@ class Cpdf { switch ($action) { case 'new': - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'toUnicode' - ); + ]; break; case 'add': break; @@ -1027,7 +1030,7 @@ EOT; switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'fontDescriptor', 'info' => $options); + $this->objects[$id] = ['t' => 'fontDescriptor', 'info' => $options]; break; case 'out': @@ -1093,7 +1096,7 @@ EOT; switch ($action) { case 'new': // the options array should contain 'differences' and maybe 'encoding' - $this->objects[$id] = array('t' => 'fontEncoding', 'info' => $options); + $this->objects[$id] = ['t' => 'fontEncoding', 'info' => $options]; break; case 'out': @@ -1145,7 +1148,7 @@ EOT; switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'fontDescendentCID', 'info' => $options); + $this->objects[$id] = ['t' => 'fontDescendentCID', 'info' => $options]; // we need a CID system info section $cidSystemInfoId = ++$this->numObj; @@ -1231,9 +1234,9 @@ EOT; { switch ($action) { case 'new': - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'cidSystemInfo' - ); + ]; break; case 'add': break; @@ -1279,7 +1282,7 @@ EOT; switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'fontGIDtoCIDMap', 'info' => $options); + $this->objects[$id] = ['t' => 'fontGIDtoCIDMap', 'info' => $options]; break; case 'out': @@ -1336,7 +1339,7 @@ EOT; switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'procset', 'info' => array('PDF' => 1, 'Text' => 1)); + $this->objects[$id] = ['t' => 'procset', 'info' => ['PDF' => 1, 'Text' => 1]]; $this->o_pages($this->currentNode, 'procset', $id); $this->procsetObjectId = $id; break; @@ -1380,13 +1383,13 @@ EOT; case 'new': $this->infoObject = $id; $date = 'D:' . @date('Ymd'); - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'info', - 'info' => array( + 'info' => [ 'Producer' => 'CPDF (dompdf)', 'CreationDate' => $date - ) - ); + ] + ]; break; case 'Title': case 'Author': @@ -1449,10 +1452,10 @@ EOT; switch ($action) { case 'new': if (is_array($options)) { - $this->objects[$id] = array('t' => 'action', 'info' => $options, 'type' => $options['type']); + $this->objects[$id] = ['t' => 'action', 'info' => $options, 'type' => $options['type']]; } else { // then assume a URI action - $this->objects[$id] = array('t' => 'action', 'info' => $options, 'type' => 'URI'); + $this->objects[$id] = ['t' => 'action', 'info' => $options, 'type' => 'URI']; } break; @@ -1516,7 +1519,7 @@ EOT; // and add the action object which is going to be required switch ($options['type']) { case 'link': - $this->objects[$id] = array('t' => 'annotation', 'info' => $options); + $this->objects[$id] = ['t' => 'annotation', 'info' => $options]; $this->numObj++; $this->o_action($this->numObj, 'new', $options['url']); $this->objects[$id]['info']['actionId'] = $this->numObj; @@ -1525,9 +1528,9 @@ EOT; case 'ilink': // this is to a named internal link $label = $options['label']; - $this->objects[$id] = array('t' => 'annotation', 'info' => $options); + $this->objects[$id] = ['t' => 'annotation', 'info' => $options]; $this->numObj++; - $this->o_action($this->numObj, 'new', array('type' => 'ilink', 'label' => $label)); + $this->o_action($this->numObj, 'new', ['type' => 'ilink', 'label' => $label]); $this->objects[$id]['info']['actionId'] = $this->numObj; break; } @@ -1576,14 +1579,14 @@ EOT; switch ($action) { case 'new': $this->numPages++; - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'page', - 'info' => array( + 'info' => [ 'parent' => $this->currentNode, 'pageNum' => $this->numPages, 'mediaBox' => $this->objects[$this->currentNode]['info']['mediaBox'] - ) - ); + ] + ]; if (is_array($options)) { // then this must be a page insertion, array should contain 'rid','pos'=[before|after] @@ -1598,7 +1601,7 @@ EOT; $this->numObj++; $this->o_contents($this->numObj, 'new', $id); $this->currentContents = $this->numObj; - $this->objects[$id]['info']['contents'] = array(); + $this->objects[$id]['info']['contents'] = []; $this->objects[$id]['info']['contents'][] = $this->numObj; $match = ($this->numPages % 2 ? 'odd' : 'even'); @@ -1616,7 +1619,7 @@ EOT; case 'annot': // add an annotation to this page if (!isset($o['info']['annot'])) { - $o['info']['annot'] = array(); + $o['info']['annot'] = []; } // $options should contain the id of the annotation dictionary @@ -1686,7 +1689,7 @@ EOT; switch ($action) { case 'new': - $this->objects[$id] = array('t' => 'contents', 'c' => '', 'info' => array()); + $this->objects[$id] = ['t' => 'contents', 'c' => '', 'info' => []]; if (mb_strlen($options, '8bit') && intval($options)) { // then this contents is the primary for a page $this->objects[$id]['onPage'] = $options; @@ -1747,12 +1750,12 @@ EOT; { switch ($action) { case 'new': - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'embedjs', - 'info' => array( + 'info' => [ 'Names' => '[(EmbeddedJS) ' . ($id + 1) . ' 0 R]' - ) - ); + ] + ]; break; case 'out': @@ -1779,13 +1782,13 @@ EOT; { switch ($action) { case 'new': - $this->objects[$id] = array( + $this->objects[$id] = [ 't' => 'javascript', - 'info' => array( + 'info' => [ 'S' => '/JavaScript', 'JS' => '(' . $this->filterText($code, true, false) . ')', - ) - ); + ] + ]; break; case 'out': @@ -1816,7 +1819,7 @@ EOT; switch ($action) { case 'new': // make the new object - $this->objects[$id] = array('t' => 'image', 'data' => &$options['data'], 'info' => array()); + $this->objects[$id] = ['t' => 'image', 'data' => &$options['data'], 'info' => []]; $info =& $this->objects[$id]['info']; @@ -1835,10 +1838,10 @@ EOT; } switch ($options['channels']) { - case 1: + case 1: $info['ColorSpace'] = '/DeviceGray'; break; - case 4: + case 4: $info['ColorSpace'] = '/DeviceCMYK'; break; default: @@ -1917,7 +1920,7 @@ EOT; // assign it a place in the named resource dictionary as an external object, according to // the label passed in with it. - $this->o_pages($this->currentNode, 'xObject', array('label' => $options['label'], 'objNum' => $id)); + $this->o_pages($this->currentNode, 'xObject', ['label' => $options['label'], 'objNum' => $id]); // also make sure that we have the right procset object for it. $this->o_procset($this->procsetObjectId, 'add', 'ImageC'); @@ -1955,7 +1958,7 @@ EOT; */ protected function o_extGState($id, $action, $options = "") { - static $valid_params = array( + static $valid_params = [ "LW", "LC", "LC", @@ -1982,15 +1985,15 @@ EOT; "ca", "AIS", "TK" - ); + ]; switch ($action) { case "new": - $this->objects[$id] = array('t' => 'extGState', 'info' => $options); + $this->objects[$id] = ['t' => 'extGState', 'info' => $options]; // Tell the pages about the new resource $this->numStates++; - $this->o_pages($this->currentNode, 'extGState', array("objNum" => $id, "stateNum" => $this->numStates)); + $this->o_pages($this->currentNode, 'extGState', ["objNum" => $id, "stateNum" => $this->numStates]); break; case "out": @@ -2025,7 +2028,7 @@ EOT; switch ($action) { case 'new': // make the new object - $this->objects[$id] = array('t' => 'encryption', 'info' => $options); + $this->objects[$id] = ['t' => 'encryption', 'info' => $options]; $this->arc4_objnum = $id; break; @@ -2221,7 +2224,7 @@ EOT; function addLink($url, $x0, $y0, $x1, $y1) { $this->numObj++; - $info = array('type' => 'link', 'url' => $url, 'rect' => array($x0, $y0, $x1, $y1)); + $info = ['type' => 'link', 'url' => $url, 'rect' => [$x0, $y0, $x1, $y1]]; $this->o_annotation($this->numObj, 'new', $info); } @@ -2237,7 +2240,7 @@ EOT; function addInternalLink($label, $x0, $y0, $x1, $y1) { $this->numObj++; - $info = array('type' => 'ilink', 'label' => $label, 'rect' => array($x0, $y0, $x1, $y1)); + $info = ['type' => 'ilink', 'label' => $label, 'rect' => [$x0, $y0, $x1, $y1]]; $this->o_annotation($this->numObj, 'new', $info); } @@ -2250,11 +2253,11 @@ EOT; * @param string $ownerPass * @param array $pc */ - function setEncryption($userPass = '', $ownerPass = '', $pc = array()) + function setEncryption($userPass = '', $ownerPass = '', $pc = []) { $p = bindec("11000000"); - $options = array('print' => 4, 'modify' => 8, 'copy' => 16, 'add' => 32); + $options = ['print' => 4, 'modify' => 8, 'copy' => 16, 'add' => 32]; foreach ($pc as $k => $v) { if ($v && isset($options[$k])) { @@ -2274,7 +2277,7 @@ EOT; $ownerPass = $userPass; } - $this->o_encryption($this->numObj, 'new', array('user' => $userPass, 'owner' => $ownerPass, 'p' => $p)); + $this->o_encryption($this->numObj, 'new', ['user' => $userPass, 'owner' => $ownerPass, 'p' => $p]); } } @@ -2311,7 +2314,7 @@ EOT; } if ($this->fileIdentifier === '') { - $tmp = implode('', $this->objects[$this->infoObject]['info']); + $tmp = implode('', $this->objects[$this->infoObject]['info']); $this->fileIdentifier = md5('DOMPDF' . __FILE__ . $tmp . microtime() . mt_rand()); } @@ -2322,7 +2325,7 @@ EOT; $this->checkAllHere(); - $xref = array(); + $xref = []; $content = '%PDF-1.3'; $pos = mb_strlen($content, '8bit'); @@ -2368,10 +2371,10 @@ EOT; * * @param array $pageSize */ - private function newDocument($pageSize = array(0, 0, 612, 792)) + private function newDocument($pageSize = [0, 0, 612, 792]) { $this->numObj = 0; - $this->objects = array(); + $this->objects = []; $this->numObj++; $this->o_catalog($this->numObj, 'new'); @@ -2463,10 +2466,10 @@ EOT; if (!isset($this->fonts[$font]) && file_exists($dir . $metrics_name)) { // then rebuild the php_<font>.afm file from the <font>.afm file $this->addMessage("openFont: build php file from $dir$metrics_name"); - $data = array(); + $data = []; // 20 => 'space' - $data['codeToName'] = array(); + $data['codeToName'] = []; // Since we're not going to enable Unicode for the core fonts we need to use a font-based // setting for Unicode support rather than a global setting. @@ -2517,7 +2520,7 @@ EOT; //C 39 ; WX 222 ; N quoteright ; B 53 463 157 718 ; case 'C': // Found in AFM files $bits = explode(';', trim($row)); - $dtmp = array(); + $dtmp = ['C' => null, 'N' => null, 'WX' => null, 'B' => []]; foreach ($bits as $bit) { $bits2 = explode(' ', trim($bit)); @@ -2526,7 +2529,7 @@ EOT; } if (count($bits2) > 2) { - $dtmp[$bits2[0]] = array(); + $dtmp[$bits2[0]] = []; for ($i = 1; $i < count($bits2); $i++) { $dtmp[$bits2[0]][] = $bits2[$i]; } @@ -2542,15 +2545,15 @@ EOT; $width = floatval($dtmp['WX']); if ($c >= 0) { - if ($c != hexdec($n)) { + if (!ctype_xdigit($n) || $c != hexdec($n)) { $data['codeToName'][$c] = $n; } $data['C'][$c] = $width; - } else { + } elseif (isset($n)) { $data['C'][$n] = $width; } - if (!isset($data['MissingWidth']) && $c == -1 && $n === '.notdef') { + if (!isset($data['MissingWidth']) && $c === -1 && $n === '.notdef') { $data['MissingWidth'] = $width; } @@ -2563,7 +2566,7 @@ EOT; } $bits = explode(';', trim($row)); - $dtmp = array(); + $dtmp = ['G' => null, 'N' => null, 'U' => null, 'WX' => null]; foreach ($bits as $bit) { $bits2 = explode(' ', trim($bit)); @@ -2572,7 +2575,7 @@ EOT; } if (count($bits2) > 2) { - $dtmp[$bits2[0]] = array(); + $dtmp[$bits2[0]] = []; for ($i = 1; $i < count($bits2); $i++) { $dtmp[$bits2[0]][] = $bits2[$i]; } @@ -2595,15 +2598,15 @@ EOT; $cidtogid[$c * 2 + 1] = chr($glyph & 0xFF); } - if ($c != hexdec($n)) { + if (!ctype_xdigit($n) || $c != hexdec($n)) { $data['codeToName'][$c] = $n; } $data['C'][$c] = $width; - } else { + } elseif (isset($n)) { $data['C'][$n] = $width; } - if (!isset($data['MissingWidth']) && $c == -1 && $n === '.notdef') { + if (!isset($data['MissingWidth']) && $c === -1 && $n === '.notdef') { $data['MissingWidth'] = $width; } @@ -2676,7 +2679,7 @@ EOT; $name = basename($fontName); $dir = dirname($fontName) . '/'; - $options = array('name' => $name, 'fontFileName' => $fontName); + $options = ['name' => $name, 'fontFileName' => $fontName]; if (is_array($encoding)) { // then encoding and differences might be set @@ -2730,8 +2733,8 @@ EOT; // find the array of font widths, and put that into an object. $firstChar = -1; $lastChar = 0; - $widths = array(); - $cid_widths = array(); + $widths = []; + $cid_widths = []; foreach ($font['C'] as $num => $d) { if (intval($num) > 0 || $num == '0') { @@ -2835,8 +2838,9 @@ EOT; // Write new font $tmp_name = $this->tmp . "/" . basename($fbfile) . ".tmp." . uniqid(); - $font_obj->open($tmp_name, BinaryStream::modeWrite); - $font_obj->encode(array("OS/2")); + touch($tmp_name); + $font_obj->open($tmp_name, BinaryStream::modeReadWrite); + $font_obj->encode(["OS/2"]); $font_obj->close(); // Parse the new font to get cid2gid and widths @@ -2858,7 +2862,7 @@ EOT; unset($glyphIndexArray[0xFFFF]); $cidtogid = str_pad('', max(array_keys($glyphIndexArray)) * 2 + 1, "\x00"); - $font['CIDWidths'] = array(); + $font['CIDWidths'] = []; foreach ($glyphIndexArray as $cid => $gid) { if ($cid >= 0 && $cid < 0xFFFF && $gid) { $cidtogid[$cid * 2] = chr($gid >> 8); @@ -2900,19 +2904,19 @@ EOT; } $flags += pow(2, 5); // assume non-sybolic - $list = array( + $list = [ 'Ascent' => 'Ascender', 'CapHeight' => 'Ascender', //FIXME: php-font-lib is not grabbing this value, so we'll fake it and use the Ascender value // 'CapHeight' 'MissingWidth' => 'MissingWidth', 'Descent' => 'Descender', 'FontBBox' => 'FontBBox', 'ItalicAngle' => 'ItalicAngle' - ); - $fdopt = array( + ]; + $fdopt = [ 'Flags' => $flags, 'FontName' => $adobeFontName, 'StemV' => $stemV - ); + ]; foreach ($list as $k => $v) { if (isset($font[$v])) { @@ -2940,22 +2944,22 @@ EOT; $this->o_contents( $this->numObj, 'add', - array('Length1' => $l1, 'Length2' => $l2, 'Length3' => $l3) + ['Length1' => $l1, 'Length2' => $l2, 'Length3' => $l3] ); } elseif (strtolower($fbtype) == 'ttf') { $l1 = mb_strlen($data, '8bit'); - $this->o_contents($this->numObj, 'add', array('Length1' => $l1)); + $this->o_contents($this->numObj, 'add', ['Length1' => $l1]); } // tell the font object about all this new stuff - $tmp = array( + $tmp = [ 'BaseFont' => $adobeFontName, 'MissingWidth' => $missing_width, 'Widths' => $widthid, 'FirstChar' => $firstChar, 'LastChar' => $lastChar, 'FontDescriptor' => $fontDescriptorId - ); + ]; if (strtolower($fbtype) === 'ttf') { $tmp['SubType'] = 'TrueType'; @@ -3062,7 +3066,7 @@ EOT; */ function setColor($color, $force = false) { - $new_color = array($color[0], $color[1], $color[2], isset($color[3]) ? $color[3] : null); + $new_color = [$color[0], $color[1], $color[2], isset($color[3]) ? $color[3] : null]; if (!$force && $this->currentColor == $new_color) { return; @@ -3086,7 +3090,7 @@ EOT; */ function setFillRule($fillRule) { - if (!in_array($fillRule, array("nonzero", "evenodd"))) { + if (!in_array($fillRule, ["nonzero", "evenodd"])) { return; } @@ -3101,7 +3105,7 @@ EOT; */ function setStrokeColor($color, $force = false) { - $new_color = array($color[0], $color[1], $color[2], isset($color[3]) ? $color[3] : null); + $new_color = [$color[0], $color[1], $color[2], isset($color[3]) ? $color[3] : null]; if (!$force && $this->currentStrokeColor == $new_color) { return; @@ -3149,7 +3153,7 @@ EOT; */ function setLineTransparency($mode, $opacity) { - static $blend_modes = array( + static $blend_modes = [ "Normal", "Multiply", "Screen", @@ -3162,7 +3166,7 @@ EOT; "SoftLight", "Difference", "Exclusion" - ); + ]; if (!in_array($mode, $blend_modes)) { $mode = "Normal"; @@ -3178,10 +3182,10 @@ EOT; $this->currentLineTransparency["mode"] = $mode; $this->currentLineTransparency["opacity"] = $opacity; - $options = array( + $options = [ "BM" => "/$mode", "CA" => (float)$opacity - ); + ]; $this->setGraphicsState($options); } @@ -3200,7 +3204,7 @@ EOT; */ function setFillTransparency($mode, $opacity) { - static $blend_modes = array( + static $blend_modes = [ "Normal", "Multiply", "Screen", @@ -3213,7 +3217,7 @@ EOT; "SoftLight", "Difference", "Exclusion" - ); + ]; if (!in_array($mode, $blend_modes)) { $mode = "Normal"; @@ -3228,10 +3232,10 @@ EOT; $this->currentFillTransparency["mode"] = $mode; $this->currentFillTransparency["opacity"] = $opacity; - $options = array( + $options = [ "BM" => "/$mode", "ca" => (float)$opacity, - ); + ]; $this->setGraphicsState($options); } @@ -3344,7 +3348,8 @@ EOT; /** * draw a bezier curve based on 4 control points - */ function quadTo($cpx, $cpy, $x, $y) + */ + function quadTo($cpx, $cpy, $x, $y) { $this->addContent(sprintf("\n%.3F %.3F %.3F %.3F v", $cpx, $cpy, $x, $y)); } @@ -3510,13 +3515,13 @@ EOT; $string .= "$width w"; } - $ca = array('butt' => 0, 'round' => 1, 'square' => 2); + $ca = ['butt' => 0, 'round' => 1, 'square' => 2]; if (isset($ca[$cap])) { $string .= " $ca[$cap] J"; } - $ja = array('miter' => 0, 'round' => 1, 'bevel' => 2); + $ja = ['miter' => 0, 'round' => 1, 'bevel' => 2]; if (isset($ja[$join])) { $string .= " $ja[$join] j"; @@ -3715,14 +3720,14 @@ EOT; { $y = $this->currentPageSize["height"] - $y; - $tm = array( + $tm = [ $s_x, 0, 0, $s_y, $x * (1 - $s_x), $y * (1 - $s_y) - ); + ]; $this->transform($tm); } @@ -3735,14 +3740,14 @@ EOT; */ function translate($t_x, $t_y) { - $tm = array( + $tm = [ 1, 0, 0, 1, $t_x, -$t_y - ); + ]; $this->transform($tm); } @@ -3762,14 +3767,14 @@ EOT; $cos_a = cos($a); $sin_a = sin($a); - $tm = array( + $tm = [ $cos_a, -$sin_a, $sin_a, $cos_a, $x - $sin_a * $y - $cos_a * $x, $y - $cos_a * $y + $sin_a * $x, - ); + ]; $this->transform($tm); } @@ -3789,14 +3794,14 @@ EOT; $tan_x = tan(deg2rad($angle_x)); $tan_y = tan(deg2rad($angle_y)); - $tm = array( + $tm = [ 1, -$tan_y, -$tan_x, 1, $tan_x * $y, $tan_y * $x, - ); + ]; $this->transform($tm); } @@ -3837,7 +3842,7 @@ EOT; // the id from the ezPdf class is the id of the contents of the page, not the page object itself // query that object to find the parent $rid = $this->objects[$id]['onPage']; - $opt = array('rid' => $rid, 'pos' => $pos); + $opt = ['rid' => $rid, 'pos' => $pos]; $this->o_page($this->numObj, 'new', $opt); } else { $this->o_page($this->numObj, 'new'); @@ -3874,7 +3879,7 @@ EOT; * @param string $filename The filename to present to the client. * @param array $options Associative array: 'compress' => 1 or 0 (default 1); 'Attachment' => 1 or 0 (default 1). */ - function stream($filename = "document.pdf", $options = array()) + function stream($filename = "document.pdf", $options = []) { if (headers_sent()) { die("Unable to stream pdf: headers already sent"); @@ -3890,7 +3895,7 @@ EOT; header("Content-Type: application/pdf"); header("Content-Length: " . mb_strlen($tmp, "8bit")); - $filename = str_replace(array("\n", "'"), "", basename($filename, ".pdf")) . ".pdf"; + $filename = str_replace(["\n", "'"], "", basename($filename, ".pdf")) . ".pdf"; $attachment = $options["Attachment"] ? "attachment" : "inline"; $encoding = mb_detect_encoding($filename); @@ -4018,7 +4023,7 @@ EOT; } // the chr(13) substitution fixes a bug seen in TCPDF (bug #1421290) - return strtr($text, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r')); + return strtr($text, [')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r']); } /** @@ -4039,8 +4044,8 @@ EOT; function utf8toCodePointsArray(&$text) { $length = mb_strlen($text, '8bit'); // http://www.php.net/manual/en/function.mb-strlen.php#77040 - $unicode = array(); // array containing unicode values - $bytes = array(); // array containing single character byte sequences + $unicode = []; // array containing unicode values + $bytes = []; // array containing single character byte sequences $numbytes = 1; // number of octets needed to represent the UTF-8 character for ($i = 0; $i < $length; $i++) { @@ -4061,7 +4066,7 @@ EOT; } else { // use replacement character for other invalid sequences $unicode[] = 0xFFFD; - $bytes = array(); + $bytes = []; $numbytes = 1; } } elseif (($c >> 0x06) === 0x02) { // bytes 2, 3 and 4 must start with 0x02 = 10 BIN @@ -4072,7 +4077,7 @@ EOT; for ($j = 1; $j < $numbytes; $j++) { $c += ($bytes[$j] << (($numbytes - $j - 1) * 0x06)); } - if ((($c >= 0xD800) AND ($c <= 0xDFFF)) OR ($c >= 0x10FFFF)) { + if ((($c >= 0xD800) and ($c <= 0xDFFF)) or ($c >= 0x10FFFF)) { // The definition of UTF-8 prohibits encoding character numbers between // U+D800 and U+DFFF, which are reserved for use with the UTF-16 // encoding form (as surrogate pairs) and do not directly represent @@ -4082,13 +4087,13 @@ EOT; $unicode[] = $c; // add char to array } // reset data for next char - $bytes = array(); + $bytes = []; $numbytes = 1; } } else { // use replacement character for other invalid sequences $unicode[] = 0xFFFD; - $bytes = array(); + $bytes = []; $numbytes = 1; } } @@ -4156,7 +4161,7 @@ EOT; $w += $wa * $nspaces; $a = deg2rad((float)$angle); - return array(cos($a) * $w + $x, -sin($a) * $w + $y); + return [cos($a) * $w + $x, -sin($a) * $w + $y]; } /** @@ -4194,7 +4199,7 @@ EOT; } if (!isset($this->stringSubsets[$font])) { - $this->stringSubsets[$font] = array(); + $this->stringSubsets[$font] = []; } $this->stringSubsets[$font] = array_unique( @@ -4220,7 +4225,7 @@ EOT; $this->selectFont($this->defaultFont); } - $text = str_replace(array("\r", "\n"), "", $text); + $text = str_replace(["\r", "\n"], "", $text); if ($smallCaps) { preg_match_all("/(\P{Ll}+)/u", $text, $matches, PREG_SET_ORDER); @@ -4238,7 +4243,7 @@ EOT; if ($this->nCallback > 0) { for ($i = $this->nCallback; $i > 0; $i--) { // call each function - $info = array( + $info = [ 'x' => $x, 'y' => $y, 'angle' => $angle, @@ -4247,7 +4252,7 @@ EOT; 'nCallback' => $this->callback[$i]['nCallback'], 'height' => $this->callback[$i]['height'], 'descender' => $this->callback[$i]['descender'] - ); + ]; $func = $this->callback[$i]['f']; $this->$func($info); @@ -4302,7 +4307,7 @@ EOT; for ($i = $this->nCallback; $i > 0; $i--) { // call each function $tmp = $this->getTextPosition($x, $y, $angle, $size, $wordSpaceAdjust, $text); - $info = array( + $info = [ 'x' => $tmp[0], 'y' => $tmp[1], 'angle' => $angle, @@ -4311,7 +4316,7 @@ EOT; 'nCallback' => $this->callback[$i]['nCallback'], 'height' => $this->callback[$i]['height'], 'descender' => $this->callback[$i]['descender'] - ); + ]; $func = $this->callback[$i]['f']; $this->$func($info); } @@ -4330,7 +4335,7 @@ EOT; */ function getTextWidth($size, $text, $word_spacing = 0, $char_spacing = 0) { - static $ord_cache = array(); + static $ord_cache = []; // this function should not change any of the settings, though it will need to // track any directives which change during calculation, so copy them at the start @@ -4341,7 +4346,7 @@ EOT; $this->selectFont($this->defaultFont); } - $text = str_replace(array("\r", "\n"), "", $text); + $text = str_replace(["\r", "\n"], "", $text); // converts a number or a float to a string so it can get the width $text = "$text"; @@ -4448,11 +4453,11 @@ EOT; // $this->currentLineStyle = $opt['lin']; } else { $this->nStateStack++; - $this->stateStack[$this->nStateStack] = array( + $this->stateStack[$this->nStateStack] = [ 'col' => $this->currentColor, 'str' => $this->currentStrokeColor, 'lin' => $this->currentLineStyle - ); + ]; } $this->save(); @@ -4490,7 +4495,7 @@ EOT; function openObject() { $this->nStack++; - $this->stack[$this->nStack] = array('c' => $this->currentContents, 'p' => $this->currentPage); + $this->stack[$this->nStack] = ['c' => $this->currentContents, 'p' => $this->currentPage]; // add a new object of the content type, to hold the data flow $this->numObj++; $this->o_contents($this->numObj, 'new'); @@ -4508,7 +4513,7 @@ EOT; function reopenObject($id) { $this->nStack++; - $this->stack[$this->nStack] = array('c' => $this->currentContents, 'p' => $this->currentPage); + $this->stack[$this->nStack] = ['c' => $this->currentContents, 'p' => $this->currentPage]; $this->currentContents = $id; // also if this object is the primary contents for a page, then set the current page to its parent @@ -4667,10 +4672,10 @@ EOT; // this will only work if the label is one of the valid ones. if (is_array($label)) { foreach ($label as $l => $v) { - $this->o_catalog($this->catalogId, 'viewerPreferences', array($l => $v)); + $this->o_catalog($this->catalogId, 'viewerPreferences', [$l => $v]); } } else { - $this->o_catalog($this->catalogId, 'viewerPreferences', array($label => $value)); + $this->o_catalog($this->catalogId, 'viewerPreferences', [$label => $value]); } } @@ -4856,7 +4861,7 @@ EOT; // the first version containing it was 3.0.1RC1 static $imagickClonable = null; if ($imagickClonable === null) { - $imagickClonable = version_compare(Imagick::IMAGICK_EXTVER, '3.0.1rc1') > 0; + $imagickClonable = version_compare(\Imagick::IMAGICK_EXTVER, '3.0.1rc1') > 0; } $imagick = new \Imagick($file); @@ -4889,7 +4894,7 @@ EOT; $imgplain = imagecreatefrompng($tempfile_plain); } else { // allocated colors cache - $allocated_colors = array(); + $allocated_colors = []; // extract alpha channel for ($xpx = 0; $xpx < $wpx; ++$xpx) { @@ -4978,7 +4983,7 @@ EOT; // 3 => indexed // 4 => greyscale with alpha // 6 => fullcolor with alpha - $is_alpha = in_array($color_type, array(4, 6)) || ($color_type == 3 && $bit_depth != 4); + $is_alpha = in_array($color_type, [4, 6]) || ($color_type == 3 && $bit_depth != 4); if ($is_alpha) { // exclude grayscale alpha $this->addImagePngAlpha($file, $x, $y, $w, $h, $color_type); @@ -5043,7 +5048,7 @@ EOT; $this->save(); - $this->transform(array($w / $dimensions["width"], 0, 0, $h / $dimensions["height"], $x, $y)); + $this->transform([$w / $dimensions["width"], 0, 0, $h / $dimensions["height"], $x, $y]); $surface = new \Svg\Surface\SurfaceCpdf($doc, $this); $doc->render($surface); @@ -5100,7 +5105,7 @@ EOT; // cycle through the file, identifying chunks $haveHeader = 0; - $info = array(); + $info = []; $idata = ''; $pdata = ''; @@ -5155,7 +5160,7 @@ EOT; case 'tRNS': //this chunk can only occur once and it must occur after the PLTE chunk and before IDAT chunk //print "tRNS found, color type = ".$info['colorType']."\n"; - $transparency = array(); + $transparency = []; switch ($info['colorType']) { // indexed color, rbg @@ -5301,7 +5306,7 @@ EOT; $this->numObj++; // $this->o_image($this->numObj,'new',array('label' => $label,'data' => $idata,'iw' => $w,'ih' => $h,'type' => 'png','ic' => $info['width'])); - $options = array( + $options = [ 'label' => $label, 'data' => $idata, 'bitsPerComponent' => $info['bitDepth'], @@ -5313,14 +5318,14 @@ EOT; 'ncolor' => $ncolor, 'masked' => $mask, 'isMask' => $is_mask - ); + ]; if (isset($transparency)) { $options['transparency'] = $transparency; } $this->o_image($this->numObj, 'new', $options); - $this->imagelist[$file] = array('label' => $label, 'w' => $info['width'], 'h' => $info['height']); + $this->imagelist[$file] = ['label' => $label, 'w' => $info['width'], 'h' => $info['height']]; } if ($is_mask) { @@ -5440,21 +5445,21 @@ EOT; $this->o_image( $this->numObj, 'new', - array( + [ 'label' => $label, 'data' => &$data, 'iw' => $imageWidth, 'ih' => $imageHeight, 'channels' => $channels - ) + ] ); - $this->imagelist[$imgname] = array( + $this->imagelist[$imgname] = [ 'label' => $label, 'w' => $imageWidth, 'h' => $imageHeight, 'c' => $channels - ); + ]; } $this->addContent(sprintf("\nq\n%.3F 0 0 %.3F %.3F %.3F cm /%s Do\nQ ", $w, $h, $x, $y, $label)); @@ -5484,7 +5489,7 @@ EOT; $this->o_destination( $this->numObj, 'new', - array('page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c) + ['page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c] ); $id = $this->catalogId; $this->o_catalog($id, 'openHere', $this->numObj); @@ -5518,7 +5523,7 @@ EOT; $this->o_destination( $this->numObj, 'new', - array('page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c) + ['page' => $this->currentPage, 'type' => $style, 'p1' => $a, 'p2' => $b, 'p3' => $c] ); $id = $this->numObj; @@ -5542,28 +5547,28 @@ EOT; // these font families will be used to enable bold and italic markers to be included // within text streams. html forms will be used... <b></b> <i></i> $this->fontFamilies['Helvetica.afm'] = - array( + [ 'b' => 'Helvetica-Bold.afm', 'i' => 'Helvetica-Oblique.afm', 'bi' => 'Helvetica-BoldOblique.afm', 'ib' => 'Helvetica-BoldOblique.afm' - ); + ]; $this->fontFamilies['Courier.afm'] = - array( + [ 'b' => 'Courier-Bold.afm', 'i' => 'Courier-Oblique.afm', 'bi' => 'Courier-BoldOblique.afm', 'ib' => 'Courier-BoldOblique.afm' - ); + ]; $this->fontFamilies['Times-Roman.afm'] = - array( + [ 'b' => 'Times-Bold.afm', 'i' => 'Times-Italic.afm', 'bi' => 'Times-BoldItalic.afm', 'ib' => 'Times-BoldItalic.afm' - ); + ]; } } else { diff --git a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Data.php b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Data.php index f0f520880c..609e996244 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Data.php +++ b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Data.php @@ -10,7 +10,7 @@ class HTML5_Data // codepoints // XXX: Not quite sure why it's named this; this is // actually the numeric entity dereference table. - protected static $realCodepointTable = array( + protected static $realCodepointTable = [ 0x00 => 0xFFFD, // REPLACEMENT CHARACTER 0x0D => 0x000A, // LINE FEED (LF) 0x80 => 0x20AC, // EURO SIGN ('€') @@ -45,7 +45,7 @@ class HTML5_Data 0x9D => 0x009D, // <control> 0x9E => 0x017E, // LATIN SMALL LETTER Z WITH CARON ('ž') 0x9F => 0x0178, // LATIN CAPITAL LETTER Y WITH DIAERESIS ('Ÿ') - ); + ]; protected static $namedCharacterReferences; diff --git a/civicrm/vendor/dompdf/dompdf/lib/html5lib/InputStream.php b/civicrm/vendor/dompdf/dompdf/lib/html5lib/InputStream.php index 65fc14f31b..dde71942d7 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/html5lib/InputStream.php +++ b/civicrm/vendor/dompdf/dompdf/lib/html5lib/InputStream.php @@ -48,7 +48,7 @@ class HTML5_InputStream { /** * Parse errors. */ - public $errors = array(); + public $errors = []; /** * @param $data | Data to parse @@ -90,10 +90,10 @@ class HTML5_InputStream { by U+FFFD REPLACEMENT CHARACTERs. Any occurrences of such characters is a parse error. */ for ($i = 0, $count = substr_count($data, "\0"); $i < $count; $i++) { - $this->errors[] = array( + $this->errors[] = [ 'type' => HTML5_Tokenizer::PARSEERROR, 'data' => 'null-character' - ); + ]; } /* U+000D CARRIAGE RETURN (CR) characters and U+000A LINE FEED (LF) characters are treated specially. Any CR characters @@ -103,16 +103,16 @@ class HTML5_InputStream { by LF characters, and there are never any CR characters in the input to the tokenization stage. */ $data = str_replace( - array( + [ "\0", "\r\n", "\r" - ), - array( + ], + [ "\xEF\xBF\xBD", "\n", "\n" - ), + ], $data ); @@ -146,10 +146,10 @@ class HTML5_InputStream { $matches ); for ($i = 0; $i < $count; $i++) { - $this->errors[] = array( + $this->errors[] = [ 'type' => HTML5_Tokenizer::PARSEERROR, 'data' => 'invalid-codepoint' - ); + ]; } } else { // XXX: Need non-PCRE impl, probably using substr_count diff --git a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Parser.php b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Parser.php index 724fa9af6c..b48ce6830e 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Parser.php +++ b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Parser.php @@ -16,7 +16,7 @@ class HTML5_Parser * @param $builder | Custom builder implementation * @return DOMDocument|DOMNodeList Parsed HTML as DOMDocument */ - static public function parse($text, $builder = null) { + public static function parse($text, $builder = null) { $tokenizer = new HTML5_Tokenizer($text, $builder); $tokenizer->parse(); return $tokenizer->save(); @@ -29,7 +29,7 @@ class HTML5_Parser * @param $builder | Custom builder implementation * @return DOMDocument|DOMNodeList Parsed HTML as DOMDocument */ - static public function parseFragment($text, $context = null, $builder = null) { + public static function parseFragment($text, $context = null, $builder = null) { $tokenizer = new HTML5_Tokenizer($text, $builder); $tokenizer->parseFragment($context); return $tokenizer->save(); diff --git a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Tokenizer.php b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Tokenizer.php index 46e8504f2e..9f1f3ae9dc 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/html5lib/Tokenizer.php +++ b/civicrm/vendor/dompdf/dompdf/lib/html5lib/Tokenizer.php @@ -206,10 +206,10 @@ class HTML5_Tokenizer { /* In any case, emit the input character as a character token. Stay in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '-' - )); + ]); // We do the "any case" part as part of "anything else". /* U+003C LESS-THAN SIGN (<) */ @@ -239,29 +239,29 @@ class HTML5_Tokenizer { /* In any case, emit the input character as a character token. Stay in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '>' - )); + ]); // We do the "any case" part as part of "anything else". } elseif ($char === false) { /* EOF Emit an end-of-file token. */ $state = null; - $this->tree->emitToken(array( + $this->tree->emitToken([ 'type' => self::EOF - )); + ]); } elseif ($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') { // Directly after emitting a token you switch back to the "data // state". At that point spaceCharacters are important so they are // emitted separately. $chars = $this->stream->charsWhile(self::WHITESPACE); - $this->emitToken(array( + $this->emitToken([ 'type' => self::SPACECHARACTER, 'data' => $char . $chars - )); + ]); $lastFourChars .= $chars; if (strlen($lastFourChars) > 4) { $lastFourChars = substr($lastFourChars, -4); @@ -292,10 +292,10 @@ class HTML5_Tokenizer { $chars = $this->stream->charsUntil($mask); } - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => $char . $chars - )); + ]); $lastFourChars .= $chars; if (strlen($lastFourChars) > 4) { @@ -318,10 +318,10 @@ class HTML5_Tokenizer { character token. Otherwise, emit the character token that was returned. */ // This is all done when consuming the character reference. - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => $entity - )); + ]); /* Finally, switch to the data state. */ $state = 'data'; @@ -343,10 +343,10 @@ class HTML5_Tokenizer { if ($char === '/') { $state = 'close tag open'; } else { - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '<' - )); + ]); $this->stream->unget(); @@ -375,11 +375,11 @@ class HTML5_Tokenizer { version of the input character (add 0x0020 to the character's code point), then switch to the tag name state. (Don't emit the token yet; further details will be filled in before it is emitted.) */ - $this->token = array( + $this->token = [ 'name' => strtolower($char), 'type' => self::STARTTAG, - 'attr' => array() - ); + 'attr' => [] + ]; $state = 'tag name'; @@ -389,11 +389,11 @@ class HTML5_Tokenizer { character, then switch to the tag name state. (Don't emit the token yet; further details will be filled in before it is emitted.) */ - $this->token = array( + $this->token = [ 'name' => $char, 'type' => self::STARTTAG, - 'attr' => array() - ); + 'attr' => [] + ]; $state = 'tag name'; @@ -401,42 +401,42 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+003E GREATER-THAN SIGN character token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-tag-name-but-got-right-bracket' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '<>' - )); + ]); $state = 'data'; } elseif ($char === '?') { /* U+003F QUESTION MARK (?) Parse error. Switch to the bogus comment state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-tag-name-but-got-question-mark' - )); - $this->token = array( + ]); + $this->token = [ 'data' => '?', 'type' => self::COMMENT - ); + ]; $state = 'bogus comment'; } else { /* Anything else Parse error. Emit a U+003C LESS-THAN SIGN character token and reconsume the current input character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-tag-name' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '<' - )); + ]); $state = 'data'; $this->stream->unget(); @@ -458,7 +458,7 @@ class HTML5_Tokenizer { if ( !$this->token || $this->token['name'] !== $name || - $this->token['name'] === $name && !in_array($following, array("\x09", "\x0A", "\x0C", "\x20", "\x3E", "\x2F", false)) + $this->token['name'] === $name && !in_array($following, ["\x09", "\x0A", "\x0C", "\x20", "\x3E", "\x2F", false]) ) { /* if no start tag token has ever been emitted by this instance of the tokenizer (fragment case), or, if the next few @@ -482,10 +482,10 @@ class HTML5_Tokenizer { // We also need to emit $name now we've consumed that, as we // know it'll just be emitted as a character token. - $this->emitToken(array( + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '</' . $name - )); + ]); $state = 'data'; } else { @@ -494,10 +494,10 @@ class HTML5_Tokenizer { // much). // Start the end tag token with the name we already have. - $this->token = array( + $this->token = [ 'name' => $name, 'type' => self::ENDTAG - ); + ]; // Change to tag name state. $state = 'tag name'; @@ -513,10 +513,10 @@ class HTML5_Tokenizer { of the input character (add 0x0020 to the character's code point), then switch to the tag name state. (Don't emit the token yet; further details will be filled in before it is emitted.) */ - $this->token = array( + $this->token = [ 'name' => strtolower($char), 'type' => self::ENDTAG - ); + ]; $state = 'tag name'; @@ -526,48 +526,48 @@ class HTML5_Tokenizer { input character, then switch to the tag name state. (Don't emit the token yet; further details will be filled in before it is emitted.) */ - $this->token = array( + $this->token = [ 'name' => $char, 'type' => self::ENDTAG - ); + ]; $state = 'tag name'; } elseif ($char === '>') { /* U+003E GREATER-THAN SIGN (>) Parse error. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-closing-tag-but-got-right-bracket' - )); + ]); $state = 'data'; } elseif ($char === false) { /* EOF Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+002F SOLIDUS character token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-closing-tag-but-got-eof' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'type' => self::CHARACTER, 'data' => '</' - )); + ]); $this->stream->unget(); $state = 'data'; } else { /* Parse error. Switch to the bogus comment state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-closing-tag-but-got-char' - )); - $this->token = array( + ]); + $this->token = [ 'data' => $char, 'type' => self::COMMENT - ); + ]; $state = 'bogus comment'; } } @@ -609,10 +609,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-tag-name' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -659,20 +659,20 @@ class HTML5_Tokenizer { input character (add 0x0020 to the character's code point), and its value to the empty string. Switch to the attribute name state.*/ - $this->token['attr'][] = array( + $this->token['attr'][] = [ 'name' => strtolower($char), 'value' => '' - ); + ]; $state = 'attribute name'; } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-attribute-name-but-got-eof' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -685,20 +685,20 @@ class HTML5_Tokenizer { Parse error. Treat it as per the "anything else" entry below. */ if ($char === '"' || $char === "'" || $char === '<' || $char === '=') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'invalid-character-in-attribute-name' - )); + ]); } /* Anything else Start a new attribute in the current tag token. Set that attribute's name to the current input character, and its value to the empty string. Switch to the attribute name state. */ - $this->token['attr'][] = array( + $this->token['attr'][] = [ 'name' => $char, 'value' => '' - ); + ]; $state = 'attribute name'; } @@ -749,10 +749,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-attribute-name' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -764,10 +764,10 @@ class HTML5_Tokenizer { Parse error. Treat it as per the "anything else" entry below. */ if ($char === '"' || $char === "'" || $char === '<') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'invalid-character-in-attribute-name' - )); + ]); } /* Anything else @@ -827,20 +827,20 @@ class HTML5_Tokenizer { input character (add 0x0020 to the character's code point), and its value to the empty string. Switch to the attribute name state. */ - $this->token['attr'][] = array( + $this->token['attr'][] = [ 'name' => strtolower($char), 'value' => '' - ); + ]; $state = 'attribute name'; } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-end-of-tag-but-got-eof' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -852,20 +852,20 @@ class HTML5_Tokenizer { Parse error. Treat it as per the "anything else" entry below. */ if ($char === '"' || $char === "'" || $char === "<") { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'invalid-character-after-attribute-name' - )); + ]); } /* Anything else Start a new attribute in the current tag token. Set that attribute's name to the current input character, and its value to the empty string. Switch to the attribute name state. */ - $this->token['attr'][] = array( + $this->token['attr'][] = [ 'name' => $char, 'value' => '' - ); + ]; $state = 'attribute name'; } @@ -904,20 +904,20 @@ class HTML5_Tokenizer { } elseif ($char === '>') { /* U+003E GREATER-THAN SIGN (>) Parse error. Emit the current tag token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-attribute-value-but-got-right-bracket' - )); + ]); $this->emitToken($this->token); $state = 'data'; } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-attribute-value-but-got-eof' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -926,10 +926,10 @@ class HTML5_Tokenizer { * U+003C LESS-THAN SIGN (<) Parse error. Treat it as per the "anything else" entry below. */ if ($char === '=' || $char === '<') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'equals-in-unquoted-attribute-value' - )); + ]); } /* Anything else @@ -961,10 +961,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-attribute-value-double-quote' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -999,10 +999,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-attribute-value-single-quote' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -1048,10 +1048,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-attribute-value-no-quotes' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -1063,10 +1063,10 @@ class HTML5_Tokenizer { Parse error. Treat it as per the "anything else" entry below. */ if ($char === '"' || $char === "'" || $char === '=' || $char == '<') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-character-in-unquoted-attribute-value' - )); + ]); } /* Anything else @@ -1107,10 +1107,10 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-EOF-after-attribute-value' - )); + ]); $this->stream->unget(); $state = 'data'; @@ -1118,10 +1118,10 @@ class HTML5_Tokenizer { /* Anything else Parse error. Reconsume the character in the before attribute name state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-character-after-attribute-value' - )); + ]); $this->stream->unget(); $state = 'before attribute name'; } @@ -1143,20 +1143,20 @@ class HTML5_Tokenizer { } elseif ($char === false) { /* EOF Parse error. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-eof-after-self-closing' - )); + ]); $this->stream->unget(); $state = 'data'; } else { /* Anything else Parse error. Reconsume the character in the before attribute name state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-character-after-self-closing' - )); + ]); $this->stream->unget(); $state = 'before attribute name'; } @@ -1196,10 +1196,10 @@ class HTML5_Tokenizer { data is the empty string, and switch to the comment state. */ if ($hyphens === '--') { $state = 'comment start'; - $this->token = array( + $this->token = [ 'data' => '', 'type' => self::COMMENT - ); + ]; /* Otherwise if the next seven characters are a case-insensitive match for the word "DOCTYPE", then consume those characters and switch to the @@ -1221,14 +1221,14 @@ class HTML5_Tokenizer { The next character that is consumed, if any, is the first character that will be in the comment. */ } else { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-dashes-or-doctype' - )); - $this->token = array( + ]); + $this->token = [ 'data' => (string) $alpha, 'type' => self::COMMENT - ); + ]; $state = 'bogus comment'; } break; @@ -1245,20 +1245,20 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Emit the comment token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'incorrect-comment' - )); + ]); $this->emitToken($this->token); $state = 'data'; } elseif ($char === false) { /* EOF Parse error. Emit the comment token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1282,19 +1282,19 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Emit the comment token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'incorrect-comment' - )); + ]); $this->emitToken($this->token); $state = 'data'; } elseif ($char === false) { /* Parse error. Emit the comment token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1317,10 +1317,10 @@ class HTML5_Tokenizer { /* EOF Parse error. Emit the comment token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1348,10 +1348,10 @@ class HTML5_Tokenizer { /* EOF Parse error. Emit the comment token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment-end-dash' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1380,35 +1380,35 @@ class HTML5_Tokenizer { Parse error. Append a U+002D HYPHEN-MINUS (-) character to the comment token's data. Stay in the comment end state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-dash-after-double-dash-in-comment' - )); + ]); $this->token['data'] .= '-'; } elseif ($char === "\t" || $char === "\n" || $char === "\x0a" || $char === ' ') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-space-after-double-dash-in-comment' - )); + ]); $this->token['data'] .= '--' . $char; $state = 'comment end space'; } elseif ($char === '!') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-bang-after-double-dash-in-comment' - )); + ]); $state = 'comment end bang'; } elseif ($char === false) { /* EOF Parse error. Emit the comment token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment-double-dash' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1418,10 +1418,10 @@ class HTML5_Tokenizer { Parse error. Append two U+002D HYPHEN-MINUS (-) characters and the input character to the comment token's data. Switch to the comment state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-comment' - )); + ]); $this->token['data'] .= '--'.$char; $state = 'comment'; } @@ -1436,10 +1436,10 @@ class HTML5_Tokenizer { $this->token['data'] .= '--!'; $state = 'comment end dash'; } elseif ($char === false) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-comment-end-bang' - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1459,10 +1459,10 @@ class HTML5_Tokenizer { } elseif ($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') { $this->token['data'] .= $char; } elseif ($char === false) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-eof-in-comment-end-space', - )); + ]); $this->emitToken($this->token); $this->stream->unget(); $state = 'data'; @@ -1489,16 +1489,16 @@ class HTML5_Tokenizer { Parse error. Create a new DOCTYPE token. Set its force-quirks flag to on. Emit the token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'need-space-after-doctype-but-got-eof' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'name' => '', 'type' => self::DOCTYPE, 'force-quirks' => true, 'error' => true - )); + ]); $this->stream->unget(); $state = 'data'; @@ -1506,10 +1506,10 @@ class HTML5_Tokenizer { /* Anything else Parse error. Reconsume the current character in the before DOCTYPE name state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'need-space-after-doctype' - )); + ]); $this->stream->unget(); $state = 'before DOCTYPE name'; } @@ -1531,16 +1531,16 @@ class HTML5_Tokenizer { Parse error. Create a new DOCTYPE token. Set its force-quirks flag to on. Emit the token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-doctype-name-but-got-right-bracket' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'name' => '', 'type' => self::DOCTYPE, 'force-quirks' => true, 'error' => true - )); + ]); $state = 'data'; @@ -1550,11 +1550,11 @@ class HTML5_Tokenizer { lowercase version of the input character (add 0x0020 to the character's code point). Switch to the DOCTYPE name state. */ - $this->token = array( + $this->token = [ 'name' => strtolower($char), 'type' => self::DOCTYPE, 'error' => true - ); + ]; $state = 'DOCTYPE name'; @@ -1563,16 +1563,16 @@ class HTML5_Tokenizer { Parse error. Create a new DOCTYPE token. Set its force-quirks flag to on. Emit the token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-doctype-name-but-got-eof' - )); - $this->emitToken(array( + ]); + $this->emitToken([ 'name' => '', 'type' => self::DOCTYPE, 'force-quirks' => true, 'error' => true - )); + ]); $this->stream->unget(); $state = 'data'; @@ -1581,11 +1581,11 @@ class HTML5_Tokenizer { /* Anything else Create a new DOCTYPE token. Set the token's name to the current input character. Switch to the DOCTYPE name state. */ - $this->token = array( + $this->token = [ 'name' => $char, 'type' => self::DOCTYPE, 'error' => true - ); + ]; $state = 'DOCTYPE name'; } @@ -1621,10 +1621,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype-name' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1667,10 +1667,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1698,10 +1698,10 @@ class HTML5_Tokenizer { /* Otherwise, this is the parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the bogus DOCTYPE state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-space-or-right-bracket-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->token['error'] = true; $state = 'bogus DOCTYPE'; @@ -1736,10 +1736,10 @@ class HTML5_Tokenizer { } elseif ($char === '>') { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-end-of-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -1747,10 +1747,10 @@ class HTML5_Tokenizer { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1758,10 +1758,10 @@ class HTML5_Tokenizer { } else { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the bogus DOCTYPE state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $state = 'bogus DOCTYPE'; } @@ -1779,10 +1779,10 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-end-of-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -1791,10 +1791,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1820,10 +1820,10 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-end-of-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -1832,10 +1832,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1882,10 +1882,10 @@ class HTML5_Tokenizer { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1894,10 +1894,10 @@ class HTML5_Tokenizer { /* Anything else Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the bogus DOCTYPE state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $state = 'bogus DOCTYPE'; } @@ -1930,10 +1930,10 @@ class HTML5_Tokenizer { } elseif ($char === '>') { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -1941,10 +1941,10 @@ class HTML5_Tokenizer { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -1952,10 +1952,10 @@ class HTML5_Tokenizer { } else { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Switch to the bogus DOCTYPE state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $state = 'bogus DOCTYPE'; } @@ -1973,10 +1973,10 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-end-of-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -1985,10 +1985,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -2014,10 +2014,10 @@ class HTML5_Tokenizer { /* U+003E GREATER-THAN SIGN (>) Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Switch to the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-end-of-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $state = 'data'; @@ -2026,10 +2026,10 @@ class HTML5_Tokenizer { Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -2062,10 +2062,10 @@ class HTML5_Tokenizer { /* Parse error. Set the DOCTYPE token's force-quirks flag to on. Emit that DOCTYPE token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'eof-in-doctype' - )); + ]); $this->token['force-quirks'] = true; $this->emitToken($this->token); $this->stream->unget(); @@ -2075,10 +2075,10 @@ class HTML5_Tokenizer { Parse error. Switch to the bogus DOCTYPE state. (This does not set the DOCTYPE token's force-quirks flag to on.) */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'unexpected-char-in-doctype' - )); + ]); $state = 'bogus DOCTYPE'; } break; @@ -2224,20 +2224,20 @@ class HTML5_Tokenizer { any characters (and unconsume the U+0023 NUMBER SIGN character and, if appropriate, the X character). This is a parse error; nothing is returned. */ - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-numeric-entity' - )); + ]); return '&' . $chars; } else { /* Otherwise, if the next character is a U+003B SEMICOLON, consume that too. If it isn't, there is a parse error. */ if ($this->stream->char() !== ';') { $this->stream->unget(); - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'numeric-entity-without-semicolon' - )); + ]); } /* If one or more characters match the range, then take @@ -2252,20 +2252,20 @@ class HTML5_Tokenizer { second column of that row. */ $new_codepoint = HTML5_Data::getRealCodepoint($codepoint); if ($new_codepoint) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'illegal-windows-1252-entity' - )); + ]); return HTML5_Data::utf8chr($new_codepoint); } else { /* Otherwise, if the number is greater than 0x10FFFF, then * this is a parse error. Return a U+FFFD REPLACEMENT * CHARACTER. */ if ($codepoint > 0x10FFFF) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'overlong-character-entity' // XXX probably not correct - )); + ]); return "\xEF\xBF\xBD"; } /* Otherwise, return a character token for the Unicode @@ -2290,10 +2290,10 @@ class HTML5_Tokenizer { ($codepoint & 0xFFFE) === 0xFFFE || $codepoint == 0x10FFFF || $codepoint == 0x10FFFE ) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'illegal-codepoint-for-numeric-entity' - )); + ]); } return HTML5_Data::utf8chr($codepoint); } @@ -2336,10 +2336,10 @@ class HTML5_Tokenizer { /* If no match can be made, then this is a parse error. No characters are consumed, and nothing is returned. */ if (!$codepoint) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'expected-named-entity' - )); + ]); return '&' . $chars; } @@ -2347,10 +2347,10 @@ class HTML5_Tokenizer { (;), there is a parse error. */ $semicolon = true; if (substr($id, -1) !== ';') { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'named-entity-without-semicolon' - )); + ]); $semicolon = false; } @@ -2426,27 +2426,27 @@ class HTML5_Tokenizer { } if ($token['type'] === self::ENDTAG && !empty($token['attr'])) { for ($i = 0; $i < count($token['attr']); $i++) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'attributes-in-end-tag' - )); + ]); } } if ($token['type'] === self::ENDTAG && !empty($token['self-closing'])) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'self-closing-flag-on-end-tag', - )); + ]); } if ($token['type'] === self::STARTTAG) { // This could be changed to actually pass the tree-builder a hash - $hash = array(); + $hash = []; foreach ($token['attr'] as $keypair) { if (isset($hash[$keypair['name']])) { - $this->emitToken(array( + $this->emitToken([ 'type' => self::PARSEERROR, 'data' => 'duplicate-attribute', - )); + ]); } else { $hash[$keypair['name']] = $keypair['value']; } diff --git a/civicrm/vendor/dompdf/dompdf/lib/html5lib/TreeBuilder.php b/civicrm/vendor/dompdf/dompdf/lib/html5lib/TreeBuilder.php index dda0fdefbb..546ec68021 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/html5lib/TreeBuilder.php +++ b/civicrm/vendor/dompdf/dompdf/lib/html5lib/TreeBuilder.php @@ -35,7 +35,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // this is not (yet) in helper functions. class HTML5_TreeBuilder { - public $stack = array(); + public $stack = []; public $content_model; private $mode; @@ -45,7 +45,7 @@ class HTML5_TreeBuilder { // Whether or not normal insertion of nodes should actually foster // parent (used in one case in spec) private $foster_parent = false; - private $a_formatting = array(); + private $a_formatting = []; private $head_pointer = null; private $form_pointer = null; @@ -62,16 +62,16 @@ class HTML5_TreeBuilder { private $fragment = false; private $root; - private $scoping = array('applet','button','caption','html','marquee','object','table','td','th', 'svg:foreignObject'); - private $formatting = array('a','b','big','code','em','font','i','nobr','s','small','strike','strong','tt','u'); + private $scoping = ['applet','button','caption','html','marquee','object','table','td','th', 'svg:foreignObject']; + private $formatting = ['a','b','big','code','em','font','i','nobr','s','small','strike','strong','tt','u']; // dl and ds are speculative - private $special = array('address','area','article','aside','base','basefont','bgsound', + private $special = ['address','area','article','aside','base','basefont','bgsound', 'blockquote','body','br','center','col','colgroup','command','dc','dd','details','dir','div','dl','ds', 'dt','embed','fieldset','figure','footer','form','frame','frameset','h1','h2','h3','h4','h5', 'h6','head','header','hgroup','hr','iframe','img','input','isindex','li','link', 'listing','menu','meta','nav','noembed','noframes','noscript','ol', 'p','param','plaintext','pre','script','select','spacer','style', - 'tbody','textarea','tfoot','thead','title','tr','ul','wbr'); + 'tbody','textarea','tfoot','thead','title','tr','ul','wbr']; private $pendingTableCharacters; private $pendingTableCharactersDirty; @@ -107,7 +107,7 @@ class HTML5_TreeBuilder { private function strConst($number) { static $lookup; if (!$lookup) { - $lookup = array(); + $lookup = []; $r = new ReflectionClass('HTML5_TreeBuilder'); $consts = $r->getConstants(); foreach ($consts as $const => $num) { @@ -253,7 +253,7 @@ class HTML5_TreeBuilder { } $public = is_null($token['public']) ? false : strtolower($token['public']); $system = is_null($token['system']) ? false : strtolower($token['system']); - $publicStartsWithForQuirks = array( + $publicStartsWithForQuirks = [ "+//silmaril//dtd html pro v0r11 19970101//", "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", "-//as//dtd html 3.0 aswedit + extensions//", @@ -307,24 +307,24 @@ class HTML5_TreeBuilder { "-//w3o//dtd w3 html 3.0//", "-//webtechs//dtd mozilla html 2.0//", "-//webtechs//dtd mozilla html//", - ); - $publicSetToForQuirks = array( + ]; + $publicSetToForQuirks = [ "-//w3o//dtd w3 html strict 3.0//", "-/w3c/dtd html 4.0 transitional/en", "html", - ); - $publicStartsWithAndSystemForQuirks = array( + ]; + $publicStartsWithAndSystemForQuirks = [ "-//w3c//dtd html 4.01 frameset//", "-//w3c//dtd html 4.01 transitional//", - ); - $publicStartsWithForLimitedQuirks = array( + ]; + $publicStartsWithForLimitedQuirks = [ "-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//", - ); - $publicStartsWithAndSystemForLimitedQuirks = array( + ]; + $publicStartsWithAndSystemForLimitedQuirks = [ "-//w3c//dtd html 4.01 frameset//", "-//w3c//dtd html 4.01 transitional//", - ); + ]; // first, do easy checks if ( !empty($token['force-quirks']) || @@ -489,11 +489,11 @@ class HTML5_TreeBuilder { )) { /* Act as if a start tag token with the tag name "head" and no * attributes had been seen, then reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'head', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->emitToken($token); /* Any other end tag */ @@ -507,11 +507,11 @@ class HTML5_TreeBuilder { * Note: This will result in an empty head element being * generated, with the current token being reprocessed in the * "after head" insertion mode. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'head', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->emitToken($token); } break; @@ -632,10 +632,10 @@ class HTML5_TreeBuilder { } else { /* Act as if an end tag token with the tag name "head" had been * seen, and reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'head', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); /* Then, reprocess the current token. */ $this->emitToken($token); @@ -669,10 +669,10 @@ class HTML5_TreeBuilder { // parse error } else { // parse error - $this->emitToken(array( + $this->emitToken([ 'type' => HTML5_Tokenizer::ENDTAG, 'name' => 'noscript', - )); + ]); $this->emitToken($token); } break; @@ -720,7 +720,7 @@ class HTML5_TreeBuilder { /* A start tag token whose tag name is one of: "base", "link", "meta", "script", "style", "title" */ } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('base', 'link', 'meta', 'noframes', 'script', 'style', 'title'))) { + ['base', 'link', 'meta', 'noframes', 'script', 'style', 'title'])) { // parse error /* Push the node pointed to by the head element pointer onto the * stack of open elements. */ @@ -738,11 +738,11 @@ class HTML5_TreeBuilder { /* Anything else */ } else { - $this->emitToken(array( + $this->emitToken([ 'name' => 'body', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->flag_frameset_ok = true; $this->emitToken($token); } @@ -871,10 +871,10 @@ class HTML5_TreeBuilder { then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -887,10 +887,10 @@ class HTML5_TreeBuilder { /* If the stack of open elements has a p element in scope, then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* If the current node is an element whose tag name is one @@ -898,7 +898,7 @@ class HTML5_TreeBuilder { * parse error; pop the current node off the stack of open * elements. */ $peek = array_pop($this->stack); - if (in_array($peek->tagName, array("h1", "h2", "h3", "h4", "h5", "h6"))) { + if (in_array($peek->tagName, ["h1", "h2", "h3", "h4", "h5", "h6"])) { // parse error } else { $this->stack[] = $peek; @@ -912,10 +912,10 @@ class HTML5_TreeBuilder { /* If the stack of open elements has a p element in scope, then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } $this->insertElement($token); /* If the next token is a U+000A LINE FEED (LF) character @@ -940,10 +940,10 @@ class HTML5_TreeBuilder { scope, then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token, and set the @@ -976,10 +976,10 @@ class HTML5_TreeBuilder { * jump to the last step. */ if (($token['name'] === 'li' && $node->tagName === 'li') || ($token['name'] !== 'li' && ($node->tagName == 'dc' || $node->tagName === 'dd' || $node->tagName == 'ds' || $node->tagName === 'dt'))) { // limited conditional - $this->emitToken(array( + $this->emitToken([ 'type' => HTML5_Tokenizer::ENDTAG, 'name' => $node->tagName, - )); + ]); break; } @@ -1002,10 +1002,10 @@ class HTML5_TreeBuilder { then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Finally, insert an HTML element with the same tag @@ -1019,10 +1019,10 @@ class HTML5_TreeBuilder { then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -1052,10 +1052,10 @@ class HTML5_TreeBuilder { } elseif ($this->a_formatting[$n]->tagName === 'a') { $a = $this->a_formatting[$n]; - $this->emitToken(array( + $this->emitToken([ 'name' => 'a', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (in_array($a, $this->a_formatting)) { $a_i = array_search($a, $this->a_formatting, true); if ($a_i !== false) { @@ -1106,10 +1106,10 @@ class HTML5_TreeBuilder { * with the tag name "nobr" had been seen, then once again * reconstruct the active formatting elements, if any. */ if ($this->elementInScope('nobr')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'nobr', 'type' => HTML5_Tokenizer::ENDTAG, - )); + ]); $this->reconstructActiveFormattingElements(); } @@ -1130,10 +1130,10 @@ class HTML5_TreeBuilder { name "button" had been seen, then reprocess the token. (We don't do that. Unnecessary.) (I hope you're right! -- ezyang) */ if ($this->elementInScope('button')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'button', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Reconstruct the active formatting elements, if any. */ @@ -1173,10 +1173,10 @@ class HTML5_TreeBuilder { * seen. */ if ($this->quirks_mode !== self::QUIRKS_MODE && $this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -1222,10 +1222,10 @@ class HTML5_TreeBuilder { /* If the stack of open elements has a p element in scope, then act as if an end tag with the tag name p had been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -1260,32 +1260,32 @@ class HTML5_TreeBuilder { * the action attribute on the resulting form * element to the value of the "action" attribute of * the token. */ - $attr = array(); + $attr = []; $action = $this->getAttr($token, 'action'); if ($action !== false) { - $attr[] = array('name' => 'action', 'value' => $action); + $attr[] = ['name' => 'action', 'value' => $action]; } - $this->emitToken(array( + $this->emitToken([ 'name' => 'form', 'type' => HTML5_Tokenizer::STARTTAG, 'attr' => $attr - )); + ]); /* Act as if a start tag token with the tag name "hr" had been seen. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'hr', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); /* Act as if a start tag token with the tag name "label" had been seen. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'label', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); /* Act as if a stream of character tokens had been seen. */ $prompt = $this->getAttr($token, 'prompt'); @@ -1293,16 +1293,16 @@ class HTML5_TreeBuilder { $prompt = 'This is a searchable index. '. 'Insert your search keywords here: '; } - $this->emitToken(array( + $this->emitToken([ 'data' => $prompt, 'type' => HTML5_Tokenizer::CHARACTER, - )); + ]); /* Act as if a start tag token with the tag name "input" had been seen, with all the attributes from the "isindex" token, except with the "name" attribute set to the value "isindex" (ignoring any explicit "name" attribute). */ - $attr = array(); + $attr = []; foreach ($token['attr'] as $keypair) { if ($keypair['name'] === 'name' || $keypair['name'] === 'action' || $keypair['name'] === 'prompt') { @@ -1310,34 +1310,34 @@ class HTML5_TreeBuilder { } $attr[] = $keypair; } - $attr[] = array('name' => 'name', 'value' => 'isindex'); + $attr[] = ['name' => 'name', 'value' => 'isindex']; - $this->emitToken(array( + $this->emitToken([ 'name' => 'input', 'type' => HTML5_Tokenizer::STARTTAG, 'attr' => $attr - )); + ]); /* Act as if an end tag token with the tag name "label" had been seen. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'label', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); /* Act as if a start tag token with the tag name "hr" had been seen. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'hr', 'type' => HTML5_Tokenizer::STARTTAG - )); + ]); /* Act as if an end tag token with the tag name "form" had been seen. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'form', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } else { $this->ignored = true; } @@ -1369,10 +1369,10 @@ class HTML5_TreeBuilder { scope, then act as if an end tag with the tag name "p" has been seen. */ if ($this->elementInScope('p')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Reconstruct the active formatting elements, if any. */ @@ -1421,10 +1421,10 @@ class HTML5_TreeBuilder { case 'option': case 'optgroup': if ($this->elementInScope('option')) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'option', 'type' => HTML5_Tokenizer::ENDTAG, - )); + ]); } $this->reconstructActiveFormattingElements(); $this->insertElement($token); @@ -1530,10 +1530,10 @@ class HTML5_TreeBuilder { /* Act as if an end tag with tag name "body" had been seen, then, if that token wasn't ignored, reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'body', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (!$this->ignored) { $this->emitToken($token); @@ -1599,7 +1599,7 @@ class HTML5_TreeBuilder { if ($this->elementInScope('p')) { /* Generate implied end tags, except for elements with * the same tag name as the token. */ - $this->generateImpliedEndTags(array('p')); + $this->generateImpliedEndTags(['p']); /* If the current node is not a p element, then this is a parse error. */ @@ -1614,10 +1614,10 @@ class HTML5_TreeBuilder { } else { // parse error - $this->emitToken(array( + $this->emitToken([ 'name' => 'p', 'type' => HTML5_Tokenizer::STARTTAG, - )); + ]); $this->emitToken($token); } break; @@ -1630,7 +1630,7 @@ class HTML5_TreeBuilder { if ($this->elementInScope($token['name'], self::SCOPE_LISTITEM)) { /* Generate implied end tags, except for elements with the * same tag name as the token. */ - $this->generateImpliedEndTags(array($token['name'])); + $this->generateImpliedEndTags([$token['name']]); /* If the current node is not an element with the same tag * name as that of the token, then this is a parse error. */ // XERROR: parse error @@ -1649,7 +1649,7 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is "dc", "dd", "ds", "dt" */ case 'dc': case 'dd': case 'ds': case 'dt': if ($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(array($token['name'])); + $this->generateImpliedEndTags([$token['name']]); /* If the current node is not an element with the same tag name as the token, then this is a parse error. */ @@ -1670,7 +1670,7 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4", "h5", "h6" */ case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6': - $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'); + $elements = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']; /* If the stack of open elements has in scope an element whose tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then @@ -1871,7 +1871,7 @@ class HTML5_TreeBuilder { if ($last_node->parentNode) { // common step $last_node->parentNode->removeChild($last_node); } - if (in_array($common_ancestor->tagName, array('table', 'tbody', 'tfoot', 'thead', 'tr'))) { + if (in_array($common_ancestor->tagName, ['table', 'tbody', 'tfoot', 'thead', 'tr'])) { $this->fosterParent($last_node); /* Otherwise, append whatever last node ended up being * in the previous step to the common ancestor node, @@ -1910,7 +1910,7 @@ class HTML5_TreeBuilder { $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1); $af_part2 = array_slice($this->a_formatting, $bookmark); - $this->a_formatting = array_merge($af_part1, array($clone), $af_part2); + $this->a_formatting = array_merge($af_part1, [$clone], $af_part2); /* 12. Remove the formatting element from the stack of open elements, and insert the new element into the stack @@ -1922,7 +1922,7 @@ class HTML5_TreeBuilder { $fb_s_pos = array_search($furthest_block, $this->stack, true); $s_part1 = array_slice($this->stack, 0, $fb_s_pos + 1); $s_part2 = array_slice($this->stack, $fb_s_pos + 1); - $this->stack = array_merge($s_part1, array($clone), $s_part2); + $this->stack = array_merge($s_part1, [$clone], $s_part2); /* 13. Jump back to step 1 in this series of steps. */ unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block); @@ -1963,10 +1963,10 @@ class HTML5_TreeBuilder { case 'br': // Parse error - $this->emitToken(array( + $this->emitToken([ 'name' => 'br', 'type' => HTML5_Tokenizer::STARTTAG, - )); + ]); break; /* An end tag token not covered by the previous entries */ @@ -2040,7 +2040,7 @@ class HTML5_TreeBuilder { break; case self::IN_TABLE: - $clear = array('html', 'table'); + $clear = ['html', 'table']; /* A character token */ if ($token['type'] === HTML5_Tokenizer::CHARACTER || @@ -2096,17 +2096,17 @@ class HTML5_TreeBuilder { /* A start tag whose tag name is "col" */ } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'col') { - $this->emitToken(array( + $this->emitToken([ 'name' => 'colgroup', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->emitToken($token); /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */ } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('tbody', 'tfoot', 'thead'))) { + ['tbody', 'tfoot', 'thead'])) { /* Clear the stack back to a table context. */ $this->clearStackToTableContext($clear); @@ -2117,14 +2117,14 @@ class HTML5_TreeBuilder { /* A start tag whose tag name is one of: "td", "th", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && - in_array($token['name'], array('td', 'th', 'tr'))) { + in_array($token['name'], ['td', 'th', 'tr'])) { /* Act as if a start tag token with the tag name "tbody" had been seen, then reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'tbody', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->emitToken($token); @@ -2134,10 +2134,10 @@ class HTML5_TreeBuilder { /* Parse error. Act as if an end tag token with the tag name "table" had been seen, then, if that token wasn't ignored, reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'table', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (!$this->ignored) { $this->emitToken($token); @@ -2163,8 +2163,8 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "body", "caption", "col", "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'tbody', 'td', - 'tfoot', 'th', 'thead', 'tr'))) { + ['body', 'caption', 'col', 'colgroup', 'html', 'tbody', 'td', + 'tfoot', 'th', 'thead', 'tr'])) { // Parse error. Ignore the token. } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && @@ -2229,10 +2229,10 @@ class HTML5_TreeBuilder { // XERROR $old = $this->foster_parent; $this->foster_parent = true; - $text_token = array( + $text_token = [ 'type' => HTML5_Tokenizer::CHARACTER, 'data' => $this->pendingTableCharacters, - ); + ]; $this->processWithRulesFor($text_token, self::IN_BODY); $this->foster_parent = $old; @@ -2290,16 +2290,16 @@ class HTML5_TreeBuilder { "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag name is "table" */ } elseif (($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) || ($token['type'] === HTML5_Tokenizer::ENDTAG && + ['caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', + 'thead', 'tr'])) || ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'table')) { /* Parse error. Act as if an end tag with the tag name "caption" had been seen, then, if that token wasn't ignored, reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'caption', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (!$this->ignored) { $this->emitToken($token); @@ -2308,8 +2308,8 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "body", "col", "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('body', 'col', 'colgroup', 'html', 'tbody', 'tfoot', 'th', - 'thead', 'tr'))) { + ['body', 'col', 'colgroup', 'html', 'tbody', 'tfoot', 'th', + 'thead', 'tr'])) { // Parse error. Ignore the token. $this->ignored = true; } else { @@ -2374,10 +2374,10 @@ class HTML5_TreeBuilder { } else { /* Act as if an end tag with the tag name "colgroup" had been seen, and then, if that token wasn't ignored, reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'colgroup', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (!$this->ignored) { $this->emitToken($token); @@ -2386,7 +2386,7 @@ class HTML5_TreeBuilder { break; case self::IN_TABLE_BODY: - $clear = array('tbody', 'tfoot', 'thead', 'html'); + $clear = ['tbody', 'tfoot', 'thead', 'html']; /* A start tag whose tag name is "tr" */ if ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'tr') { @@ -2403,17 +2403,17 @@ class HTML5_TreeBuilder { ($token['name'] === 'th' || $token['name'] === 'td')) { /* Parse error. Act as if a start tag with the tag name "tr" had been seen, then reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'tr', 'type' => HTML5_Tokenizer::STARTTAG, - 'attr' => array() - )); + 'attr' => [] + ]); $this->emitToken($token); /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead'))) { + in_array($token['name'], ['tbody', 'tfoot', 'thead'])) { /* If the stack of open elements does not have an element in table scope with the same tag name as the token, this is a parse error. Ignore the token. */ @@ -2435,12 +2435,12 @@ class HTML5_TreeBuilder { /* A start tag whose tag name is one of: "caption", "col", "colgroup", "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */ } elseif (($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead'))) || + ['caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead'])) || ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'table')) { /* If the stack of open elements does not have a tbody, thead, or tfoot element in table scope, this is a parse error. Ignore the token. (fragment case) */ - if (!$this->elementInScope(array('tbody', 'thead', 'tfoot'), self::SCOPE_TABLE)) { + if (!$this->elementInScope(['tbody', 'thead', 'tfoot'], self::SCOPE_TABLE)) { // parse error $this->ignored = true; @@ -2452,10 +2452,10 @@ class HTML5_TreeBuilder { /* Act as if an end tag with the same tag name as the current node ("tbody", "tfoot", or "thead") had been seen, then reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => end($this->stack)->tagName, 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); $this->emitToken($token); } @@ -2463,7 +2463,7 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "body", "caption", "col", "colgroup", "html", "td", "th", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) { + ['body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'])) { /* Parse error. Ignore the token. */ $this->ignored = true; @@ -2475,7 +2475,7 @@ class HTML5_TreeBuilder { break; case self::IN_ROW: - $clear = array('tr', 'html'); + $clear = ['tr', 'html']; /* A start tag whose tag name is one of: "th", "td" */ if ($token['type'] === HTML5_Tokenizer::STARTTAG && @@ -2514,21 +2514,21 @@ class HTML5_TreeBuilder { /* A start tag whose tag name is one of: "caption", "col", "colgroup", "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */ } elseif (($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr'))) || + ['caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr'])) || ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'table')) { /* Act as if an end tag with the tag name "tr" had been seen, then, if that token wasn't ignored, reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'tr', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); if (!$this->ignored) { $this->emitToken($token); } /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead'))) { + in_array($token['name'], ['tbody', 'tfoot', 'thead'])) { /* If the stack of open elements does not have an element in table scope with the same tag name as the token, this is a parse error. Ignore the token. */ @@ -2539,10 +2539,10 @@ class HTML5_TreeBuilder { } else { /* Otherwise, act as if an end tag with the tag name "tr" had been seen, then reprocess the current token. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'tr', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); $this->emitToken($token); } @@ -2550,7 +2550,7 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "body", "caption", "col", "colgroup", "html", "td", "th" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th'))) { + ['body', 'caption', 'col', 'colgroup', 'html', 'td', 'th'])) { /* Parse error. Ignore the token. */ $this->ignored = true; @@ -2575,7 +2575,7 @@ class HTML5_TreeBuilder { } else { /* Generate implied end tags, except for elements with the same tag name as the token. */ - $this->generateImpliedEndTags(array($token['name'])); + $this->generateImpliedEndTags([$token['name']]); /* Now, if the current node is not an element with the same tag name as the token, then this is a parse error. */ @@ -2599,12 +2599,12 @@ class HTML5_TreeBuilder { /* A start tag whose tag name is one of: "caption", "col", "colgroup", "tbody", "td", "tfoot", "th", "thead", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) { + ['caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', + 'thead', 'tr'])) { /* If the stack of open elements does not have a td or th element in table scope, then this is a parse error; ignore the token. (fragment case) */ - if (!$this->elementInScope(array('td', 'th'), self::SCOPE_TABLE)) { + if (!$this->elementInScope(['td', 'th'], self::SCOPE_TABLE)) { // parse error $this->ignored = true; @@ -2618,18 +2618,18 @@ class HTML5_TreeBuilder { /* An end tag whose tag name is one of: "body", "caption", "col", "colgroup", "html" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html'))) { + ['body', 'caption', 'col', 'colgroup', 'html'])) { /* Parse error. Ignore the token. */ $this->ignored = true; /* An end tag whose tag name is one of: "table", "tbody", "tfoot", "thead", "tr" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'], - array('table', 'tbody', 'tfoot', 'thead', 'tr'))) { + ['table', 'tbody', 'tfoot', 'thead', 'tr'])) { /* If the stack of open elements does not have a td or th element in table scope, then this is a parse error; ignore the token. (innerHTML case) */ - if (!$this->elementInScope(array('td', 'th'), self::SCOPE_TABLE)) { + if (!$this->elementInScope(['td', 'th'], self::SCOPE_TABLE)) { // Parse error $this->ignored = true; @@ -2676,10 +2676,10 @@ class HTML5_TreeBuilder { /* If the current node is an option element, act as if an end tag with the tag name "option" had been seen. */ if (end($this->stack)->tagName === 'option') { - $this->emitToken(array( + $this->emitToken([ 'name' => 'option', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -2691,19 +2691,19 @@ class HTML5_TreeBuilder { /* If the current node is an option element, act as if an end tag with the tag name "option" had been seen. */ if (end($this->stack)->tagName === 'option') { - $this->emitToken(array( + $this->emitToken([ 'name' => 'option', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* If the current node is an optgroup element, act as if an end tag with the tag name "optgroup" had been seen. */ if (end($this->stack)->tagName === 'optgroup') { - $this->emitToken(array( + $this->emitToken([ 'name' => 'optgroup', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* Insert an HTML element for the token. */ @@ -2720,10 +2720,10 @@ class HTML5_TreeBuilder { if ($this->stack[$elements_in_stack - 1]->tagName === 'option' && $this->stack[$elements_in_stack - 2]->tagName === 'optgroup') { - $this->emitToken(array( + $this->emitToken([ 'name' => 'option', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } /* If the current node is an optgroup element, then pop that node @@ -2775,18 +2775,18 @@ class HTML5_TreeBuilder { } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'select') { /* Parse error. Act as if the token had been an end tag with the tag name "select" instead. */ - $this->emitToken(array( + $this->emitToken([ 'name' => 'select', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && ($token['name'] === 'input' || $token['name'] === 'keygen' || $token['name'] === 'textarea')) { // parse error - $this->emitToken(array( + $this->emitToken([ 'name' => 'select', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); $this->emitToken($token); } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'script') { @@ -2806,19 +2806,19 @@ class HTML5_TreeBuilder { case self::IN_SELECT_IN_TABLE: if ($token['type'] === HTML5_Tokenizer::STARTTAG && - in_array($token['name'], array('caption', 'table', 'tbody', - 'tfoot', 'thead', 'tr', 'td', 'th'))) { + in_array($token['name'], ['caption', 'table', 'tbody', + 'tfoot', 'thead', 'tr', 'td', 'th'])) { // parse error - $this->emitToken(array( + $this->emitToken([ 'name' => 'select', 'type' => HTML5_Tokenizer::ENDTAG, - )); + ]); $this->emitToken($token); /* An end tag whose tag name is one of: "caption", "table", "tbody", "tfoot", "thead", "tr", "td", "th" */ } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && - in_array($token['name'], array('caption', 'table', 'tbody', 'tfoot', 'thead', 'tr', 'td', 'th'))) { + in_array($token['name'], ['caption', 'table', 'tbody', 'tfoot', 'thead', 'tr', 'td', 'th'])) { /* Parse error. */ // parse error @@ -2827,10 +2827,10 @@ class HTML5_TreeBuilder { with the tag name "select" had been seen, and reprocess the token. Otherwise, ignore the token. */ if ($this->elementInScope($token['name'], self::SCOPE_TABLE)) { - $this->emitToken(array( + $this->emitToken([ 'name' => 'select', 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); $this->emitToken($token); } else { @@ -2862,7 +2862,7 @@ class HTML5_TreeBuilder { $token['name'] !== 'malignmark' && // XDOM end($this->stack)->namespaceURI === self::NS_MATHML && - in_array(end($this->stack)->tagName, array('mi', 'mo', 'mn', 'ms', 'mtext')) + in_array(end($this->stack)->tagName, ['mi', 'mo', 'mn', 'ms', 'mtext']) ) || ( $token['name'] === 'svg' && @@ -2873,7 +2873,7 @@ class HTML5_TreeBuilder { ( // XDOM end($this->stack)->namespaceURI === self::NS_SVG && - in_array(end($this->stack)->tagName, array('foreignObject', 'desc', 'title')) + in_array(end($this->stack)->tagName, ['foreignObject', 'desc', 'title']) ) || ( // XSKETCHY && XDOM @@ -2895,9 +2895,9 @@ class HTML5_TreeBuilder { if ($node->namespaceURI !== self::NS_HTML) { $found = true; break; - } elseif (in_array($node->tagName, array('table', 'html', + } elseif (in_array($node->tagName, ['table', 'html', 'applet', 'caption', 'td', 'th', 'button', 'marquee', - 'object')) || ($node->tagName === 'foreignObject' && + 'object']) || ($node->tagName === 'foreignObject' && $node->namespaceURI === self::NS_SVG)) { break; } @@ -2908,12 +2908,12 @@ class HTML5_TreeBuilder { } } elseif ($token['type'] === HTML5_Tokenizer::EOF || ( $token['type'] === HTML5_Tokenizer::STARTTAG && - (in_array($token['name'], array('b', "big", "blockquote", "body", "br", + (in_array($token['name'], ['b', "big", "blockquote", "body", "br", "center", "code", "dc", "dd", "div", "dl", "ds", "dt", "em", "embed", "h1", "h2", "h3", "h4", "h5", "h6", "head", "hr", "i", "img", "li", "listing", "menu", "meta", "nobr", "ol", "p", "pre", "ruby", "s", "small", "span", "strong", "strike", "sub", "sup", "table", "tt", "u", "ul", - "var")) || ($token['name'] === 'font' && ($this->getAttr($token, 'color') || + "var"]) || ($token['name'] === 'font' && ($this->getAttr($token, 'color') || $this->getAttr($token, 'face') || $this->getAttr($token, 'size')))))) { // XERROR: parse error do { @@ -2924,7 +2924,7 @@ class HTML5_TreeBuilder { $this->mode = $this->secondary_mode; $this->emitToken($token); } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG) { - static $svg_lookup = array( + static $svg_lookup = [ 'altglyph' => 'altGlyph', 'altglyphdef' => 'altGlyphDef', 'altglyphitem' => 'altGlyphItem', @@ -2961,7 +2961,7 @@ class HTML5_TreeBuilder { 'lineargradient' => 'linearGradient', 'radialgradient' => 'radialGradient', 'textpath' => 'textPath', - ); + ]; // XDOM $current = end($this->stack); if ($current->namespaceURI === self::NS_MATHML) { @@ -3251,7 +3251,7 @@ class HTML5_TreeBuilder { !$this->foster_parent || !in_array( end($this->stack)->tagName, - array('table', 'tbody', 'tfoot', 'thead', 'tr') + ['table', 'tbody', 'tfoot', 'thead', 'tr'] ) ) { end($this->stack)->appendChild($node); @@ -3297,14 +3297,14 @@ class HTML5_TreeBuilder { // these are valid for "in scope" and "in list item scope" } elseif ($scope !== self::SCOPE_TABLE && - (in_array($node->tagName, array('applet', 'caption', 'td', - 'th', 'button', 'marquee', 'object')) || + (in_array($node->tagName, ['applet', 'caption', 'td', + 'th', 'button', 'marquee', 'object']) || $node->tagName === 'foreignObject' && $node->namespaceURI === self::NS_SVG)) { return false; // these are valid for "in list item scope" - } elseif ($scope === self::SCOPE_LISTITEM && in_array($node->tagName, array('ol', 'ul'))) { + } elseif ($scope === self::SCOPE_LISTITEM && in_array($node->tagName, ['ol', 'ul'])) { return false; } @@ -3422,14 +3422,14 @@ class HTML5_TreeBuilder { /** * @param array $exclude */ - private function generateImpliedEndTags($exclude = array()) { + private function generateImpliedEndTags($exclude = []) { /* When the steps below require the UA to generate implied end tags, * then, while the current node is a dc element, a dd element, a ds * element, a dt element, an li element, an option element, an optgroup * element, a p element, an rp element, or an rt element, the UA must * pop the current node off the stack of open elements. */ $node = end($this->stack); - $elements = array_diff(array('dc', 'dd', 'ds', 'dt', 'li', 'p', 'td', 'th', 'tr'), $exclude); + $elements = array_diff(['dc', 'dd', 'ds', 'dt', 'li', 'p', 'td', 'th', 'tr'], $exclude); while (in_array(end($this->stack)->tagName, $elements)) { array_pop($this->stack); @@ -3515,7 +3515,7 @@ class HTML5_TreeBuilder { /* 7. If node is a tbody, thead, or tfoot element, then switch the insertion mode to "in table body" and abort these steps. */ - } elseif (in_array($node->tagName, array('tbody', 'thead', 'tfoot'))) { + } elseif (in_array($node->tagName, ['tbody', 'thead', 'tfoot'])) { $this->mode = self::IN_TABLE_BODY; break; @@ -3592,12 +3592,12 @@ class HTML5_TreeBuilder { private function closeCell() { /* If the stack of open elements has a td or th element in table scope, then act as if an end tag token with that tag name had been seen. */ - foreach (array('td', 'th') as $cell) { + foreach (['td', 'th'] as $cell) { if ($this->elementInScope($cell, self::SCOPE_TABLE)) { - $this->emitToken(array( + $this->emitToken([ 'name' => $cell, 'type' => HTML5_Tokenizer::ENDTAG - )); + ]); break; } @@ -3731,7 +3731,7 @@ class HTML5_TreeBuilder { * For debugging, prints the stack */ private function printStack() { - $names = array(); + $names = []; foreach ($this->stack as $i => $element) { $names[] = $element->tagName; } @@ -3745,7 +3745,7 @@ class HTML5_TreeBuilder { if (!$this->a_formatting) { return; } - $names = array(); + $names = []; foreach ($this->a_formatting as $node) { if ($node === self::MARKER) { $names[] = 'MARKER'; @@ -3797,7 +3797,7 @@ class HTML5_TreeBuilder { $this->dom->appendChild($root); /* 4.4 Set up the parser's stack of open elements so that it * contains just the single element root. */ - $this->stack = array($root); + $this->stack = [$root]; /* 4.5 Reset the parser's insertion mode appropriately. */ $this->resetInsertionMode($context); /* 4.6 Set the parser's form element pointer to the nearest node @@ -3832,7 +3832,7 @@ class HTML5_TreeBuilder { * @return mixed */ public function adjustSVGAttributes($token) { - static $lookup = array( + static $lookup = [ 'attributename' => 'attributeName', 'attributetype' => 'attributeType', 'basefrequency' => 'baseFrequency', @@ -3895,7 +3895,7 @@ class HTML5_TreeBuilder { 'xchannelselector' => 'xChannelSelector', 'ychannelselector' => 'yChannelSelector', 'zoomandpan' => 'zoomAndPan', - ); + ]; foreach ($token['attr'] as &$kp) { if (isset($lookup[$kp['name']])) { $kp['name'] = $lookup[$kp['name']]; @@ -3909,20 +3909,20 @@ class HTML5_TreeBuilder { * @return mixed */ public function adjustForeignAttributes($token) { - static $lookup = array( - 'xlink:actuate' => array('xlink', 'actuate', self::NS_XLINK), - 'xlink:arcrole' => array('xlink', 'arcrole', self::NS_XLINK), - 'xlink:href' => array('xlink', 'href', self::NS_XLINK), - 'xlink:role' => array('xlink', 'role', self::NS_XLINK), - 'xlink:show' => array('xlink', 'show', self::NS_XLINK), - 'xlink:title' => array('xlink', 'title', self::NS_XLINK), - 'xlink:type' => array('xlink', 'type', self::NS_XLINK), - 'xml:base' => array('xml', 'base', self::NS_XML), - 'xml:lang' => array('xml', 'lang', self::NS_XML), - 'xml:space' => array('xml', 'space', self::NS_XML), - 'xmlns' => array(null, 'xmlns', self::NS_XMLNS), - 'xmlns:xlink' => array('xmlns', 'xlink', self::NS_XMLNS), - ); + static $lookup = [ + 'xlink:actuate' => ['xlink', 'actuate', self::NS_XLINK], + 'xlink:arcrole' => ['xlink', 'arcrole', self::NS_XLINK], + 'xlink:href' => ['xlink', 'href', self::NS_XLINK], + 'xlink:role' => ['xlink', 'role', self::NS_XLINK], + 'xlink:show' => ['xlink', 'show', self::NS_XLINK], + 'xlink:title' => ['xlink', 'title', self::NS_XLINK], + 'xlink:type' => ['xlink', 'type', self::NS_XLINK], + 'xml:base' => ['xml', 'base', self::NS_XML], + 'xml:lang' => ['xml', 'lang', self::NS_XML], + 'xml:space' => ['xml', 'space', self::NS_XML], + 'xmlns' => [null, 'xmlns', self::NS_XMLNS], + 'xmlns:xlink' => ['xmlns', 'xlink', self::NS_XMLNS], + ]; foreach ($token['attr'] as &$kp) { if (isset($lookup[$kp['name']])) { $kp['name'] = $lookup[$kp['name']]; diff --git a/civicrm/vendor/dompdf/dompdf/lib/res/broken_image.svg b/civicrm/vendor/dompdf/dompdf/lib/res/broken_image.svg index 09b97e6c35..83ba7e74cb 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/res/broken_image.svg +++ b/civicrm/vendor/dompdf/dompdf/lib/res/broken_image.svg @@ -2,7 +2,7 @@ <svg width="64" height="64" xmlns="http://www.w3.org/2000/svg"> <g> <rect stroke="#666666" id="svg_1" height="60.499994" width="60.166667" y="1.666669" x="1.999998" stroke-width="1.5" fill="none"/> - <line stroke-linecap="null" stroke-linejoin="null" id="svg_3" y2="59.333253" x2="59.749916" y1="4.333415" x1="4.250079" stroke-width="1.5" stroke="#999999" fill="none"/> - <line stroke-linecap="null" stroke-linejoin="null" id="svg_4" y2="59.999665" x2="4.062838" y1="3.750342" x1="60.062164" stroke-width="1.5" stroke="#999999" fill="none"/> + <line stroke-linecap="butt" stroke-linejoin="miter" id="svg_3" y2="59.333253" x2="59.749916" y1="4.333415" x1="4.250079" stroke-width="1.5" stroke="#999999" fill="none"/> + <line stroke-linecap="butt" stroke-linejoin="miter" id="svg_4" y2="59.999665" x2="4.062838" y1="3.750342" x1="60.062164" stroke-width="1.5" stroke="#999999" fill="none"/> </g> </svg> \ No newline at end of file diff --git a/civicrm/vendor/dompdf/dompdf/lib/res/html.css b/civicrm/vendor/dompdf/dompdf/lib/res/html.css index 372ff6e3ce..75f811dabe 100644 --- a/civicrm/vendor/dompdf/dompdf/lib/res/html.css +++ b/civicrm/vendor/dompdf/dompdf/lib/res/html.css @@ -48,7 +48,7 @@ summary { body { page-break-before: avoid; - display: block; + display: block !important; counter-increment: page; } @@ -161,7 +161,11 @@ table[border] th { /* make sure backgrounds are inherited in tables -- see bug 4510 */ td, th, tr { - background: inherit; + background-color: inherit; + background-image: inherit; + background-image-resolution: inherit; + background-position: inherit; + background-repeat: inherit; } /* caption inherits from table not table-outer */ @@ -213,6 +217,7 @@ td { th { display: table-cell; vertical-align: inherit; + text-align: center; font-weight: bold; padding: 1px; } diff --git a/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php b/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php index d976627b84..52c5c445d5 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php +++ b/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php @@ -42,135 +42,135 @@ class CPDF implements Canvas * * @var array; */ - static $PAPER_SIZES = array( - "4a0" => array(0, 0, 4767.87, 6740.79), - "2a0" => array(0, 0, 3370.39, 4767.87), - "a0" => array(0, 0, 2383.94, 3370.39), - "a1" => array(0, 0, 1683.78, 2383.94), - "a2" => array(0, 0, 1190.55, 1683.78), - "a3" => array(0, 0, 841.89, 1190.55), - "a4" => array(0, 0, 595.28, 841.89), - "a5" => array(0, 0, 419.53, 595.28), - "a6" => array(0, 0, 297.64, 419.53), - "a7" => array(0, 0, 209.76, 297.64), - "a8" => array(0, 0, 147.40, 209.76), - "a9" => array(0, 0, 104.88, 147.40), - "a10" => array(0, 0, 73.70, 104.88), - "b0" => array(0, 0, 2834.65, 4008.19), - "b1" => array(0, 0, 2004.09, 2834.65), - "b2" => array(0, 0, 1417.32, 2004.09), - "b3" => array(0, 0, 1000.63, 1417.32), - "b4" => array(0, 0, 708.66, 1000.63), - "b5" => array(0, 0, 498.90, 708.66), - "b6" => array(0, 0, 354.33, 498.90), - "b7" => array(0, 0, 249.45, 354.33), - "b8" => array(0, 0, 175.75, 249.45), - "b9" => array(0, 0, 124.72, 175.75), - "b10" => array(0, 0, 87.87, 124.72), - "c0" => array(0, 0, 2599.37, 3676.54), - "c1" => array(0, 0, 1836.85, 2599.37), - "c2" => array(0, 0, 1298.27, 1836.85), - "c3" => array(0, 0, 918.43, 1298.27), - "c4" => array(0, 0, 649.13, 918.43), - "c5" => array(0, 0, 459.21, 649.13), - "c6" => array(0, 0, 323.15, 459.21), - "c7" => array(0, 0, 229.61, 323.15), - "c8" => array(0, 0, 161.57, 229.61), - "c9" => array(0, 0, 113.39, 161.57), - "c10" => array(0, 0, 79.37, 113.39), - "ra0" => array(0, 0, 2437.80, 3458.27), - "ra1" => array(0, 0, 1729.13, 2437.80), - "ra2" => array(0, 0, 1218.90, 1729.13), - "ra3" => array(0, 0, 864.57, 1218.90), - "ra4" => array(0, 0, 609.45, 864.57), - "sra0" => array(0, 0, 2551.18, 3628.35), - "sra1" => array(0, 0, 1814.17, 2551.18), - "sra2" => array(0, 0, 1275.59, 1814.17), - "sra3" => array(0, 0, 907.09, 1275.59), - "sra4" => array(0, 0, 637.80, 907.09), - "letter" => array(0, 0, 612.00, 792.00), - "half-letter" => array(0, 0, 396.00, 612.00), - "legal" => array(0, 0, 612.00, 1008.00), - "ledger" => array(0, 0, 1224.00, 792.00), - "tabloid" => array(0, 0, 792.00, 1224.00), - "executive" => array(0, 0, 521.86, 756.00), - "folio" => array(0, 0, 612.00, 936.00), - "commercial #10 envelope" => array(0, 0, 684, 297), - "catalog #10 1/2 envelope" => array(0, 0, 648, 864), - "8.5x11" => array(0, 0, 612.00, 792.00), - "8.5x14" => array(0, 0, 612.00, 1008.0), - "11x17" => array(0, 0, 792.00, 1224.00), - ); + static $PAPER_SIZES = [ + "4a0" => [0, 0, 4767.87, 6740.79], + "2a0" => [0, 0, 3370.39, 4767.87], + "a0" => [0, 0, 2383.94, 3370.39], + "a1" => [0, 0, 1683.78, 2383.94], + "a2" => [0, 0, 1190.55, 1683.78], + "a3" => [0, 0, 841.89, 1190.55], + "a4" => [0, 0, 595.28, 841.89], + "a5" => [0, 0, 419.53, 595.28], + "a6" => [0, 0, 297.64, 419.53], + "a7" => [0, 0, 209.76, 297.64], + "a8" => [0, 0, 147.40, 209.76], + "a9" => [0, 0, 104.88, 147.40], + "a10" => [0, 0, 73.70, 104.88], + "b0" => [0, 0, 2834.65, 4008.19], + "b1" => [0, 0, 2004.09, 2834.65], + "b2" => [0, 0, 1417.32, 2004.09], + "b3" => [0, 0, 1000.63, 1417.32], + "b4" => [0, 0, 708.66, 1000.63], + "b5" => [0, 0, 498.90, 708.66], + "b6" => [0, 0, 354.33, 498.90], + "b7" => [0, 0, 249.45, 354.33], + "b8" => [0, 0, 175.75, 249.45], + "b9" => [0, 0, 124.72, 175.75], + "b10" => [0, 0, 87.87, 124.72], + "c0" => [0, 0, 2599.37, 3676.54], + "c1" => [0, 0, 1836.85, 2599.37], + "c2" => [0, 0, 1298.27, 1836.85], + "c3" => [0, 0, 918.43, 1298.27], + "c4" => [0, 0, 649.13, 918.43], + "c5" => [0, 0, 459.21, 649.13], + "c6" => [0, 0, 323.15, 459.21], + "c7" => [0, 0, 229.61, 323.15], + "c8" => [0, 0, 161.57, 229.61], + "c9" => [0, 0, 113.39, 161.57], + "c10" => [0, 0, 79.37, 113.39], + "ra0" => [0, 0, 2437.80, 3458.27], + "ra1" => [0, 0, 1729.13, 2437.80], + "ra2" => [0, 0, 1218.90, 1729.13], + "ra3" => [0, 0, 864.57, 1218.90], + "ra4" => [0, 0, 609.45, 864.57], + "sra0" => [0, 0, 2551.18, 3628.35], + "sra1" => [0, 0, 1814.17, 2551.18], + "sra2" => [0, 0, 1275.59, 1814.17], + "sra3" => [0, 0, 907.09, 1275.59], + "sra4" => [0, 0, 637.80, 907.09], + "letter" => [0, 0, 612.00, 792.00], + "half-letter" => [0, 0, 396.00, 612.00], + "legal" => [0, 0, 612.00, 1008.00], + "ledger" => [0, 0, 1224.00, 792.00], + "tabloid" => [0, 0, 792.00, 1224.00], + "executive" => [0, 0, 521.86, 756.00], + "folio" => [0, 0, 612.00, 936.00], + "commercial #10 envelope" => [0, 0, 684, 297], + "catalog #10 1/2 envelope" => [0, 0, 648, 864], + "8.5x11" => [0, 0, 612.00, 792.00], + "8.5x14" => [0, 0, 612.00, 1008.0], + "11x17" => [0, 0, 792.00, 1224.00], + ]; /** * The Dompdf object * * @var Dompdf */ - private $_dompdf; + protected $_dompdf; /** * Instance of Cpdf class * * @var Cpdf */ - private $_pdf; + protected $_pdf; /** * PDF width, in points * * @var float */ - private $_width; + protected $_width; /** * PDF height, in points * * @var float; */ - private $_height; + protected $_height; /** * Current page number * * @var int */ - private $_page_number; + protected $_page_number; /** * Total number of pages * * @var int */ - private $_page_count; + protected $_page_count; /** * Text to display on every page * * @var array */ - private $_page_text; + protected $_page_text; /** * Array of pages for accessing after rendering is initially complete * * @var array */ - private $_pages; + protected $_pages; /** * Array of temporary cached images to be deleted when processing is complete * * @var array */ - private $_image_cache; + protected $_image_cache; /** * Currently-applied opacity level (0 - 1) * * @var float */ - private $_current_opacity = 1; + protected $_current_opacity = 1; /** * Class constructor @@ -190,12 +190,12 @@ class CPDF implements Canvas } if (mb_strtolower($orientation) === "landscape") { - list($size[2], $size[3]) = array($size[3], $size[2]); + [$size[2], $size[3]] = [$size[3], $size[2]]; } $this->_dompdf = $dompdf; - $this->_pdf = new \Cpdf( + $this->_pdf = new \Dompdf\Cpdf( $size, true, $dompdf->getOptions()->getFontCache(), @@ -211,11 +211,11 @@ class CPDF implements Canvas $this->_height = $size[3] - $size[1]; $this->_page_number = $this->_page_count = 1; - $this->_page_text = array(); + $this->_page_text = []; - $this->_pages = array($this->_pdf->getFirstPageId()); + $this->_pages = [$this->_pdf->getFirstPageId()]; - $this->_image_cache = array(); + $this->_image_cache = []; } /** @@ -254,7 +254,7 @@ class CPDF implements Canvas /** * Returns the Cpdf instance * - * @return \Cpdf + * @return \Dompdf\Cpdf */ public function get_cpdf() { @@ -523,10 +523,10 @@ class CPDF implements Canvas $this->_current_opacity = $opacity; } - public function set_default_view($view, $options = array()) + public function set_default_view($view, $options = []) { array_unshift($options, $view); - call_user_func_array(array($this->_pdf, "openHere"), $options); + call_user_func_array([$this->_pdf, "openHere"], $options); } /** @@ -551,7 +551,7 @@ class CPDF implements Canvas * @param float $width * @param array $style */ - public function line($x1, $y1, $x2, $y2, $color, $width, $style = array()) + public function line($x1, $y1, $x2, $y2, $color, $width, $style = []) { $this->_set_stroke_color($color); $this->_set_line_style($width, "butt", "", $style); @@ -574,7 +574,7 @@ class CPDF implements Canvas * @param float $width * @param array $style optional */ - public function page_line($x1, $y1, $x2, $y2, $color, $width, $style = array()) + public function page_line($x1, $y1, $x2, $y2, $color, $width, $style = []) { $_t = 'line'; $this->_page_text[] = compact('_t', 'x1', 'y1', 'x2', 'y2', 'color', 'width', 'style'); @@ -591,7 +591,7 @@ class CPDF implements Canvas * @param float $width * @param array $style */ - public function arc($x, $y, $r1, $r2, $astart, $aend, $color, $width, $style = array()) + public function arc($x, $y, $r1, $r2, $astart, $aend, $color, $width, $style = []) { $this->_set_stroke_color($color); $this->_set_line_style($width, "butt", "", $style); @@ -614,31 +614,34 @@ class CPDF implements Canvas $func_name = "imagecreatefrom$type"; if (!function_exists($func_name)) { - if (!method_exists("Dompdf\Helpers", $func_name)) { + if (!method_exists(Helpers::class, $func_name)) { throw new Exception("Function $func_name() not found. Cannot convert $type image: $image_url. Please install the image PHP extension."); } $func_name = "\\Dompdf\\Helpers::" . $func_name; } - set_error_handler(array("\\Dompdf\\Helpers", "record_warnings")); - $im = call_user_func($func_name, $image_url); + set_error_handler([Helpers::class, 'record_warnings']); - if ($im) { - imageinterlace($im, false); + try { + $im = call_user_func($func_name, $image_url); - $tmp_dir = $this->_dompdf->getOptions()->getTempDir(); - $tmp_name = @tempnam($tmp_dir, "{$type}dompdf_img_"); - @unlink($tmp_name); - $filename = "$tmp_name.png"; - $this->_image_cache[] = $filename; + if ($im) { + imageinterlace($im, false); - imagepng($im, $filename); - imagedestroy($im); - } else { - $filename = Cache::$broken_image; - } + $tmp_dir = $this->_dompdf->getOptions()->getTempDir(); + $tmp_name = @tempnam($tmp_dir, "{$type}dompdf_img_"); + @unlink($tmp_name); + $filename = "$tmp_name.png"; + $this->_image_cache[] = $filename; - restore_error_handler(); + imagepng($im, $filename); + imagedestroy($im); + } else { + $filename = Cache::$broken_image; + } + } finally { + restore_error_handler(); + } return $filename; } @@ -652,7 +655,7 @@ class CPDF implements Canvas * @param float $width * @param array $style */ - public function rectangle($x1, $y1, $w, $h, $color, $width, $style = array()) + public function rectangle($x1, $y1, $w, $h, $color, $width, $style = []) { $this->_set_stroke_color($color); $this->_set_line_style($width, "butt", "", $style); @@ -775,7 +778,7 @@ class CPDF implements Canvas */ public function transform($a, $b, $c, $d, $e, $f) { - $this->_pdf->transform(array($a, $b, $c, $d, $e, $f)); + $this->_pdf->transform([$a, $b, $c, $d, $e, $f]); } /** @@ -785,7 +788,7 @@ class CPDF implements Canvas * @param array $style * @param bool $fill */ - public function polygon($points, $color, $width = null, $style = array(), $fill = false) + public function polygon($points, $color, $width = null, $style = [], $fill = false) { $this->_set_fill_color($color); $this->_set_stroke_color($color); @@ -835,7 +838,7 @@ class CPDF implements Canvas */ public function image($img, $x, $y, $w, $h, $resolution = "normal") { - list($width, $height, $type) = Helpers::dompdf_getimagesize($img, $this->get_dompdf()->getHttpContext()); + [$width, $height, $type] = Helpers::dompdf_getimagesize($img, $this->get_dompdf()->getHttpContext()); $debug_png = $this->_dompdf->getOptions()->getDebugPng(); @@ -886,7 +889,7 @@ class CPDF implements Canvas * @param float $char_space * @param float $angle */ - public function text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_space = 0.0, $char_space = 0.0, $angle = 0.0) + public function text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_space = 0.0, $char_space = 0.0, $angle = 0.0) { $pdf = $this->_pdf; @@ -1044,7 +1047,7 @@ class CPDF implements Canvas * @param float $char_space char spacing adjustment * @param float $angle angle to write the text at, measured CW starting from the x-axis */ - public function page_text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_space = 0.0, $char_space = 0.0, $angle = 0.0) + public function page_text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_space = 0.0, $char_space = 0.0, $angle = 0.0) { $_t = "text"; $this->_page_text[] = compact("_t", "x", "y", "text", "font", "size", "color", "word_space", "char_space", "angle"); @@ -1100,8 +1103,8 @@ class CPDF implements Canvas switch ($_t) { case "text": - $text = str_replace(array("{PAGE_NUM}", "{PAGE_COUNT}"), - array($page_number, $this->_page_count), $text); + $text = str_replace(["{PAGE_NUM}", "{PAGE_COUNT}"], + [$page_number, $this->_page_count], $text); $this->text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle); break; @@ -1109,7 +1112,7 @@ class CPDF implements Canvas if (!$eval) { $eval = new PhpEvaluator($this); } - $eval->evaluate($code, array('PAGE_NUM' => $page_number, 'PAGE_COUNT' => $this->_page_count)); + $eval->evaluate($code, ['PAGE_NUM' => $page_number, 'PAGE_COUNT' => $this->_page_count]); break; case 'line': @@ -1129,7 +1132,7 @@ class CPDF implements Canvas * @param string $filename The filename to present to the client. * @param array $options Associative array: 'compress' => 1 or 0 (default 1); 'Attachment' => 1 or 0 (default 1). */ - public function stream($filename = "document.pdf", $options = array()) + public function stream($filename = "document.pdf", $options = []) { if (headers_sent()) { die("Unable to stream pdf: headers already sent"); @@ -1147,7 +1150,7 @@ class CPDF implements Canvas header("Content-Type: application/pdf"); header("Content-Length: " . mb_strlen($tmp, "8bit")); - $filename = str_replace(array("\n", "'"), "", basename($filename, ".pdf")) . ".pdf"; + $filename = str_replace(["\n", "'"], "", basename($filename, ".pdf")) . ".pdf"; $attachment = $options["Attachment"] ? "attachment" : "inline"; header(Helpers::buildContentDispositionHeader($attachment, $filename)); @@ -1161,7 +1164,7 @@ class CPDF implements Canvas * @param array $options Associative array: 'compress' => 1 or 0 (default 1). * @return string */ - public function output($options = array()) + public function output($options = []) { if (!isset($options["compress"])) $options["compress"] = true; diff --git a/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php b/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php index 92fbdbe115..3a46c85a0b 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php +++ b/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php @@ -26,98 +26,98 @@ class GD implements Canvas /** * @var Dompdf */ - private $_dompdf; + protected $_dompdf; /** * Resource handle for the image * * @var resource */ - private $_img; + protected $_img; /** * Resource handle for the image * * @var resource[] */ - private $_imgs; + protected $_imgs; /** * Apparent canvas width in pixels * * @var int */ - private $_width; + protected $_width; /** * Apparent canvas height in pixels * * @var int */ - private $_height; + protected $_height; /** * Actual image width in pixels * * @var int */ - private $_actual_width; + protected $_actual_width; /** * Actual image height in pixels * * @var int */ - private $_actual_height; + protected $_actual_height; /** * Current page number * * @var int */ - private $_page_number; + protected $_page_number; /** * Total number of pages * * @var int */ - private $_page_count; + protected $_page_count; /** * Image antialias factor * * @var float */ - private $_aa_factor; + protected $_aa_factor; /** * Allocated colors * * @var array */ - private $_colors; + protected $_colors; /** * Background color * * @var int */ - private $_bg_color; + protected $_bg_color; /** * Background color array * * @var int */ - private $_bg_color_array; + protected $_bg_color_array; /** * Actual DPI * * @var int */ - private $dpi; + protected $dpi; /** * Amount to scale font sizes @@ -138,7 +138,7 @@ class GD implements Canvas * @param float $aa_factor Anti-aliasing factor, 1 for no AA * @param array $bg_color Image background color: array(r,g,b,a), 0 <= r,g,b,a <= 1 */ - public function __construct($size = 'letter', $orientation = "portrait", Dompdf $dompdf, $aa_factor = 1.0, $bg_color = array(1, 1, 1, 0)) + public function __construct($size = 'letter', $orientation = "portrait", Dompdf $dompdf, $aa_factor = 1.0, $bg_color = [1, 1, 1, 0]) { if (!is_array($size)) { @@ -152,7 +152,7 @@ class GD implements Canvas } if (strtolower($orientation) === "landscape") { - list($size[2], $size[3]) = array($size[3], $size[2]); + list($size[2], $size[3]) = [$size[3], $size[2]]; } $this->_dompdf = $dompdf; @@ -174,9 +174,12 @@ class GD implements Canvas $this->_actual_width = $this->_upscale($this->_width); $this->_actual_height = $this->_upscale($this->_height); + $this->_page_number = $this->_page_count = 1; + $this->_page_text = []; + if (is_null($bg_color) || !is_array($bg_color)) { // Pure white bg - $bg_color = array(1, 1, 1, 0); + $bg_color = [1, 1, 1, 0]; } $this->_bg_color_array = $bg_color; @@ -278,7 +281,7 @@ class GD implements Canvas * @param array $color The new current color * @return int The allocated color */ - private function _allocate_color($color) + protected function _allocate_color($color) { $a = isset($color["alpha"]) ? $color["alpha"] : 1; @@ -325,7 +328,7 @@ class GD implements Canvas * @param float $length * @return float */ - private function _upscale($length) + protected function _upscale($length) { return ($length * $this->dpi) / 72 * $this->_aa_factor; } @@ -336,7 +339,7 @@ class GD implements Canvas * @param float $length * @return float */ - private function _downscale($length) + protected function _downscale($length) { return ($length / $this->dpi * 72) / $this->_aa_factor; } @@ -370,7 +373,7 @@ class GD implements Canvas // Convert the style array if required if (is_array($style) && count($style) > 0) { - $gd_style = array(); + $gd_style = []; if (count($style) == 1) { for ($i = 0; $i < $style[0] * $this->_aa_factor; $i++) { @@ -421,7 +424,7 @@ class GD implements Canvas * @param float $width * @param array $style */ - public function arc($x1, $y1, $r1, $r2, $astart, $aend, $color, $width, $style = array()) + public function arc($x1, $y1, $r1, $r2, $astart, $aend, $color, $width, $style = []) { // @todo } @@ -455,7 +458,7 @@ class GD implements Canvas // Convert the style array if required if (is_array($style) && count($style) > 0) { - $gd_style = array(); + $gd_style = []; foreach ($style as $length) { for ($i = 0; $i < $length; $i++) { @@ -630,7 +633,7 @@ class GD implements Canvas // Convert the style array if required if (is_array($style) && count($style) > 0 && !$fill) { - $gd_style = array(); + $gd_style = []; foreach ($style as $length) { for ($i = 0; $i < $length; $i++) { @@ -679,7 +682,7 @@ class GD implements Canvas // Convert the style array if required if (is_array($style) && count($style) > 0 && !$fill) { - $gd_style = array(); + $gd_style = []; foreach ($style as $length) { for ($i = 0; $i < $length; $i++) { @@ -768,7 +771,7 @@ class GD implements Canvas * * @return void */ - public function text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_spacing = 0.0, $char_spacing = 0.0, $angle = 0.0) + public function text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_spacing = 0.0, $char_spacing = 0.0, $angle = 0.0) { // Scale by the AA factor and DPI $x = $this->_upscale($x); @@ -784,7 +787,7 @@ class GD implements Canvas // eg: &#160; will render   rather than its character. $text = preg_replace('/&(#(?:x[a-fA-F0-9]+|[0-9]+);)/', '&\1', $text); - $text = mb_encode_numericentity($text, array(0x0080, 0xff, 0, 0xff), 'UTF-8'); + $text = mb_encode_numericentity($text, [0x0080, 0xff, 0, 0xff], 'UTF-8'); $font = $this->get_ttf_file($font); @@ -836,7 +839,7 @@ class GD implements Canvas * @param string $view * @param array $options */ - public function set_default_view($view, $options = array()) + public function set_default_view($view, $options = []) { // N/A } @@ -863,7 +866,7 @@ class GD implements Canvas // eg: &#160; will render   rather than its character. $text = preg_replace('/&(#(?:x[a-fA-F0-9]+|[0-9]+);)/', '&\1', $text); - $text = mb_encode_numericentity($text, array(0x0080, 0xffff, 0, 0xffff), 'UTF-8'); + $text = mb_encode_numericentity($text, [0x0080, 0xffff, 0, 0xffff], 'UTF-8'); // FIXME: word spacing list($x1, , $x2) = imagettfbbox($size, 0, $font, $text); @@ -917,7 +920,7 @@ class GD implements Canvas return $this->_downscale($height); } - private function get_font_height_actual($font, $size) + protected function get_font_height_actual($font, $size) { $font = $this->get_ttf_file($font); $ratio = $this->_dompdf->getOptions()->getFontHeightRatio(); @@ -990,7 +993,7 @@ class GD implements Canvas * @param array $options Associative array: 'type' => jpeg|jpg|png; 'quality' => 0 - 100 (JPEG only); * 'page' => Number of the page to output (defaults to the first); 'Attachment': 1 or 0 (default 1). */ - public function stream($filename, $options = array()) + public function stream($filename, $options = []) { if (headers_sent()) { die("Unable to stream image: headers already sent"); @@ -1016,7 +1019,7 @@ class GD implements Canvas header("Cache-Control: private"); header("Content-Type: $contentType"); - $filename = str_replace(array("\n", "'"), "", basename($filename, ".$type")) . $extension; + $filename = str_replace(["\n", "'"], "", basename($filename, ".$type")) . $extension; $attachment = $options["Attachment"] ? "attachment" : "inline"; header(Helpers::buildContentDispositionHeader($attachment, $filename)); @@ -1031,7 +1034,7 @@ class GD implements Canvas * 'page' => Number of the page to output (defaults to the first). * @return string */ - public function output($options = array()) + public function output($options = []) { ob_start(); @@ -1046,7 +1049,7 @@ class GD implements Canvas * @param array $options Associative array: 'type' => jpeg|jpg|png; 'quality' => 0 - 100 (JPEG only); * 'page' => Number of the page to output (defaults to the first). */ - private function _output($options = array()) + protected function _output($options = []) { if (!isset($options["type"])) $options["type"] = "png"; if (!isset($options["page"])) $options["page"] = 1; diff --git a/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php b/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php index e999c580e1..d6baebfea6 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php +++ b/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php @@ -39,7 +39,7 @@ class PDFLib implements Canvas * * @var array; */ - static public $PAPER_SIZES = array(); // Set to Dompdf\Adapter\CPDF::$PAPER_SIZES below. + public static $PAPER_SIZES = []; // Set to Dompdf\Adapter\CPDF::$PAPER_SIZES below. /** * Whether to create PDFs in memory or on disk @@ -53,7 +53,7 @@ class PDFLib implements Canvas * * @var null|int */ - static private $MAJOR_VERSION = null; + protected static $MAJOR_VERSION = null; /** @@ -61,7 +61,7 @@ class PDFLib implements Canvas * * @var array */ - static public $nativeFontsTpPDFLib = array( + public static $nativeFontsTpPDFLib = [ "courier" => "Courier", "courier-bold" => "Courier-Bold", "courier-oblique" => "Courier-Oblique", @@ -78,124 +78,124 @@ class PDFLib implements Canvas "symbol" => "Symbol", "zapfdinbats" => "ZapfDingbats", "zapfdingbats" => "ZapfDingbats", - ); + ]; /** * @var \Dompdf\Dompdf */ - private $_dompdf; + protected $_dompdf; /** * Instance of PDFLib class * * @var \PDFLib */ - private $_pdf; + protected $_pdf; /** * Name of temporary file used for PDFs created on disk * * @var string */ - private $_file; + protected $_file; /** * PDF width, in points * * @var float */ - private $_width; + protected $_width; /** * PDF height, in points * * @var float */ - private $_height; + protected $_height; /** * Last fill color used * * @var array */ - private $_last_fill_color; + protected $_last_fill_color; /** * Last stroke color used * * @var array */ - private $_last_stroke_color; + protected $_last_stroke_color; /** * The current opacity level * * @var array */ - private $_current_opacity; + protected $_current_opacity; /** * Cache of image handles * * @var array */ - private $_imgs; + protected $_imgs; /** * Cache of font handles * * @var array */ - private $_fonts; + protected $_fonts; /** * Cache of fontFile checks * * @var array */ - private $_fontsFiles; + protected $_fontsFiles; /** * List of objects (templates) to add to multiple pages * * @var array */ - private $_objs; + protected $_objs; /** * List of gstate objects created for this PDF (for reuse) * * @var array */ - private $_gstates = array(); + protected $_gstates = []; /** * Current page number * * @var int */ - private $_page_number; + protected $_page_number; /** * Total number of pages * * @var int */ - private $_page_count; + protected $_page_count; /** * Text to display on every page * * @var array */ - private $_page_text; + protected $_page_text; /** * Array of pages for accesing after rendering is initially complete * * @var array */ - private $_pages; + protected $_pages; /** * Class constructor @@ -216,7 +216,7 @@ class PDFLib implements Canvas } if (mb_strtolower($orientation) === "landscape") { - list($size[2], $size[3]) = array($size[3], $size[2]); + list($size[2], $size[3]) = [$size[3], $size[2]]; } $this->_width = $size[2] - $size[0]; @@ -267,11 +267,11 @@ class PDFLib implements Canvas $this->_pdf->begin_page_ext($this->_width, $this->_height, ""); $this->_page_number = $this->_page_count = 1; - $this->_page_text = array(); + $this->_page_text = []; - $this->_imgs = array(); - $this->_fonts = array(); - $this->_objs = array(); + $this->_imgs = []; + $this->_fonts = []; + $this->_objs = []; } /** @@ -338,9 +338,13 @@ class PDFLib implements Canvas public function open_object() { $this->_pdf->suspend_page(""); - $ret = $this->_pdf->begin_template($this->_width, $this->_height); + if ($this->getPDFLibMajorVersion() >= 7) { + $ret = $this->_pdf->begin_template_ext($this->_width, $this->_height, null); + } else { + $ret = $this->_pdf->begin_template($this->_width, $this->_height); + } $this->_pdf->save(); - $this->_objs[$ret] = array("start_page" => $this->_page_number); + $this->_objs[$ret] = ["start_page" => $this->_page_number]; return $ret; } @@ -367,7 +371,11 @@ class PDFLib implements Canvas public function close_object() { $this->_pdf->restore(); - $this->_pdf->end_template(); + if ($this->getPDFLibMajorVersion() >= 7) { + $this->_pdf->end_template_ext($this->_width, $this->_height); + } else { + $this->_pdf->end_template(); + } $this->_pdf->resume_page("pagenumber=" . $this->_page_number); } @@ -450,7 +458,6 @@ class PDFLib implements Canvas $this->_pdf->fit_image($obj, 0, 0, ""); } } - } /** @@ -513,6 +520,10 @@ class PDFLib implements Canvas */ protected function _set_line_style($width, $cap, $join, $dash) { + if (!is_array($dash)) { + $dash = array(); + } + if (count($dash) == 1) { $dash[] = $dash[0]; } @@ -599,7 +610,11 @@ class PDFLib implements Canvas */ protected function _set_stroke_color($color) { + // TODO: we should check the current PDF stroke color + // instead of the cached value if ($this->_last_stroke_color == $color) { + // FIXME: do nothing, this optimization is broken by the + // stroke being set as a side effect of other operations //return; } @@ -612,16 +627,16 @@ class PDFLib implements Canvas if (isset($color[3])) { $type = "cmyk"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], $color[3]); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], $color[2], $color[3]]; } elseif (isset($color[2])) { $type = "rgb"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], null); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], $color[2], null]; } else { $type = "gray"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], null, null); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], null, null]; } - $this->_set_stroke_opacity($alpha); + $this->_set_stroke_opacity($alpha, "Normal"); $this->_pdf->setcolor("stroke", $type, $c1, $c2, $c3, $c4); } @@ -632,8 +647,12 @@ class PDFLib implements Canvas */ protected function _set_fill_color($color) { + // TODO: we should check the current PDF fill color + // instead of the cached value if ($this->_last_fill_color == $color) { - return; + // FIXME: do nothing, this optimization is broken by the + // fill being set as a side effect of other operations + //return; } $alpha = isset($color["alpha"]) ? $color["alpha"] : 1; @@ -645,16 +664,16 @@ class PDFLib implements Canvas if (isset($color[3])) { $type = "cmyk"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], $color[3]); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], $color[2], $color[3]]; } elseif (isset($color[2])) { $type = "rgb"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], $color[2], null); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], $color[2], null]; } else { $type = "gray"; - list($c1, $c2, $c3, $c4) = array($color[0], $color[1], null, null); + list($c1, $c2, $c3, $c4) = [$color[0], $color[1], null, null]; } - $this->_set_fill_opacity($alpha); + $this->_set_fill_opacity($alpha, "Normal"); $this->_pdf->setcolor("fill", $type, $c1, $c2, $c3, $c4); } @@ -714,7 +733,7 @@ class PDFLib implements Canvas return $this->_pdf->set_gstate($gstate); } - public function set_default_view($view, $options = array()) + public function set_default_view($view, $options = []) { // TODO // http://www.pdflib.com/fileadmin/pdflib/pdf/manuals/PDFlib-8.0.2-API-reference.pdf @@ -886,7 +905,7 @@ class PDFLib implements Canvas * @param float $width * @param array $style optional */ - public function page_line($x1, $y1, $x2, $y2, $color, $width, $style = array()) + public function page_line($x1, $y1, $x2, $y2, $color, $width, $style = []) { $_t = 'line'; $this->_page_text[] = compact('_t', 'x1', 'y1', 'x2', 'y2', 'color', 'width', 'style'); @@ -903,7 +922,7 @@ class PDFLib implements Canvas * @param float $width * @param array $style */ - public function arc($x1, $y1, $r1, $r2, $astart, $aend, $color, $width, $style = array()) + public function arc($x1, $y1, $r1, $r2, $astart, $aend, $color, $width, $style = []) { $this->_set_line_style($width, "butt", "", $style); $this->_set_stroke_color($color); @@ -985,7 +1004,37 @@ class PDFLib implements Canvas */ public function clipping_roundrectangle($x1, $y1, $w, $h, $rTL, $rTR, $rBR, $rBL) { - $this->clipping_rectangle($x1, $y1, $w, $h); + if ($this->getPDFLibMajorVersion() < 9) { + //TODO: add PDFLib7 support + $this->clipping_rectangle($x1, $y1, $w, $h); + return; + } + + $this->_pdf->save(); + + // we use 0,0 for the base coordinates for the path points + // since we're drawing the path at the $x1,$y1 coordinates + + $path = 0; + //start: left edge, top end + $path = $this->_pdf->add_path_point($path, 0, 0 - $rTL + $h, "move", ""); + // line: left edge, bottom end + $path = $this->_pdf->add_path_point($path, 0, 0 + $rBL, "line", ""); + // curve: bottom-left corner + $path = $this->_pdf->add_path_point($path, 0 + $rBL, 0, "elliptical", "radius=$rBL clockwise=false"); + // line: bottom edge, left end + $path = $this->_pdf->add_path_point($path, 0 - $rBR + $w, 0, "line", ""); + // curve: bottom-right corner + $path = $this->_pdf->add_path_point($path, 0 + $w, 0 + $rBR, "elliptical", "radius=$rBR clockwise=false"); + // line: right edge, top end + $path = $this->_pdf->add_path_point($path, 0 + $w, 0 - $rTR + $h, "line", ""); + // curve: top-right corner + $path = $this->_pdf->add_path_point($path, 0 - $rTR + $w, 0 +$h, "elliptical", "radius=$rTR clockwise=false"); + // line: top edge, left end + $path = $this->_pdf->add_path_point($path, 0 + $rTL, 0 + $h, "line", ""); + // curve: top-left corner + $path = $this->_pdf->add_path_point($path, 0, 0 - $rTL + $h, "elliptical", "radius=$rTL clockwise=false"); + $this->_pdf->draw_path($path, $x1, $this->_height-$y1-$h, "clip=true"); } /** @@ -1156,13 +1205,28 @@ class PDFLib implements Canvas $img_type = Cache::detect_type($img_url, $this->get_dompdf()->getHttpContext()); if (!isset($this->_imgs[$img_url])) { - $this->_imgs[$img_url] = $this->_pdf->load_image($img_type, $img_url, ""); + if (strtolower($img_type) === "svg") { + //FIXME: PDFLib loads SVG but returns error message "Function must not be called in 'page' scope" + $image_load_response = $this->_pdf->load_graphics($img_type, $img_url, ""); + } else { + $image_load_response = $this->_pdf->load_image($img_type, $img_url, ""); + } + if ($image_load_response === 0) { + //TODO: should do something with the error message + $error = $this->_pdf->get_errmsg(); + return; + } + $this->_imgs[$img_url] = $image_load_response; } $img = $this->_imgs[$img_url]; $y = $this->y($y) - $h; - $this->_pdf->fit_image($img, $x, $y, 'boxsize={' . "$w $h" . '} fitmethod=entire'); + if (strtolower($img_type) === "svg") { + $this->_pdf->fit_graphics($img, $x, $y, 'boxsize={' . "$w $h" . '} fitmethod=entire'); + } else { + $this->_pdf->fit_image($img, $x, $y, 'boxsize={' . "$w $h" . '} fitmethod=entire'); + } } /** @@ -1176,7 +1240,7 @@ class PDFLib implements Canvas * @param int $char_spacing * @param int $angle */ - public function text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_spacing = 0, $char_spacing = 0, $angle = 0) + public function text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_spacing = 0, $char_spacing = 0, $angle = 0) { $fh = $this->_load_font($font); @@ -1282,13 +1346,13 @@ class PDFLib implements Canvas $this->_pdf->setfont($fh, $size); - $asc = $this->_pdf->get_value("ascender", $fh); - $desc = $this->_pdf->get_value("descender", $fh); + $asc = $this->_pdf->info_font($fh, "ascender", "fontsize=$size"); + $desc = $this->_pdf->info_font($fh, "descender", "fontsize=$size"); // $desc is usually < 0, $ratio = $this->_dompdf->getOptions()->getFontHeightRatio(); - return $size * ($asc - $desc) * $ratio; + return (abs($asc) + abs($desc)) * $ratio; } /** @@ -1321,7 +1385,7 @@ class PDFLib implements Canvas * @param float $char_space char spacing adjustment * @param float $angle angle to write the text at, measured CW starting from the x-axis */ - public function page_text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_space = 0.0, $char_space = 0.0, $angle = 0.0) + public function page_text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_space = 0.0, $char_space = 0.0, $angle = 0.0) { $_t = "text"; $this->_page_text[] = compact("_t", "x", "y", "text", "font", "size", "color", "word_space", "char_space", "angle"); @@ -1364,7 +1428,7 @@ class PDFLib implements Canvas */ protected function _add_page_text() { - if (!count($this->_page_text)) { + if (count($this->_page_text) === 0) { return; } @@ -1379,8 +1443,8 @@ class PDFLib implements Canvas switch ($_t) { case "text": - $text = str_replace(array("{PAGE_NUM}", "{PAGE_COUNT}"), - array($p, $this->_page_count), $text); + $text = str_replace(["{PAGE_NUM}", "{PAGE_COUNT}"], + [$p, $this->_page_count], $text); $this->text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle); break; @@ -1388,7 +1452,7 @@ class PDFLib implements Canvas if (!$eval) { $eval = new PHPEvaluator($this); } - $eval->evaluate($code, array('PAGE_NUM' => $p, 'PAGE_COUNT' => $this->_page_count)); + $eval->evaluate($code, ['PAGE_NUM' => $p, 'PAGE_COUNT' => $this->_page_count]); break; case 'line': @@ -1411,7 +1475,7 @@ class PDFLib implements Canvas * @param array $options Associative array: 'compress' => 1 or 0 (default 1); 'Attachment' => 1 or 0 (default 1). * @throws Exception */ - public function stream($filename = "document.pdf", $options = array()) + public function stream($filename = "document.pdf", $options = []) { if (headers_sent()) { die("Unable to stream pdf: headers already sent"); @@ -1447,7 +1511,7 @@ class PDFLib implements Canvas header("Content-Type: application/pdf"); header("Content-Length: " . $size); - $filename = str_replace(array("\n", "'"), "", basename($filename, ".pdf")) . ".pdf"; + $filename = str_replace(["\n", "'"], "", basename($filename, ".pdf")) . ".pdf"; $attachment = $options["Attachment"] ? "attachment" : "inline"; header(Helpers::buildContentDispositionHeader($attachment, $filename)); @@ -1486,7 +1550,7 @@ class PDFLib implements Canvas * @param array $options Associative array: 'compress' => 1 or 0 (default 1). * @return string */ - public function output($options = array()) + public function output($options = []) { if (!isset($options["compress"])) { $options["compress"] = true; @@ -1580,7 +1644,7 @@ class PDFLib implements Canvas /** * @return int */ - private function getPDFLibMajorVersion() + protected function getPDFLibMajorVersion() { if (is_null(self::$MAJOR_VERSION)) { if (method_exists($this->_pdf, "get_option")) { diff --git a/civicrm/vendor/dompdf/dompdf/src/Autoloader.php b/civicrm/vendor/dompdf/dompdf/src/Autoloader.php index 08a3b46798..c6ade50511 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Autoloader.php +++ b/civicrm/vendor/dompdf/dompdf/src/Autoloader.php @@ -15,7 +15,7 @@ class Autoloader */ public static function register() { - spl_autoload_register(array(new self, 'autoload')); + spl_autoload_register([new self, 'autoload']); } /** @@ -25,15 +25,15 @@ class Autoloader */ public static function autoload($class) { - if ($class === 'Cpdf') { + if ($class === 'Dompdf\Cpdf') { require_once __DIR__ . "/../lib/Cpdf.php"; return; } $prefixLength = strlen(self::PREFIX); if (0 === strncmp(self::PREFIX, $class, $prefixLength)) { - $file = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, $prefixLength)); - $file = realpath(__DIR__ . (empty($file) ? '' : DIRECTORY_SEPARATOR) . $file . '.php'); + $file = str_replace('\\', '/', substr($class, $prefixLength)); + $file = realpath(__DIR__ . (empty($file) ? '' : '/') . $file . '.php'); if (file_exists($file)) { require_once $file; } diff --git a/civicrm/vendor/dompdf/dompdf/src/Canvas.php b/civicrm/vendor/dompdf/dompdf/src/Canvas.php index efc40e6a6d..e0b289e5ef 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Canvas.php +++ b/civicrm/vendor/dompdf/dompdf/src/Canvas.php @@ -262,7 +262,7 @@ interface Canvas * @param float $width * @param array $style */ - function arc($x, $y, $r1, $r2, $astart, $aend, $color, $width, $style = array()); + function arc($x, $y, $r1, $r2, $astart, $aend, $color, $width, $style = []); /** * Writes text at the specified x and y coordinates @@ -278,7 +278,7 @@ interface Canvas * @param float $char_space char spacing adjustment * @param float $angle angle */ - function text($x, $y, $text, $font, $size, $color = array(0, 0, 0), $word_space = 0.0, $char_space = 0.0, $angle = 0.0); + function text($x, $y, $text, $font, $size, $color = [0, 0, 0], $word_space = 0.0, $char_space = 0.0, $angle = 0.0); /** * Add a named destination (similar to <a name="foo">...</a> in html) @@ -388,7 +388,7 @@ interface Canvas * * @return void */ - function set_default_view($view, $options = array()); + function set_default_view($view, $options = []); /** * @param string $script @@ -410,7 +410,7 @@ interface Canvas * @param string $filename The filename to present to the browser. * @param array $options Associative array: 'compress' => 1 or 0 (default 1); 'Attachment' => 1 or 0 (default 1). */ - function stream($filename, $options = array()); + function stream($filename, $options = []); /** * Returns the PDF as a string. @@ -418,5 +418,5 @@ interface Canvas * @param array $options Associative array: 'compress' => 1 or 0 (default 1). * @return string */ - function output($options = array()); + function output($options = []); } diff --git a/civicrm/vendor/dompdf/dompdf/src/Cellmap.php b/civicrm/vendor/dompdf/dompdf/src/Cellmap.php index e426ef6716..6fe9973716 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Cellmap.php +++ b/civicrm/vendor/dompdf/dompdf/src/Cellmap.php @@ -25,7 +25,7 @@ class Cellmap * * @var array */ - protected static $_BORDER_STYLE_SCORE = array( + protected static $_BORDER_STYLE_SCORE = [ "inset" => 1, "groove" => 2, "outset" => 3, @@ -36,7 +36,7 @@ class Cellmap "double" => 8, "hidden" => 9, "none" => 0, - ); + ]; /** * The table object this cellmap is attached to. @@ -109,14 +109,14 @@ class Cellmap private $__row; /** - * Tells wether the columns' width can be modified + * Tells whether the columns' width can be modified * * @var bool */ private $_columns_locked = false; /** - * Tells wether the table has table-layout:fixed + * Tells whether the table has table-layout:fixed * * @var bool */ @@ -139,16 +139,16 @@ class Cellmap $this->_num_rows = 0; $this->_num_cols = 0; - $this->_cells = array(); - $this->_frames = array(); + $this->_cells = []; + $this->_frames = []; if (!$this->_columns_locked) { - $this->_columns = array(); + $this->_columns = []; } - $this->_rows = array(); + $this->_rows = []; - $this->_borders = array(); + $this->_borders = []; $this->__col = $this->__row = 0; } @@ -225,7 +225,7 @@ class Cellmap public function &get_column($i) { if (!isset($this->_columns[$i])) { - $this->_columns[$i] = array( + $this->_columns[$i] = [ "x" => 0, "min-width" => 0, "max-width" => 0, @@ -233,7 +233,7 @@ class Cellmap "absolute" => 0, "percent" => 0, "auto" => true, - ); + ]; } return $this->_columns[$i]; @@ -255,11 +255,11 @@ class Cellmap public function &get_row($j) { if (!isset($this->_rows[$j])) { - $this->_rows[$j] = array( + $this->_rows[$j] = [ "y" => 0, "first-column" => 0, "height" => null, - ); + ]; } return $this->_rows[$j]; @@ -276,11 +276,11 @@ class Cellmap public function get_border($i, $j, $h_v, $prop = null) { if (!isset($this->_borders[$i][$j][$h_v])) { - $this->_borders[$i][$j][$h_v] = array( + $this->_borders[$i][$j][$h_v] = [ "width" => 0, "style" => "solid", "color" => "black", - ); + ]; } if (isset($prop)) { @@ -298,12 +298,12 @@ class Cellmap */ public function get_border_properties($i, $j) { - return array( + return [ "top" => $this->get_border($i, $j, "horizontal"), "right" => $this->get_border($i, $j + 1, "vertical"), "bottom" => $this->get_border($i + 1, $j, "horizontal"), "left" => $this->get_border($i, $j, "vertical"), - ); + ]; } /** @@ -367,7 +367,7 @@ class Cellmap $y = $this->_rows[$row]["y"]; } - return array($x, $y, "x" => $x, "y" => $y); + return [$x, $y, "x" => $x, "y" => $y]; } /** @@ -452,7 +452,6 @@ class Cellmap $row["height"] = $height; $next_row =& $this->get_row($i + 1); $next_row["y"] = $row["y"] + $height; - } /** @@ -640,7 +639,7 @@ class Cellmap if (!$this->_columns_locked) { // Resolve the frame's width if ($this->_fixed_layout) { - list($frame_min, $frame_max) = array(0, 10e-10); + list($frame_min, $frame_max) = [0, 10e-10]; } else { list($frame_min, $frame_max) = $frame->get_min_max_width(); } @@ -896,19 +895,19 @@ class Cellmap $str .= Helpers::pre_r($this->_rows, true); $str .= "Frames:<br/>"; - $arr = array(); + $arr = []; foreach ($this->_frames as $key => $val) { - $arr[$key] = array("columns" => $val["columns"], "rows" => $val["rows"]); + $arr[$key] = ["columns" => $val["columns"], "rows" => $val["rows"]]; } $str .= Helpers::pre_r($arr, true); if (php_sapi_name() == "cli") { - $str = strip_tags(str_replace(array("<br/>", "<b>", "</b>"), - array("\n", chr(27) . "[01;33m", chr(27) . "[0m"), + $str = strip_tags(str_replace(["<br/>", "<b>", "</b>"], + ["\n", chr(27) . "[01;33m", chr(27) . "[0m"], $str)); } return $str; } -} \ No newline at end of file +} diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php b/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php index c45d7413ad..eeae5e6b00 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php +++ b/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php @@ -22,33 +22,33 @@ class AttributeTranslator // Munged data originally from // http://www.w3.org/TR/REC-html40/index/attributes.html // http://www.cs.tut.fi/~jkorpela/html2css.html - static private $__ATTRIBUTE_LOOKUP = array( + private static $__ATTRIBUTE_LOOKUP = [ //'caption' => array ( 'align' => '', ), - 'img' => array( - 'align' => array( + 'img' => [ + 'align' => [ 'bottom' => 'vertical-align: baseline;', 'middle' => 'vertical-align: middle;', 'top' => 'vertical-align: top;', 'left' => 'float: left;', 'right' => 'float: right;' - ), + ], 'border' => 'border: %0.2Fpx solid;', 'height' => 'height: %spx;', 'hspace' => 'padding-left: %1$0.2Fpx; padding-right: %1$0.2Fpx;', 'vspace' => 'padding-top: %1$0.2Fpx; padding-bottom: %1$0.2Fpx;', 'width' => 'width: %spx;', - ), - 'table' => array( - 'align' => array( + ], + 'table' => [ + 'align' => [ 'left' => 'margin-left: 0; margin-right: auto;', 'center' => 'margin-left: auto; margin-right: auto;', 'right' => 'margin-left: auto; margin-right: 0;' - ), + ], 'bgcolor' => 'background-color: %s;', 'border' => '!set_table_border', 'cellpadding' => '!set_table_cellpadding', //'border-spacing: %0.2F; border-collapse: separate;', 'cellspacing' => '!set_table_cellspacing', - 'frame' => array( + 'frame' => [ 'void' => 'border-style: none;', 'above' => 'border-top-style: solid;', 'below' => 'border-bottom-style: solid;', @@ -58,44 +58,44 @@ class AttributeTranslator 'rhs' => 'border-right-style: solid;', 'box' => 'border-style: solid;', 'border' => 'border-style: solid;' - ), + ], 'rules' => '!set_table_rules', 'width' => 'width: %s;', - ), - 'hr' => array( + ], + 'hr' => [ 'align' => '!set_hr_align', // Need to grab width to set 'left' & 'right' correctly 'noshade' => 'border-style: solid;', 'size' => '!set_hr_size', //'border-width: %0.2F px;', 'width' => 'width: %s;', - ), - 'div' => array( + ], + 'div' => [ 'align' => 'text-align: %s;', - ), - 'h1' => array( + ], + 'h1' => [ 'align' => 'text-align: %s;', - ), - 'h2' => array( + ], + 'h2' => [ 'align' => 'text-align: %s;', - ), - 'h3' => array( + ], + 'h3' => [ 'align' => 'text-align: %s;', - ), - 'h4' => array( + ], + 'h4' => [ 'align' => 'text-align: %s;', - ), - 'h5' => array( + ], + 'h5' => [ 'align' => 'text-align: %s;', - ), - 'h6' => array( + ], + 'h6' => [ 'align' => 'text-align: %s;', - ), + ], //TODO: translate more form element attributes - 'input' => array( + 'input' => [ 'size' => '!set_input_width' - ), - 'p' => array( + ], + 'p' => [ 'align' => 'text-align: %s;', - ), + ], // 'col' => array( // 'align' => '', // 'valign' => '', @@ -104,87 +104,87 @@ class AttributeTranslator // 'align' => '', // 'valign' => '', // ), - 'tbody' => array( + 'tbody' => [ 'align' => '!set_table_row_align', 'valign' => '!set_table_row_valign', - ), - 'td' => array( + ], + 'td' => [ 'align' => 'text-align: %s;', 'bgcolor' => '!set_background_color', 'height' => 'height: %s;', 'nowrap' => 'white-space: nowrap;', 'valign' => 'vertical-align: %s;', 'width' => 'width: %s;', - ), - 'tfoot' => array( + ], + 'tfoot' => [ 'align' => '!set_table_row_align', 'valign' => '!set_table_row_valign', - ), - 'th' => array( + ], + 'th' => [ 'align' => 'text-align: %s;', 'bgcolor' => '!set_background_color', 'height' => 'height: %s;', 'nowrap' => 'white-space: nowrap;', 'valign' => 'vertical-align: %s;', 'width' => 'width: %s;', - ), - 'thead' => array( + ], + 'thead' => [ 'align' => '!set_table_row_align', 'valign' => '!set_table_row_valign', - ), - 'tr' => array( + ], + 'tr' => [ 'align' => '!set_table_row_align', 'bgcolor' => '!set_table_row_bgcolor', 'valign' => '!set_table_row_valign', - ), - 'body' => array( + ], + 'body' => [ 'background' => 'background-image: url(%s);', 'bgcolor' => '!set_background_color', 'link' => '!set_body_link', 'text' => '!set_color', - ), - 'br' => array( + ], + 'br' => [ 'clear' => 'clear: %s;', - ), - 'basefont' => array( + ], + 'basefont' => [ 'color' => '!set_color', 'face' => 'font-family: %s;', 'size' => '!set_basefont_size', - ), - 'font' => array( + ], + 'font' => [ 'color' => '!set_color', 'face' => 'font-family: %s;', 'size' => '!set_font_size', - ), - 'dir' => array( + ], + 'dir' => [ 'compact' => 'margin: 0.5em 0;', - ), - 'dl' => array( + ], + 'dl' => [ 'compact' => 'margin: 0.5em 0;', - ), - 'menu' => array( + ], + 'menu' => [ 'compact' => 'margin: 0.5em 0;', - ), - 'ol' => array( + ], + 'ol' => [ 'compact' => 'margin: 0.5em 0;', 'start' => 'counter-reset: -dompdf-default-counter %d;', 'type' => 'list-style-type: %s;', - ), - 'ul' => array( + ], + 'ul' => [ 'compact' => 'margin: 0.5em 0;', 'type' => 'list-style-type: %s;', - ), - 'li' => array( + ], + 'li' => [ 'type' => 'list-style-type: %s;', 'value' => 'counter-reset: -dompdf-default-counter %d;', - ), - 'pre' => array( + ], + 'pre' => [ 'width' => 'width: %s;', - ), - ); + ], + ]; - static protected $_last_basefont_size = 3; - static protected $_font_size_lookup = array( + protected static $_last_basefont_size = 3; + protected static $_font_size_lookup = [ // For basefont support -3 => "4pt", -2 => "5pt", @@ -204,7 +204,7 @@ class AttributeTranslator 9 => "44pt", 10 => "52pt", 11 => "60pt", - ); + ]; /** * @param Frame $frame @@ -249,7 +249,6 @@ class AttributeTranslator $style = ltrim($style); $node->setAttribute(self::$_style_attr, $style); } - } /** @@ -259,7 +258,7 @@ class AttributeTranslator * * @return string */ - static protected function _resolve_target(\DOMNode $node, $target, $value) + protected static function _resolve_target(\DOMNode $node, $target, $value) { if ($target[0] === "!") { // Function call @@ -288,7 +287,7 @@ class AttributeTranslator * * @return \DOMNodeList|\DOMElement[] */ - static protected function get_cell_list(\DOMNode $node) + protected static function get_cell_list(\DOMNode $node) { $xpath = new \DOMXpath($node->ownerDocument); @@ -317,7 +316,7 @@ class AttributeTranslator * * @return string */ - static protected function _get_valid_color($value) + protected static function _get_valid_color($value) { if (preg_match('/^#?([0-9A-F]{6})$/i', $value, $matches)) { $value = "#$matches[1]"; @@ -332,7 +331,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_color(\DOMElement $node, $value) + protected static function _set_color(\DOMElement $node, $value) { $value = self::_get_valid_color($value); @@ -345,7 +344,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_background_color(\DOMElement $node, $value) + protected static function _set_background_color(\DOMElement $node, $value) { $value = self::_get_valid_color($value); @@ -358,7 +357,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_table_cellpadding(\DOMElement $node, $value) + protected static function _set_table_cellpadding(\DOMElement $node, $value) { $cell_list = self::get_cell_list($node); @@ -375,7 +374,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_table_border(\DOMElement $node, $value) + protected static function _set_table_border(\DOMElement $node, $value) { $cell_list = self::get_cell_list($node); @@ -398,7 +397,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_table_cellspacing(\DOMElement $node, $value) + protected static function _set_table_cellspacing(\DOMElement $node, $value) { $style = rtrim($node->getAttribute(self::$_style_attr), ";"); @@ -417,7 +416,7 @@ class AttributeTranslator * * @return null|string */ - static protected function _set_table_rules(\DOMElement $node, $value) + protected static function _set_table_rules(\DOMElement $node, $value) { $new_style = "; border-collapse: collapse;"; @@ -467,7 +466,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_hr_size(\DOMElement $node, $value) + protected static function _set_hr_size(\DOMElement $node, $value) { $style = rtrim($node->getAttribute(self::$_style_attr), ";"); $style .= "; border-width: " . max(0, $value - 2) . "; "; @@ -481,7 +480,7 @@ class AttributeTranslator * * @return null|string */ - static protected function _set_hr_align(\DOMElement $node, $value) + protected static function _set_hr_align(\DOMElement $node, $value) { $style = rtrim($node->getAttribute(self::$_style_attr), ";"); $width = $node->getAttribute("width"); @@ -518,11 +517,11 @@ class AttributeTranslator * * @return null|string */ - static protected function _set_input_width(\DOMElement $node, $value) + protected static function _set_input_width(\DOMElement $node, $value) { if (empty($value)) { return null; } - if ($node->hasAttribute("type") && in_array(strtolower($node->getAttribute("type")), array("text","password"))) { + if ($node->hasAttribute("type") && in_array(strtolower($node->getAttribute("type")), ["text","password"])) { return sprintf("width: %Fem", (((int)$value * .65)+2)); } else { return sprintf("width: %upx;", (int)$value); @@ -535,7 +534,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_table_row_align(\DOMElement $node, $value) + protected static function _set_table_row_align(\DOMElement $node, $value) { $cell_list = self::get_cell_list($node); @@ -552,7 +551,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_table_row_valign(\DOMElement $node, $value) + protected static function _set_table_row_valign(\DOMElement $node, $value) { $cell_list = self::get_cell_list($node); @@ -569,7 +568,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_table_row_bgcolor(\DOMElement $node, $value) + protected static function _set_table_row_bgcolor(\DOMElement $node, $value) { $cell_list = self::get_cell_list($node); $value = self::_get_valid_color($value); @@ -587,7 +586,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_body_link(\DOMElement $node, $value) + protected static function _set_body_link(\DOMElement $node, $value) { $a_list = $node->getElementsByTagName("a"); $value = self::_get_valid_color($value); @@ -605,7 +604,7 @@ class AttributeTranslator * * @return null */ - static protected function _set_basefont_size(\DOMElement $node, $value) + protected static function _set_basefont_size(\DOMElement $node, $value) { // FIXME: ? we don't actually set the font size of anything here, just // the base size for later modification by <font> tags. @@ -620,7 +619,7 @@ class AttributeTranslator * * @return string */ - static protected function _set_font_size(\DOMElement $node, $value) + protected static function _set_font_size(\DOMElement $node, $value) { $style = $node->getAttribute(self::$_style_attr); diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/Color.php b/civicrm/vendor/dompdf/dompdf/src/Css/Color.php index 7376663005..1c96f458af 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Css/Color.php +++ b/civicrm/vendor/dompdf/dompdf/src/Css/Color.php @@ -14,7 +14,7 @@ use Dompdf\Helpers; class Color { - static $cssColorNames = array( + static $cssColorNames = [ "aliceblue" => "F0F8FF", "antiquewhite" => "FAEBD7", "aqua" => "00FFFF", @@ -162,7 +162,7 @@ class Color "whitesmoke" => "F5F5F5", "yellow" => "FFFF00", "yellowgreen" => "9ACD32", - ); + ]; /** * @param $color @@ -170,13 +170,17 @@ class Color */ static function parse($color) { + if ($color === null) { + return null; + } + if (is_array($color)) { // Assume the array has the right format... // FIXME: should/could verify this. return $color; } - static $cache = array(); + static $cache = []; $color = strtolower($color); @@ -184,7 +188,7 @@ class Color return $cache[$color]; } - if (in_array($color, array("transparent", "inherit"))) { + if (in_array($color, ["transparent", "inherit"])) { return $cache[$color] = $color; } @@ -281,7 +285,7 @@ class Color */ static function getArray($color, $alpha = 1.0) { - $c = array(null, null, null, null, "alpha" => $alpha, "hex" => null); + $c = [null, null, null, null, "alpha" => $alpha, "hex" => null]; if (is_array($color)) { $c = $color; diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/Style.php b/civicrm/vendor/dompdf/dompdf/src/Css/Style.php index 96ac5d42b8..b2539a191a 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Css/Style.php +++ b/civicrm/vendor/dompdf/dompdf/src/Css/Style.php @@ -51,7 +51,7 @@ class Style * http://www.w3.org/TR/css3-fonts/#font-size-the-font-size-property * @var array<float> */ - static $font_size_keywords = array( + static $font_size_keywords = [ "xx-small" => 0.6, // 3/5 "x-small" => 0.75, // 3/4 "small" => 0.889, // 8/9 @@ -59,51 +59,61 @@ class Style "large" => 1.2, // 6/5 "x-large" => 1.5, // 3/2 "xx-large" => 2.0, // 2/1 - ); + ]; /** * List of valid vertical-align keywords. Should also really be a constant. * * @var array */ - static $vertical_align_keywords = array("baseline", "bottom", "middle", "sub", - "super", "text-bottom", "text-top", "top"); + static $vertical_align_keywords = ["baseline", "bottom", "middle", "sub", + "super", "text-bottom", "text-top", "top"]; /** * List of all inline types. Should really be a constant. * * @var array */ - static $INLINE_TYPES = array("inline"); + static $INLINE_TYPES = ["inline"]; /** * List of all block types. Should really be a constant. * * @var array */ - static $BLOCK_TYPES = array("block", "inline-block", "table-cell", "list-item"); + static $BLOCK_TYPES = ["block", "inline-block", "table-cell", "list-item"]; /** * List of all positionned types. Should really be a constant. * * @var array */ - static $POSITIONNED_TYPES = array("relative", "absolute", "fixed"); + static $POSITIONNED_TYPES = ["relative", "absolute", "fixed"]; /** * List of all table types. Should really be a constant. * * @var array; */ - static $TABLE_TYPES = array("table", "inline-table"); + static $TABLE_TYPES = ["table", "inline-table"]; /** * List of valid border styles. Should also really be a constant. * * @var array */ - static $BORDER_STYLES = array("none", "hidden", "dotted", "dashed", "solid", - "double", "groove", "ridge", "inset", "outset"); + static $BORDER_STYLES = ["none", "hidden", "dotted", "dashed", "solid", + "double", "groove", "ridge", "inset", "outset"]; + + /** + * List of CSS shorthand properties + * + * @var array + */ + protected static $_props_shorthand = ["background", "border", + "border_bottom", "border_color", "border_left", "border_radius", + "border_right", "border_style", "border_top", "border_width", + "flex", "font", "list_style", "margin", "padding"]; /** * Default style values. @@ -112,7 +122,7 @@ class Style * * @var array */ - static protected $_defaults = null; + protected static $_defaults = null; /** * List of inherited properties @@ -121,14 +131,14 @@ class Style * * @var array */ - static protected $_inherited = null; + protected static $_inherited = null; /** * Caches method_exists result * * @var array<bool> */ - static protected $_methods_cache = array(); + protected static $_methods_cache = []; /** * The stylesheet this style belongs to @@ -150,17 +160,43 @@ class Style * * @var array */ - protected $_props; + protected $_props = []; /* var instead of protected would allow access outside of class */ - protected $_important_props; + protected $_important_props = []; + + /** + * The computed values of the CSS property + * + * @var array + */ + protected $_props_computed = []; + + protected static $_dependency_map = [ + "font_size" => [ + "border_top_width", + "border_right_width", + "border_bottom_width", + "border_left_width", + "line_height", + "margin_top", + "margin_right", + "margin_bottom", + "margin_left", + "outline_width", + "padding_top", + "padding_right", + "padding_bottom", + "padding_left" + ] + ]; /** - * Cached property values + * The used values of the CSS property * * @var array */ - protected $_prop_cache; + protected $_prop_cache = []; /** * Font size of parent element in document tree. Used for relative font @@ -168,9 +204,7 @@ class Style * * @var float */ - protected $_parent_font_size; // Font size of parent element - - protected $_font_family; + protected $_parent_font_size; /** * @var Frame @@ -185,13 +219,6 @@ class Style protected $_origin = Stylesheet::ORIG_AUTHOR; // private members - /** - * True once the font size is resolved absolutely - * - * @var bool - */ - private $__font_size_calculated; // Cache flag - /** * The computed bottom spacing */ @@ -222,13 +249,12 @@ class Style { $this->setFontMetrics($stylesheet->getFontMetrics()); - $this->_props = array(); - $this->_important_props = array(); + $this->_props = []; + $this->_important_props = []; $this->_stylesheet = $stylesheet; - $this->_media_queries = array(); + $this->_media_queries = []; $this->_origin = $origin; $this->_parent_font_size = null; - $this->__font_size_calculated = false; if (!isset(self::$_defaults)) { @@ -374,7 +400,7 @@ class Style $d["unicode_range"] = ""; // Properties that inherit by default - self::$_inherited = array( + self::$_inherited = [ "azimuth", "background_image_resolution", "border_collapse", @@ -420,7 +446,7 @@ class Style "word_wrap", "widows", "word_spacing", - ); + ]; } } @@ -506,7 +532,7 @@ class Style */ function length_in_pt($length, $ref_size = null) { - static $cache = array(); + static $cache = []; if (!isset($ref_size)) { $ref_size = self::$default_font_size; @@ -518,7 +544,7 @@ class Style if (isset($cache[$key])) { return $cache[$key]; } - $length = array($length); + $length = [$length]; } else { $key = implode("@", $length) . "/$ref_size"; if (isset($cache[$key])) { @@ -638,28 +664,46 @@ class Style */ function inherit(Style $parent) { - - // Set parent font size - $this->_parent_font_size = $parent->get_font_size(); + // Set parent font size, changes affect font size of the element + if ($this->_parent_font_size !== $parent->font_size) { + $this->_parent_font_size = $parent->font_size; + if (isset($this->_props["font_size"])) { + $this->__set("font_size", $this->_props["font_size"]); + } + } foreach (self::$_inherited as $prop) { + // don't inherit shorthand properties, the specific properties will inherit + if (in_array($prop, self::$_props_shorthand) === true) { + continue; + } + //inherit the !important property also. //if local property is also !important, don't inherit. - if (isset($parent->_props[$prop]) && - (!isset($this->_props[$prop]) || - (isset($parent->_important_props[$prop]) && !isset($this->_important_props[$prop])) + + if (isset($parent->_props_computed[$prop]) && + ( + !isset($this->_props[$prop]) + || (isset($parent->_important_props[$prop]) && !isset($this->_important_props[$prop])) ) ) { if (isset($parent->_important_props[$prop])) { $this->_important_props[$prop] = true; } - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; - $this->_props[$prop] = $parent->_props[$prop]; + if (isset($parent->_props_computed[$prop])) { + $this->__set($prop, $parent->_props_computed[$prop]); + } else { + // parent prop not set, use the default + $this->__set($prop, self::$_defaults[$prop]); + } } } foreach ($this->_props as $prop => $value) { + // don't inherit shorthand properties, the specific properties will inherit + if (in_array($prop, self::$_props_shorthand) === true) { + continue; + } if ($value === "inherit") { if (isset($parent->_important_props[$prop])) { $this->_important_props[$prop] = true; @@ -675,7 +719,14 @@ class Style //props_set for more obvious explicite assignment not implemented, because //too many implicite uses. // $this->props_set($prop, $parent->$prop); - $this->__set($prop, $parent->__get($prop)); + if (isset($parent->_props_computed[$prop])) { + $this->__set($prop, $parent->_props_computed[$prop]); + } else { + // parent prop not set, use the default + $this->__set($prop, self::$_defaults[$prop]); + } + // set the specified prop back to "inherit" + $this->_props[$prop] = "inherit"; } } @@ -689,7 +740,6 @@ class Style */ function merge(Style $style) { - $shorthand_properties = array("background", "border", "border_bottom", "border_color", "border_left", "border_radius", "border_right", "border_style", "border_top", "border_width", "flex", "font", "list_style", "margin", "padding", "transform"); //treat the !important attribute //if old rule has !important attribute, override with new rule only if //the new rule is also !important @@ -698,30 +748,25 @@ class Style if (isset($style->_important_props[$prop])) { $this->_important_props[$prop] = true; $can_merge = true; - } else if (!isset($this->_important_props[$prop])) { + } else if (isset($val) && !isset($this->_important_props[$prop])) { $can_merge = true; } if ($can_merge) { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; - $this->_props[$prop] = $val; - - // Clear out "inherit" shorthand properties if specific properties have been set - $shorthands = array_filter($shorthand_properties, function($el) use ($prop) { + // Clear out "inherit" shorthand properties if a more specific property value has been set + $shorthands = array_filter(self::$_props_shorthand, function($el) use ($prop) { return ( strpos($prop, $el."_") !== false ); }); foreach ($shorthands as $shorthand) { if (array_key_exists($shorthand, $this->_props) && $this->_props[$shorthand] === "inherit") { unset($this->_props[$shorthand]); + unset($this->_props_computed[$shorthand]); + unset($this->_prop_cache[$shorthand]); } - } + } + $this->__set($prop, $val); } } - - if (isset($style->_props["font_size"])) { - $this->__font_size_calculated = false; - } } /** @@ -787,19 +832,22 @@ class Style function __set($prop, $val) { $prop = str_replace("-", "_", $prop); - $this->_prop_cache[$prop] = null; if (!isset(self::$_defaults[$prop])) { global $_dompdf_warnings; - $_dompdf_warnings[] = "'$prop' is not a valid CSS2 property."; + $_dompdf_warnings[] = "'$prop' is not a recognized CSS property."; return; } if ($prop !== "content" && is_string($val) && strlen($val) > 5 && mb_strpos($val, "url") === false) { - $val = mb_strtolower(trim(str_replace(array("\n", "\t"), array(" "), $val))); + $val = mb_strtolower(trim(str_replace(["\n", "\t"], [" "], $val))); $val = preg_replace("/([0-9]+) (pt|px|pc|em|ex|in|cm|mm|%)/S", "\\1\\2", $val); } + $this->_props[$prop] = $val; + $this->_props_computed[$prop] = null; + $this->_prop_cache[$prop] = null; + $method = "set_$prop"; if (!isset(self::$_methods_cache[$method])) { @@ -808,8 +856,18 @@ class Style if (self::$_methods_cache[$method]) { $this->$method($val); - } else { - $this->_props[$prop] = $val; + } + if (isset($this->_props_computed[$prop]) === false) { + $this->_props_computed[$prop] = $val; + } + + //FIXME: need to catch for circular dependencies because oops + if (array_key_exists($prop, self::$_dependency_map)) { + foreach (self::$_dependency_map[$prop] as $dependent) { + if (isset($this->_props[$dependent]) === true) { + $this->__set($dependent, $this->_props[$dependent]); + } + } } } @@ -828,19 +886,36 @@ class Style */ function __get($prop) { + //FIXME: need to get shorthand from component properties if (!isset(self::$_defaults[$prop])) { - throw new Exception("'$prop' is not a valid CSS2 property."); + throw new Exception("'$prop' is not a recognized CSS property."); } - if (isset($this->_prop_cache[$prop]) && $this->_prop_cache[$prop] != null) { + if (isset($this->_prop_cache[$prop])) { return $this->_prop_cache[$prop]; } $method = "get_$prop"; - // Fall back on defaults if property is not set - if (!isset($this->_props[$prop])) { - $this->_props[$prop] = self::$_defaults[$prop]; + $retval = null; + // Preview the value based on the default if the property's computed value has not + // yet been set or the current value is "inherit" (the computed value will be based + // on the parent's value if inheritance has been applied). + // Reset the specified property afterwards so that we don't block inheritance later. + $reset_value = false; + $specified_value = null; + $computed_value = null; + if (!isset($this->_props_computed[$prop]) || $this->_props_computed[$prop] === "inherit") { + $reset_value = true; + if (isset($this->_props[$prop])) { + $specified_value = $this->_props[$prop]; + } + if (isset($this->_props_computed[$prop])) { + $computed_value = $this->_props_computed[$prop]; + } + if (!in_array($prop, self::$_props_shorthand)) { + $this->__set($prop, self::$_defaults[$prop]); + } } if (!isset(self::$_methods_cache[$method])) { @@ -848,10 +923,46 @@ class Style } if (self::$_methods_cache[$method]) { - return $this->_prop_cache[$prop] = $this->$method(); + $retval = $this->_prop_cache[$prop] = $this->$method(); + } + + if (!isset($retval)) { + $retval = $this->_prop_cache[$prop] = $this->_props_computed[$prop]; + } + + if ($reset_value) { + $this->_props[$prop] = $specified_value; + $this->_props_computed[$prop] = $computed_value; } - return $this->_prop_cache[$prop] = $this->_props[$prop]; + return $retval; + } + + /** + * Sets the property value without calculating the computed value + * + * @param $prop + * @param $val + */ + function set_prop($prop, $val) + { + $prop = str_replace("-", "_", $prop); + $this->_props_computed[$prop] = null; + $this->_prop_cache[$prop] = null; + + if (!isset(self::$_defaults[$prop])) { + global $_dompdf_warnings; + $_dompdf_warnings[] = "'$prop' is not a recognized CSS property."; + return; + } + + // clean up the value + if ($prop !== "content" && is_string($val) && strlen($val) > 5 && mb_strpos($val, "url") === false) { + $val = mb_strtolower(trim(str_replace(["\n", "\t"], [" "], $val))); + $val = preg_replace("/([0-9]+) (pt|px|pc|em|ex|in|cm|mm|%)/S", "\\1\\2", $val); + } + + $this->_props[$prop] = $val; } /** @@ -865,13 +976,13 @@ class Style function get_prop($prop) { if (!isset(self::$_defaults[$prop])) { - throw new Exception("'$prop' is not a valid CSS2 property."); + throw new Exception("'$prop' is not a recognized CSS property."); } $method = "get_$prop"; // Fall back on defaults if property is not set - if (!isset($this->_props[$prop])) { + if (!isset($this->_props_computed[$prop])) { return self::$_defaults[$prop]; } @@ -882,19 +993,32 @@ class Style return $this->_props[$prop]; } + /** + * Calculates the computed value of the CSS properties that have been set (the specified properties) + */ + function compute_props() + { + foreach ($this->_props as $prop => $val) { + if (in_array($prop, self::$_props_shorthand) === false) { + $this->__set($prop, $val); + } + } + } + /** * @return float|null|string */ - function computed_bottom_spacing() { + function computed_bottom_spacing() + { if ($this->_computed_bottom_spacing !== null) { return $this->_computed_bottom_spacing; } return $this->_computed_bottom_spacing = $this->length_in_pt( - array( + [ $this->margin_bottom, $this->padding_bottom, $this->border_bottom_width - ) + ] ); } @@ -918,9 +1042,7 @@ class Style */ function get_font_family() { - if (isset($this->_font_family)) { - return $this->_font_family; - } + //TODO: we should be using the calculated prop rather than perform the entire family parsing operation again $DEBUGCSS = $this->_stylesheet->get_dompdf()->getOptions()->getDebugCss(); @@ -929,37 +1051,17 @@ class Style // Resolve font-weight $weight = $this->__get("font_weight"); - - if (is_numeric($weight)) { - if ($weight < 600) { - $weight = "normal"; - } else { - $weight = "bold"; - } - } else if ($weight === "bold" || $weight === "bolder") { - $weight = "bold"; + if ($weight === 'bold') { + $weight = 700; + } elseif (preg_match('/^[0-9]+$/', $weight, $match)) { + $weight = (int)$match[0]; } else { - $weight = "normal"; + $weight = 400; } // Resolve font-style $font_style = $this->__get("font_style"); - - if ($weight === "bold" && ($font_style === "italic" || $font_style === "oblique")) { - $subtype = "bold_italic"; - } else if ($weight === "bold" && $font_style !== "italic" && $font_style !== "oblique") { - $subtype = "bold"; - } else if ($weight !== "bold" && ($font_style === "italic" || $font_style === "oblique")) { - $subtype = "italic"; - } else { - $subtype = "normal"; - } - - // Resolve the font family - if ($DEBUGCSS) { - print "<pre>[get_font_family:"; - print '(' . $this->_props["font_family"] . '.' . $font_style . '.' . $this->__get("font_weight") . '.' . $weight . '.' . $subtype . ')'; - } + $subtype = $this->getFontMetrics()->getType($weight.' '.$font_style); $families = preg_split("/\s*,\s*/", $this->_props["font_family"]); @@ -975,9 +1077,11 @@ class Style if ($font) { if ($DEBUGCSS) { + print "<pre>[get_font_family:"; + print '(' . $this->_props["font_family"] . '.' . $font_style . '.' . $weight . '.' . $subtype . ')'; print '(' . $font . ")get_font_family]\n</pre>"; } - return $this->_font_family = $font; + return $font; } } @@ -991,11 +1095,10 @@ class Style if ($DEBUGCSS) { print '(' . $font . ")get_font_family]\n</pre>"; } - return $this->_font_family = $font; + return $font; } throw new Exception("Unable to find a suitable font replacement for: '" . $this->_props["font_family"] . "'"); - } /** @@ -1006,59 +1109,13 @@ class Style */ function get_font_size() { - - if ($this->__font_size_calculated) { - return $this->_props["font_size"]; - } - - if (!isset($this->_props["font_size"])) { - $fs = self::$_defaults["font_size"]; - } else { - $fs = $this->_props["font_size"]; - } - if (!isset($this->_parent_font_size)) { $this->_parent_font_size = self::$default_font_size; } - - switch ((string)$fs) { - case "xx-small": - case "x-small": - case "small": - case "medium": - case "large": - case "x-large": - case "xx-large": - $fs = self::$default_font_size * self::$font_size_keywords[$fs]; - break; - - case "smaller": - $fs = 8 / 9 * $this->_parent_font_size; - break; - - case "larger": - $fs = 6 / 5 * $this->_parent_font_size; - break; - - default: - break; - } - - // Ensure relative sizes resolve to something - if (($i = mb_strpos($fs, "em")) !== false) { - $fs = (float)mb_substr($fs, 0, $i) * $this->_parent_font_size; - } else if (($i = mb_strpos($fs, "ex")) !== false) { - $fs = (float)mb_substr($fs, 0, $i) * $this->_parent_font_size; - } else { - $fs = (float)$this->length_in_pt($fs); + if (!isset($this->_props["font_size"]) || $this->_props["font_size"] === "inherit") { + return $this->_parent_font_size; } - - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["font_size"] = null; - $this->_props["font_size"] = $fs; - $this->__font_size_calculated = true; - return $this->_props["font_size"]; - + return $this->_props_computed["font_size"]; } /** @@ -1093,20 +1150,23 @@ class Style */ function get_line_height() { - if (array_key_exists("line_height", $this->_props) === false) { - $this->_props["line_height"] = self::$_defaults["line_height"]; + if (!isset($this->_props["line_height"]) || $this->_props["line_height"] === "inherit") { + $this->__set("line_height", self::$_defaults["line_height"]); + } + if (!isset($this->_props_computed["line_height"])) { + $this->__set("line_height", $this->_props["line_height"]); } - $line_height = $this->_props["line_height"]; + $line_height = $this->_props_computed["line_height"]; if ($line_height === "normal") { - return self::$default_line_height * $this->get_font_size(); + return self::$default_line_height * $this->__get("font_size"); } if (is_numeric($line_height)) { - return $this->length_in_pt($line_height . "em", $this->get_font_size()); + return $line_height * $this->__get("font_size"); } - return $this->length_in_pt($line_height, $this->_parent_font_size); + return (float)$this->length_in_pt($line_height, $this->__get("font_size")); } /** @@ -1120,7 +1180,10 @@ class Style */ function get_color() { - return $this->munge_color($this->_props["color"]); + if (!isset($this->_props["color"]) || $this->_props["color"] === "inherit") { + return $this->munge_color(self::$_defaults["color"]); + } + return $this->munge_color($this->_props_computed["color"]); } /** @@ -1133,7 +1196,7 @@ class Style */ function get_background_color() { - return $this->munge_color($this->_props["background_color"]); + return $this->munge_color($this->_props_computed["background_color"]); } /** @@ -1218,10 +1281,10 @@ class Style $y = "0%"; } - return array( + return [ 0 => $x, "x" => $x, 1 => $y, "y" => $y, - ); + ]; } @@ -1280,13 +1343,10 @@ class Style */ function get_border_top_color() { - if ($this->_props["border_top_color"] === "") { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_top_color"] = null; - $this->_props["border_top_color"] = $this->__get("color"); + if ($this->_props_computed["border_top_color"] === "") { + $this->__set("border_top_color", $this->__get("color")); } - - return $this->munge_color($this->_props["border_top_color"]); + return $this->munge_color($this->_props_computed["border_top_color"]); } /** @@ -1294,13 +1354,10 @@ class Style */ function get_border_right_color() { - if ($this->_props["border_right_color"] === "") { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_right_color"] = null; - $this->_props["border_right_color"] = $this->__get("color"); + if ($this->_props_computed["border_right_color"] === "") { + $this->__set("border_right_color", $this->__get("color")); } - - return $this->munge_color($this->_props["border_right_color"]); + return $this->munge_color($this->_props_computed["border_right_color"]); } /** @@ -1308,13 +1365,10 @@ class Style */ function get_border_bottom_color() { - if ($this->_props["border_bottom_color"] === "") { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_bottom_color"] = null; - $this->_props["border_bottom_color"] = $this->__get("color"); + if ($this->_props_computed["border_bottom_color"] === "") { + $this->__set("border_bottom_color", $this->__get("color")); } - - return $this->munge_color($this->_props["border_bottom_color"]); + return $this->munge_color($this->_props_computed["border_bottom_color"]); } /** @@ -1322,13 +1376,10 @@ class Style */ function get_border_left_color() { - if ($this->_props["border_left_color"] === "") { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["border_left_color"] = null; - $this->_props["border_left_color"] = $this->__get("color"); + if ($this->_props_computed["border_left_color"] === "") { + $this->__set("border_left_color", $this->__get("color")); } - - return $this->munge_color($this->_props["border_left_color"]); + return $this->munge_color($this->_props_computed["border_left_color"]); } /**#@-*/ @@ -1342,7 +1393,7 @@ class Style function get_border_top_width() { $style = $this->__get("border_top_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_top_width"]) : 0; + return $style !== "none" && $style !== "hidden" ? (float)$this->length_in_pt($this->_props_computed["border_top_width"]) : 0; } /** @@ -1351,7 +1402,7 @@ class Style function get_border_right_width() { $style = $this->__get("border_right_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_right_width"]) : 0; + return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props_computed["border_right_width"]) : 0; } /** @@ -1360,7 +1411,7 @@ class Style function get_border_bottom_width() { $style = $this->__get("border_bottom_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_bottom_width"]) : 0; + return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props_computed["border_bottom_width"]) : 0; } /** @@ -1369,7 +1420,7 @@ class Style function get_border_left_width() { $style = $this->__get("border_left_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["border_left_width"]) : 0; + return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props_computed["border_left_width"]) : 0; } /**#@-*/ @@ -1388,28 +1439,28 @@ class Style */ function get_border_properties() { - return array( - "top" => array( + return [ + "top" => [ "width" => $this->__get("border_top_width"), "style" => $this->__get("border_top_style"), "color" => $this->__get("border_top_color"), - ), - "bottom" => array( + ], + "bottom" => [ "width" => $this->__get("border_bottom_width"), "style" => $this->__get("border_bottom_style"), "color" => $this->__get("border_bottom_color"), - ), - "right" => array( + ], + "right" => [ "width" => $this->__get("border_right_width"), "style" => $this->__get("border_right_style"), "color" => $this->__get("border_right_color"), - ), - "left" => array( + ], + "left" => [ "width" => $this->__get("border_left_width"), "style" => $this->__get("border_left_style"), "color" => $this->__get("border_left_color"), - ), - ); + ], + ]; } /** @@ -1424,7 +1475,7 @@ class Style $color = $this->__get("border_" . $side . "_color"); return $this->__get("border_" . $side . "_width") . " " . - $this->__get("border_" . $side . "_style") . " " . $color["hex"]; + $this->__get("border_" . $side . "_style") . " " . $color["hex"]; } /**#@+ @@ -1466,6 +1517,54 @@ class Style return $this->_get_border("left"); } + private function _get_width($prop) + { + if (!isset($this->_props[$prop]) || $this->_props[$prop] === "inherit") { + $this->__set($prop, self::$_defaults[$prop]); + } + if (!isset($this->_props_computed[$prop])) { + $this->__set($prop, $this->_props[$prop]); + } + if (strpos($this->_props_computed[$prop], "%") !== false) { + // calculate against width of containing block, needs to be done outside the style class + return $this->_props_computed[$prop]; + } + return $this->length_in_pt($this->_props_computed[$prop], $this->__get("font_size")); + } + + function get_margin_top() + { + return $this->_get_width("margin_top"); + } + function get_margin_right() + { + return $this->_get_width("margin_right"); + } + function get_margin_bottom() + { + return $this->_get_width("margin_bottom"); + } + function get_margin_left() + { + return $this->_get_width("margin_left"); + } + function get_padding_top() + { + return $this->_get_width("padding_top"); + } + function get_padding_right() + { + return $this->_get_width("padding_right"); + } + function get_padding_bottom() + { + return $this->_get_width("padding_bottom"); + } + function get_padding_left() + { + return $this->_get_width("padding_left"); + } + /** * @param $w * @param $h @@ -1485,13 +1584,13 @@ class Style $rBR = (float)$this->__get("border_bottom_right_radius"); if ($rTL + $rTR + $rBL + $rBR == 0) { - return $this->_computed_border_radius = array( + return $this->_computed_border_radius = [ 0, 0, 0, 0, "top-left" => 0, "top-right" => 0, "bottom-right" => 0, "bottom-left" => 0, - ); + ]; } $t = (float)$this->__get("border_top_width"); @@ -1504,13 +1603,13 @@ class Style $rBL = min($rBL, $h - $rTL - $t / 2 - $b / 2, $w - $rBR - $l / 2 - $r / 2); $rBR = min($rBR, $h - $rTR - $t / 2 - $b / 2, $w - $rBL - $l / 2 - $r / 2); - return $this->_computed_border_radius = array( + return $this->_computed_border_radius = [ $rTL, $rTR, $rBR, $rBL, "top-left" => $rTL, "top-right" => $rTR, "bottom-right" => $rBR, "bottom-left" => $rBL, - ); + ]; } /** @@ -1523,13 +1622,10 @@ class Style */ function get_outline_color() { - if ($this->_props["outline_color"] === "") { - //see __set and __get, on all assignments clear cache! - $this->_prop_cache["outline_color"] = null; - $this->_props["outline_color"] = $this->__get("color"); + if ($this->_props_computed["outline_color"] === "") { + $this->__set("outline_color", $this->__get("color")); } - - return $this->munge_color($this->_props["outline_color"]); + return $this->munge_color($this->_props_computed["outline_color"]); } /**#@+ @@ -1539,7 +1635,7 @@ class Style function get_outline_width() { $style = $this->__get("outline_style"); - return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props["outline_width"]) : 0; + return $style !== "none" && $style !== "hidden" ? $this->length_in_pt($this->_props_computed["outline_width"]) : 0; } /**#@+ @@ -1579,6 +1675,28 @@ class Style return $arr; } + /** + * @param $val + */ + function get_counter_increment() + { + $val = trim($this->_props_computed["counter_increment"]); + $value = null; + + if (in_array($val, ["none", "inherit"])) { + $value = $val; + } else { + if (preg_match_all("/(" . self::CSS_IDENTIFIER . ")(?:\s+(" . self::CSS_INTEGER . "))?/", $val, $matches, PREG_SET_ORDER)) { + $value = []; + foreach ($matches as $match) { + $value[$match[1]] = isset($match[2]) ? $match[2] : 1; + } + } + } + return $value; + } + + /*==============================*/ /* @@ -1638,18 +1756,39 @@ class Style */ protected function _set_style_side_type($style, $side, $type, $val, $important) { - $prop = $style . '_' . $side . $type; + $prop = $style; + if (!empty($side)) { + $prop .= "_" . $side; + }; + if (!empty($type)) { + $prop .= "_" . $type; + }; + $this->_props[$prop] = $val; + $this->_prop_cache[$prop] = null; if (!isset($this->_important_props[$prop]) || $important) { + $val_computed = (float)$this->length_in_pt($val); if ($side === "bottom") { $this->_computed_bottom_spacing = null; //reset computed cache, border style can disable/enable border calculations } - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$prop] = null; if ($important) { $this->_important_props[$prop] = true; } - $this->_props[$prop] = $val; + if ( + (($style === "border" || $style === "outline") && $type === "width" && strpos($val, "%") !== false) + || + (($style === "border" || $style === "padding" || $style === "outline") && $val_computed < 0) + ) { + return; + } elseif (($style === "margin" || $style === "padding") && (strpos($val, "%") !== false || $val === "auto")) { + $this->_props_computed[$prop] = $val; + } elseif ($style === "margin" || $style === "padding" && $val !== "inherit") { + $this->_props_computed[$prop] = ($val !== "none" && $val !== "hidden" ? $val_computed . "pt" : 0); + } elseif ($style === "color") { + $this->set_prop_color($prop, $val); + } else { + $this->_props_computed[$prop] = $val; + } } } @@ -1695,10 +1834,6 @@ class Style $this->_set_style_sides_type($style, $arr[0], $arr[1], $arr[2], $arr[3], $type, $important); break; } - - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$style . $type] = null; - $this->_props[$style . $type] = $val; } /** @@ -1721,12 +1856,7 @@ class Style */ protected function _set_style_side_width_important($style, $side, $val) { - if ($side === "bottom") { - $this->_computed_bottom_spacing = null; //reset cache for any bottom width changes - } - //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$style . '_' . $side] = null; - $this->_props[$style . '_' . $side] = str_replace("none", "0px", $val); + $this->_set_style_side_type($style, $side, "", $val, isset($this->_important_props[$style . $side])); } /** @@ -1741,8 +1871,10 @@ class Style $this->_important_props[$style] = true; } //see __set and __get, on all assignments clear cache! - $this->_prop_cache[$style] = null; - $this->_props[$style] = $val; + //$this->_prop_cache[$style] = null; + //$this->_props_computed[$style] = $val; + //$this->_props[$style] = $val; + $this->__set($style, $val); } } @@ -1793,6 +1925,21 @@ class Style /*======================*/ + protected function set_prop_color($prop, $color) + { + $this->_props[$prop] = $color; + $this->_props_computed[$prop] = null; + $this->_prop_cache[$prop] = null; + + $munged_color = $this->munge_color($color); + + if (is_null($munged_color)) { + return; + } + + $this->_props_computed[$prop] = (is_array($munged_color) ? $munged_color["hex"] : $munged_color); + } + /** * Sets color * @@ -1803,17 +1950,7 @@ class Style */ function set_color($color) { - $col = $this->munge_color($color); - - if (is_null($col) || !isset($col["hex"])) { - $color = "inherit"; - } else { - $color = $col["hex"]; - } - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["color"] = null; - $this->_props["color"] = $color; + $this->set_prop_color("color", $color); } /** @@ -1824,16 +1961,7 @@ class Style */ function set_background_color($color) { - $col = $this->munge_color($color); - - if (is_null($col)) { - return; - //$col = self::$_defaults["background_color"]; - } - - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["background_color"] = null; - $this->_props["background_color"] = is_array($col) ? $col["hex"] : $col; + $this->set_prop_color("background_color", $color); } /** @@ -1844,9 +1972,9 @@ class Style */ function set_background_image($val) { - //see __set and __get, on all assignments clear cache, not needed on direct set through __set + $this->_props["background_image"] = $val; + $this->_props_computed["background_image"] = $this->_image($val); $this->_prop_cache["background_image"] = null; - $this->_props["background_image"] = $this->_image($val); } /** @@ -1915,13 +2043,13 @@ class Style $this->_set_style("background_image", "none", $important); $this->_set_style("background_color", "transparent", $important); } else { - $pos = array(); + $pos = []; $tmp = preg_replace("/\s*\,\s*/", ",", $val); // when rgb() has spaces $tmp = preg_split("/\s+/", $tmp); foreach ($tmp as $attr) { if (mb_substr($attr, 0, 3) === "url" || $attr === "none") { - $this->_set_style("background_image", $this->_image($attr), $important); + $this->_set_style("background_image", $attr, $important); } elseif ($attr === "fixed" || $attr === "scroll") { $this->_set_style("background_attachment", $attr, $important); } elseif ($attr === "repeat" || $attr === "repeat-x" || $attr === "repeat-y" || $attr === "no-repeat") { @@ -1939,8 +2067,9 @@ class Style } //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["background"] = null; $this->_props["background"] = $val; + $this->_props_computed["background"] = $val; + $this->_prop_cache["background"] = null; } /** @@ -1953,10 +2082,84 @@ class Style */ function set_font_size($size) { - $this->__font_size_calculated = false; - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["font_size"] = null; $this->_props["font_size"] = $size; + $this->_props_computed["font_size"] = null; + $this->_prop_cache["font_size"] = null; + + if ($size === "inherit") { + $this->_props_computed["font_size"] = $size; + return; + } + if (!isset($this->_parent_font_size)) { + $this->_parent_font_size = self::$default_font_size; + } + + switch ((string)$size) { + case "xx-small": + case "x-small": + case "small": + case "medium": + case "large": + case "x-large": + case "xx-large": + $fs = self::$default_font_size * self::$font_size_keywords[$size]; + break; + + case "smaller": + $fs = 8 / 9 * $this->_parent_font_size; + break; + + case "larger": + $fs = 6 / 5 * $this->_parent_font_size; + break; + + default: + $fs = $size; + break; + } + + // length_in_pt uses the font size if units are em or ex (and, potentially, rem) so we'll calculate in the method + if (($i = mb_strpos($fs, "rem")) !== false) { + if ($this->_stylesheet->get_dompdf()->getTree()->get_root()->get_style() === null) { + // Interpreting it as "em", see https://github.com/dompdf/dompdf/issues/1406 + $fs = (float)mb_substr($fs, 0, $i) * $this->_parent_font_size; + } else { + $fs = (float)mb_substr($fs, 0, $i) * $this->_stylesheet->get_dompdf()->getTree()->get_root()->get_style()->font_size; + } + } elseif (($i = mb_strpos($fs, "em")) !== false) { + $fs = (float)mb_substr($fs, 0, $i) * $this->_parent_font_size; + } elseif (($i = mb_strpos($fs, "ex")) !== false) { + $fs = (float)mb_substr($fs, 0, $i) * $this->_parent_font_size / 2; + } else { + //FIXME: prefer just calling length_in_pt, when we provide a ref size to length_in_pt should em and ex use that instead of the current font size? + $fs = (float)$this->length_in_pt($fs, $this->_parent_font_size); + } + + $this->_props_computed["font_size"] = $fs; + } + + /** + * Sets the font weight + * + * @param string|int $weight + */ + function set_font_weight($weight) + { + $this->_props["font_weight"] = $weight; + $this->_props_computed["font_weight"] = null; + $this->_prop_cache["font_weight"] = null; + + $computed_weight = $weight; + + if ($weight === "bolder") { + //TODO: One font weight heavier than the parent element (among the available weights of the font). + $computed_weight = "bold"; + } elseif ($weight === "lighter") { + //TODO: One font weight lighter than the parent element (among the available weights of the font). + $computed_weight = "normal"; + } + + $this->_props_computed["font_weight"] = $computed_weight; } /** @@ -1985,25 +2188,30 @@ class Style */ function set_font($val) { - $this->__font_size_calculated = false; //see __set and __get, on all assignments clear cache, not needed on direct set through __set $this->_prop_cache["font"] = null; $this->_props["font"] = $val; $important = isset($this->_important_props["font"]); + if (strtolower($val) === "inherit") { + $this->_set_style("font_family", "inherit", $important); + $this->_set_style("font_size", "inherit", $important); + $this->_set_style("font_style", "inherit", $important); + $this->_set_style("font_variant", "inherit", $important); + $this->_set_style("font_weight", "inherit", $important); + $this->_set_style("line_height", "inherit", $important); + return; + } + if (preg_match("/^(italic|oblique|normal)\s*(.*)$/i", $val, $match)) { $this->_set_style("font_style", $match[1], $important); $val = $match[2]; - } else { - $this->_set_style("font_style", self::$_defaults["font_style"], $important); } if (preg_match("/^(small-caps|normal)\s*(.*)$/i", $val, $match)) { $this->_set_style("font_variant", $match[1], $important); $val = $match[2]; - } else { - $this->_set_style("font_variant", self::$_defaults["font_variant"], $important); } //matching numeric value followed by unit -> this is indeed a subsequent font size. Skip! @@ -2012,8 +2220,6 @@ class Style ) { $this->_set_style("font_weight", $match[1], $important); $val = $match[2]; - } else { - $this->_set_style("font_weight", self::$_defaults["font_weight"], $important); } if (preg_match("/^(xx-small|x-small|small|medium|large|x-large|xx-large|smaller|larger|\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%))(?:\/|\s*)(.*)$/i", $val, $match)) { @@ -2022,18 +2228,30 @@ class Style if (preg_match("/^(?:\/|\s*)(\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%)?)\s*(.*)$/i", $val, $match)) { $this->_set_style("line_height", $match[1], $important); $val = $match[2]; - } else { - $this->_set_style("line_height", self::$_defaults["line_height"], $important); } - } else { - $this->_set_style("font_size", self::$_defaults["font_size"], $important); - $this->_set_style("line_height", self::$_defaults["line_height"], $important); } if (strlen($val) != 0) { $this->_set_style("font_family", $val, $important); + } + } + + /** + * Sets line height property + * + * @link http://www.w3.org/TR/CSS21/visudet.html#propdef-line-height + * @param $val + */ + function set_line_height($val) + { + $this->_props["line_height"] = $val; + $this->_props_computed["line_height"] = null; + $this->_prop_cache["line_height"] = null; + + if ($val === "inherit" || $val === "normal" || is_numeric($val)) { + $this->_props_computed["line_height"] = $val; } else { - $this->_set_style("font_family", self::$_defaults["font_family"], $important); + $this->_props_computed["line_height"] = ((float)$this->length_in_pt($val, $this->__get("font_size"))) . "pt"; } } @@ -2108,7 +2326,6 @@ class Style */ function set_margin($val) { - $val = str_replace("none", "0px", $val); $this->_set_style_type_important('margin', '', $val); } @@ -2152,7 +2369,6 @@ class Style */ function set_padding($val) { - $val = str_replace("none", "0px", $val); $this->_set_style_type_important('padding', '', $val); } /**#@-*/ @@ -2174,25 +2390,21 @@ class Style //For consistency of individual and combined properties, and with ie8 and firefox3 //reset all attributes, even if only partially given - $this->_set_style_side_type('border', $side, '_style', self::$_defaults['border_' . $side . '_style'], $important); - $this->_set_style_side_type('border', $side, '_width', self::$_defaults['border_' . $side . '_width'], $important); - $this->_set_style_side_type('border', $side, '_color', self::$_defaults['border_' . $side . '_color'], $important); + $this->_set_style_side_type('border', $side, 'style', self::$_defaults['border_' . $side . '_style'], $important); + $this->_set_style_side_type('border', $side, 'width', self::$_defaults['border_' . $side . '_width'], $important); + $this->_set_style_side_type('border', $side, 'color', self::$_defaults['border_' . $side . '_color'], $important); foreach ($arr as $value) { $value = trim($value); if (in_array($value, self::$BORDER_STYLES)) { - $this->_set_style_side_type('border', $side, '_style', $value, $important); + $this->_set_style_side_type('border', $side, 'style', $value, $important); } else if (preg_match("/[.0-9]+(?:px|pt|pc|em|ex|%|in|mm|cm)|(?:thin|medium|thick)/", $value)) { - $this->_set_style_side_type('border', $side, '_width', $value, $important); + $this->_set_style_side_type('border', $side, 'width', $value, $important); } else { // must be color - $this->_set_style_side_type('border', $side, '_color', $value, $important); + $this->_set_style_side_type('border', $side, 'color', $this->munge_color($value), $important); } } - - //see __set and __get, on all assignments clear cache! - $this->_prop_cache['border_' . $side] = null; - $this->_props['border_' . $side] = $border_spec; } /** @@ -2235,14 +2447,15 @@ class Style */ function set_border($val) { + $this->_prop_cache["border"] = null; + $this->_props["border"] = $val; + $this->_props_computed["border"] = $val; $important = isset($this->_important_props["border"]); + $this->_set_border("top", $val, $important); $this->_set_border("right", $val, $important); $this->_set_border("bottom", $val, $important); $this->_set_border("left", $val, $important); - //see __set and __get, on all assignments clear cache, not needed on direct set through __set - $this->_prop_cache["border"] = null; - $this->_props["border"] = $val; } /** @@ -2250,7 +2463,7 @@ class Style */ function set_border_width($val) { - $this->_set_style_type_important('border', '_width', $val); + $this->_set_style_type_important('border', 'width', $val); } /** @@ -2258,7 +2471,7 @@ class Style */ function set_border_color($val) { - $this->_set_style_type_important('border', '_color', $val); + $this->_set_style_type_important('border', 'color', $val); } /** @@ -2266,7 +2479,7 @@ class Style */ function set_border_style($val) { - $this->_set_style_type_important('border', '_style', $val); + $this->_set_style_type_important('border', 'style', $val); } /** @@ -2412,11 +2625,11 @@ class Style { $important = isset($this->_important_props["outline"]); - $props = array( + $props = [ "outline_style", "outline_width", "outline_color", - ); + ]; foreach ($props as $prop) { $_val = self::$_defaults[$prop]; @@ -2449,6 +2662,7 @@ class Style //see __set and __get, on all assignments clear cache, not needed on direct set through __set $this->_prop_cache["outline"] = null; $this->_props["outline"] = $val; + $this->_props_computed["outline"] = $val; } /** @@ -2456,7 +2670,7 @@ class Style */ function set_outline_width($val) { - $this->_set_style_type_important('outline', '_width', $val); + $this->_set_style_side_type("outline", null, "width", $val, isset($this->_important_props["outline_width"])); } /** @@ -2464,7 +2678,7 @@ class Style */ function set_outline_color($val) { - $this->_set_style_type_important('outline', '_color', $val); + $this->_set_style_side_type("outline", null, "color", $val, isset($this->_important_props["outline_color"])); } /** @@ -2472,7 +2686,7 @@ class Style */ function set_outline_style($val) { - $this->_set_style_type_important('outline', '_style', $val); + $this->_set_style_side_type("outline", null, "style", $val, isset($this->_important_props["outline_style"])); } /** @@ -2518,7 +2732,7 @@ class Style $important = isset($this->_important_props["list_style"]); $arr = explode(" ", str_replace(",", " ", $val)); - static $types = array( + static $types = [ "disc", "circle", "square", "decimal-leading-zero", "decimal", "1", "lower-roman", "upper-roman", "a", "A", @@ -2528,9 +2742,9 @@ class Style "armenian", "georgian", "hebrew", "cjk-ideographic", "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", "none" - ); + ]; - static $positions = array("inside", "outside"); + static $positions = ["inside", "outside"]; foreach ($arr as $value) { /* http://www.w3.org/TR/CSS21/generate.html#list-style @@ -2569,17 +2783,22 @@ class Style */ function set_size($val) { + $this->_props["size"] = $val; + $this->_props_computed["size"] = null; + $this->_prop_cache["size"] = null; + $length_re = "/(\d+\s*(?:pt|px|pc|em|ex|in|cm|mm|%))/"; $val = mb_strtolower($val); if ($val === "auto") { + $this->_props["size"] = $val; return; } $parts = preg_split("/\s+/", $val); - $computed = array(); + $computed = []; if (preg_match($length_re, $parts[0])) { $computed[] = $this->length_in_pt($parts[0]); @@ -2602,7 +2821,7 @@ class Style return; } - $this->_props["size"] = $computed; + $this->_props_computed["size"] = $computed; } /** @@ -2621,7 +2840,7 @@ class Style return null; } - $functions = array( + $functions = [ //"matrix" => "\($number,$number,$number,$number,$number,$number\)", "translate" => "\($tr_value(?:,$tr_value)?\)", @@ -2637,9 +2856,9 @@ class Style "skew" => "\($angle(?:,$angle)?\)", "skewX" => "\($angle\)", "skewY" => "\($angle\)", - ); + ]; - $transforms = array(); + $transforms = []; foreach ($parts as $part) { $t = $part[0]; @@ -2671,11 +2890,11 @@ class Style break; case "skewX": $name = "skew"; - $values = array($values[0], 0); + $values = [$values[0], 0]; break; case "skewY": $name = "skew"; - $values = array(0, $values[0]); + $values = [0, $values[0]]; break; } break; @@ -2693,12 +2912,12 @@ class Style case "translateX": $name = "translate"; - $values = array($this->length_in_pt($values[0], (float)$this->length_in_pt($this->width)), 0); + $values = [$this->length_in_pt($values[0], (float)$this->length_in_pt($this->width)), 0]; break; case "translateY": $name = "translate"; - $values = array(0, $this->length_in_pt($values[0], (float)$this->length_in_pt($this->height))); + $values = [0, $this->length_in_pt($values[0], (float)$this->length_in_pt($this->height))]; break; // <number> units @@ -2710,19 +2929,19 @@ class Style case "scaleX": $name = "scale"; - $values = array($values[0], 1.0); + $values = [$values[0], 1.0]; break; case "scaleY": $name = "scale"; - $values = array(1.0, $values[0]); + $values = [1.0, $values[0]]; break; } - $transforms[] = array( + $transforms[] = [ $name, $values, - ); + ]; } } } @@ -2783,9 +3002,9 @@ class Style } $values = array_map(function($value) { - if (in_array($value, array("top", "left"))) { + if (in_array($value, ["top", "left"])) { return 0; - } else if (in_array($value, array("bottom", "right"))) { + } else if (in_array($value, ["bottom", "right"])) { return "100%"; } else { return $value; @@ -2872,29 +3091,6 @@ class Style $this->_props["z_index"] = $val; } - /** - * @param $val - */ - function set_counter_increment($val) - { - $val = trim($val); - $value = null; - - if (in_array($val, array("none", "inherit"))) { - $value = $val; - } else { - if (preg_match_all("/(" . self::CSS_IDENTIFIER . ")(?:\s+(" . self::CSS_INTEGER . "))?/", $val, $matches, PREG_SET_ORDER)) { - $value = array(); - foreach ($matches as $match) { - $value[$match[1]] = isset($match[2]) ? $match[2] : 1; - } - } - } - - $this->_prop_cache["counter_increment"] = null; - $this->_props["counter_increment"] = $value; - } - /** * @param FontMetrics $fontMetrics * @return $this @@ -2924,29 +3120,36 @@ class Style /*DEBUGCSS print: see below additional debugging util*/ function __toString() { - return print_r(array_merge(array("parent_font_size" => $this->_parent_font_size), + return print_r(array_merge(["parent_font_size" => $this->_parent_font_size], $this->_props), true); } /*DEBUGCSS*/ function debug_print() { - /*DEBUGCSS*/ - print "parent_font_size:" . $this->_parent_font_size . ";\n"; - /*DEBUGCSS*/ + print " parent_font_size:" . $this->_parent_font_size . ";\n"; + print " Props [\n"; + print " specified [\n"; foreach ($this->_props as $prop => $val) { - /*DEBUGCSS*/ - print $prop . ':' . $val; - /*DEBUGCSS*/ + print ' ' . $prop . ': ' . preg_replace("/\r\n/", ' ', print_r($val, true)); if (isset($this->_important_props[$prop])) { - /*DEBUGCSS*/ - print '!important'; - /*DEBUGCSS*/ + print ' !important'; } - /*DEBUGCSS*/ print ";\n"; - /*DEBUGCSS*/ } - /*DEBUGCSS*/ + print " ]\n"; + print " computed [\n"; + foreach ($this->_props_computed as $prop => $val) { + print ' ' . $prop . ': ' . preg_replace("/\r\n/", ' ', print_r($val, true)); + print ";\n"; + } + print " ]\n"; + print " cached [\n"; + foreach ($this->_prop_cache as $prop => $val) { + print ' ' . $prop . ': ' . preg_replace("/\r\n/", ' ', print_r($val, true)); + print ";\n"; + } + print " ]\n"; + print " ]\n"; } } diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php b/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php index 9d1a1eceee..103747b5f6 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php +++ b/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php @@ -66,11 +66,11 @@ class Stylesheet * not support user stylesheets, and user agent stylesheets can not include * important declarations. */ - private static $_stylesheet_origins = array( + private static $_stylesheet_origins = [ self::ORIG_UA => 0x00000000, // user agent declarations self::ORIG_USER => 0x10000000, // user normal declarations self::ORIG_AUTHOR => 0x30000000, // author normal declarations - ); + ]; /* * Non-CSS presentational hints (i.e. HTML 4 attributes) are handled as if added @@ -152,8 +152,8 @@ class Stylesheet * (Previous version $ACCEPTED_MEDIA_TYPES = $ACCEPTED_GENERIC_MEDIA_TYPES + $ACCEPTED_DEFAULT_MEDIA_TYPE) */ static $ACCEPTED_DEFAULT_MEDIA_TYPE = "print"; - static $ACCEPTED_GENERIC_MEDIA_TYPES = array("all", "static", "visual", "bitmap", "paged", "dompdf"); - static $VALID_MEDIA_TYPES = array("all", "aural", "bitmap", "braille", "dompdf", "embossed", "handheld", "paged", "print", "projection", "screen", "speech", "static", "tty", "tv", "visual"); + static $ACCEPTED_GENERIC_MEDIA_TYPES = ["all", "static", "visual", "bitmap", "paged", "dompdf"]; + static $VALID_MEDIA_TYPES = ["all", "aural", "bitmap", "braille", "dompdf", "embossed", "handheld", "paged", "print", "projection", "screen", "speech", "static", "tty", "tv", "visual"]; /** * @var FontMetrics @@ -170,14 +170,14 @@ class Stylesheet { $this->_dompdf = $dompdf; $this->setFontMetrics($dompdf->getFontMetrics()); - $this->_styles = array(); - $this->_loaded_files = array(); + $this->_styles = []; + $this->_loaded_files = []; $script = __FILE__; if(isset($_SERVER["SCRIPT_FILENAME"])){ $script = $_SERVER["SCRIPT_FILENAME"]; } list($this->_protocol, $this->_base_host, $this->_base_path) = Helpers::explode_url($script); - $this->_page_styles = array("base" => new Style($this)); + $this->_page_styles = ["base" => new Style($this)]; } /** @@ -277,7 +277,7 @@ class Stylesheet } if (!isset($this->_styles[$key])) { - $this->_styles[$key] = array(); + $this->_styles[$key] = []; } $new_style = clone $style; $new_style->set_origin($this->_current_origin); @@ -312,7 +312,10 @@ class Stylesheet */ function create_style(Style $parent = null) { - return new Style($this, $this->_current_origin); + if ($parent == null) { + $parent = $this; + } + return new Style($parent, $this->_current_origin); } /** @@ -379,7 +382,7 @@ class Stylesheet } } - if (!$good_mime_type || $css == "") { + if (!$good_mime_type || empty($css)) { Helpers::record_warnings(E_USER_WARNING, "Unable to load css file $file", __FILE__, __LINE__); return; } @@ -422,7 +425,7 @@ class Stylesheet //this can lead to a too small specificity //see _css_selector_to_xpath - if (!in_array($selector[0], array(" ", ">", ".", "#", "+", ":", "[")) && $selector !== "*") { + if (!in_array($selector[0], [" ", ">", ".", "#", "+", ":", "["]) && $selector !== "*") { $d++; } @@ -459,15 +462,15 @@ class Stylesheet $query = "//"; // Will contain :before and :after - $pseudo_elements = array(); + $pseudo_elements = []; // Will contain :link, etc - $pseudo_classes = array(); + $pseudo_classes = []; // Parse the selector //$s = preg_split("/([ :>.#+])/", $selector, -1, PREG_SPLIT_DELIM_CAPTURE); - $delimiters = array(" ", ">", ".", "#", "+", ":", "[", "("); + $delimiters = [" ", ">", ".", "#", "+", ":", "[", "("]; // Add an implicit * at the beginning of the selector // if it begins with an attribute selector @@ -757,7 +760,7 @@ class Stylesheet case "[": // Attribute selectors. All with an attribute matching the following token(s) - $attr_delimiters = array("=", "]", "~", "|", "$", "^", "*"); + $attr_delimiters = ["=", "]", "~", "|", "$", "^", "*"]; $tok_len = mb_strlen($tok); $j = 0; @@ -889,7 +892,7 @@ class Stylesheet $query = rtrim($query, "/"); } - return array("query" => $query, "pseudo_elements" => $pseudo_elements); + return ["query" => $query, "pseudo_elements" => $pseudo_elements]; } /** @@ -946,7 +949,7 @@ class Stylesheet // FIXME: this is not particularly robust... - $styles = array(); + $styles = []; $xp = new DOMXPath($tree->get_dom()); $DEBUGCSS = $this->_dompdf->getOptions()->getDebugCss(); @@ -1089,21 +1092,21 @@ class Stylesheet if (isset($styles[$id])) { /** @var array[][] $applied_styles */ - $applied_styles = $styles[$frame->get_id()]; + $applied_styles = $styles[$id]; // Sort by specificity ksort($applied_styles); if ($DEBUGCSS) { $debug_nodename = $frame->get_node()->nodeName; - print "<pre>\n[$debug_nodename\n"; + print "<pre>\n$debug_nodename [\n"; foreach ($applied_styles as $spec => $arr) { - printf("specificity: 0x%08x\n", $spec); + printf(" specificity 0x%08x\n", $spec); /** @var Style $s */ foreach ($arr as $s) { - print "[\n"; + print " [\n"; $s->debug_print(); - print "]\n"; + print " ]\n"; } } } @@ -1174,25 +1177,21 @@ class Stylesheet } } - // Inherit parent's styles if required + // Inherit parent's styles if parent exists if ($p) { - if ($DEBUGCSS) { - print "inherit:\n"; - print "[\n"; + print " inherit [\n"; $p->get_style()->debug_print(); - print "]\n"; + print " ]\n"; } - $style->inherit($p->get_style()); } if ($DEBUGCSS) { - print "DomElementStyle:\n"; - print "[\n"; + print " DomElementStyle [\n"; $style->debug_print(); - print "]\n"; - print "/$debug_nodename]\n</pre>"; + print " ]\n"; + print "]\n</pre>"; } /*DEBUGCSS print: see below different print debugging method @@ -1221,7 +1220,6 @@ class Stylesheet $this->_styles[$key] = null; unset($this->_styles[$key]); } - } /** @@ -1234,15 +1232,14 @@ class Stylesheet */ private function _parse_css($str) { - $str = trim($str); // Destroy comments and remove HTML comments - $css = preg_replace(array( + $css = preg_replace([ "'/\*.*?\*/'si", "/^<!--/", "/-->$/" - ), "", $str); + ], "", $str); // FIXME: handle '{' within strings, e.g. [attr="string {}"] @@ -1304,16 +1301,16 @@ class Stylesheet } elseif (!in_array($media_query, self::$VALID_MEDIA_TYPES)) { // otherwise conditionally parse the stylesheet assuming there are parseable media queries if (preg_match_all($media_query_regex, $media_query, $media_query_matches, PREG_SET_ORDER) !== false) { - $mq = array(); + $mq = []; foreach ($media_query_matches as $media_query_match) { if (empty($media_query_match[1]) === false) { $media_query_feature = strtolower($media_query_match[3]); $media_query_value = strtolower($media_query_match[2]); - $mq[] = array($media_query_feature, $media_query_value); + $mq[] = [$media_query_feature, $media_query_value]; } else if (empty($media_query_match[4]) === false) { $media_query_feature = strtolower($media_query_match[5]); $media_query_value = (array_key_exists(8, $media_query_match) ? strtolower($media_query_match[8]) : null); - $mq[] = array($media_query_feature, $media_query_value); + $mq[] = [$media_query_feature, $media_query_value]; } } $this->_parse_sections($match[5], $mq); @@ -1359,6 +1356,7 @@ class Stylesheet /** @noinspection PhpMissingBreakStatementInspection */ case ":first": $key = $page_selector; + break; default: break 2; @@ -1387,7 +1385,6 @@ class Stylesheet if ($match[7] !== "") { $this->_parse_sections($match[7]); } - } } @@ -1490,7 +1487,6 @@ class Stylesheet $this->_base_host = $host; $this->_base_path = $path; } - } /** @@ -1505,18 +1501,18 @@ class Stylesheet preg_match_all("/(url|local)\s*\([\"\']?([^\"\'\)]+)[\"\']?\)\s*(format\s*\([\"\']?([^\"\'\)]+)[\"\']?\))?/i", $descriptors->src, $src); - $sources = array(); - $valid_sources = array(); + $sources = []; + $valid_sources = []; foreach ($src[0] as $i => $value) { - $source = array( + $source = [ "local" => strtolower($src[1][$i]) === "local", "uri" => $src[2][$i], "format" => strtolower($src[4][$i]), "path" => Helpers::build_url($this->_protocol, $this->_base_host, $this->_base_path, $src[2][$i]), - ); + ]; - if (!$source["local"] && in_array($source["format"], array("", "truetype"))) { + if (!$source["local"] && in_array($source["format"], ["", "truetype"])) { $valid_sources[] = $source; } @@ -1528,11 +1524,11 @@ class Stylesheet return; } - $style = array( + $style = [ "family" => $descriptors->get_font_family_raw(), "weight" => $descriptors->font_weight, "style" => $descriptors->font_style, - ); + ]; $this->getFontMetrics()->registerFont($style, $valid_sources[0]["path"], $this->_dompdf->getHttpContext()); } @@ -1633,13 +1629,13 @@ class Stylesheet * @param string $str CSS selectors and rulesets * @param array $media_queries */ - private function _parse_sections($str, $media_queries = array()) + private function _parse_sections($str, $media_queries = []) { // Pre-process: collapse all whitespace and strip whitespace around '>', // '.', ':', '+', '#' - $patterns = array("/[\\s\n]+/", "/\\s+([>.:+#])\\s+/"); - $replacements = array(" ", "\\1"); + $patterns = ["/[\\s\n]+/", "/\\s+([>.:+#])\\s+/"]; + $replacements = [" ", "\\1"]; $str = preg_replace($patterns, $replacements, $str); $DEBUGCSS = $this->_dompdf->getOptions()->getDebugCss(); @@ -1650,7 +1646,7 @@ class Stylesheet if ($i === false) { continue; } //$selectors = explode(",", mb_substr($sect, 0, $i)); - $selectors = preg_split("/,(?![^\(]*\))/", mb_substr($sect, 0, $i),0, PREG_SPLIT_NO_EMPTY); + $selectors = preg_split("/,(?![^\(]*\))/", mb_substr($sect, 0, $i), 0, PREG_SPLIT_NO_EMPTY); if ($DEBUGCSS) print '[section'; $style = $this->_parse_properties(trim(mb_substr($sect, $i + 1))); @@ -1679,7 +1675,7 @@ class Stylesheet } if ($DEBUGCSS) { - print '_parse_sections]'; + print "_parse_sections]\n"; } } diff --git a/civicrm/vendor/dompdf/dompdf/src/Dompdf.php b/civicrm/vendor/dompdf/dompdf/src/Dompdf.php index 90d26ae226..1b4c157073 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Dompdf.php +++ b/civicrm/vendor/dompdf/dompdf/src/Dompdf.php @@ -19,6 +19,7 @@ use HTML5_TreeBuilder; use Dompdf\Image\Cache; use Dompdf\Renderer\ListBullet; use Dompdf\Css\Stylesheet; +use Dompdf\Helpers; /** * Dompdf - PHP5 HTML to PDF renderer @@ -123,7 +124,7 @@ class Dompdf * * @var array */ - private $callbacks = array(); + private $callbacks = []; /** * Experimental caching capability @@ -196,10 +197,10 @@ class Dompdf * * @var array */ - private $defaultViewOptions = array(); + private $defaultViewOptions = []; /** - * Tells wether the DOM document is in quirksmode (experimental) + * Tells whether the DOM document is in quirksmode (experimental) * * @var bool */ @@ -213,7 +214,7 @@ class Dompdf * * @var array */ - private $allowedProtocols = array(null, "", "file://", "http://", "https://"); + private $allowedProtocols = [null, "", "file://", "http://", "https://"]; /** * Local file extension whitelist @@ -222,12 +223,12 @@ class Dompdf * * @var array */ - private $allowedLocalFileExtensions = array("htm", "html"); + private $allowedLocalFileExtensions = ["htm", "html"]; /** * @var array */ - private $messages = array(); + private $messages = []; /** * @var Options @@ -245,24 +246,24 @@ class Dompdf * @var array * @deprecated */ - public static $native_fonts = array( + public static $native_fonts = [ "courier", "courier-bold", "courier-oblique", "courier-boldoblique", "helvetica", "helvetica-bold", "helvetica-oblique", "helvetica-boldoblique", "times-roman", "times-bold", "times-italic", "times-bolditalic", "symbol", "zapfdinbats" - ); + ]; /** * The list of built-in fonts * * @var array */ - public static $nativeFonts = array( + public static $nativeFonts = [ "courier", "courier-bold", "courier-oblique", "courier-boldoblique", "helvetica", "helvetica-bold", "helvetica-oblique", "helvetica-boldoblique", "times-roman", "times-bold", "times-italic", "times-bolditalic", "symbol", "zapfdinbats" - ); + ]; /** * Class constructor @@ -275,7 +276,7 @@ class Dompdf if (version_compare(PHP_VERSION, '7.0.0') >= 0) { - ini_set('pcre.jit', 0); + @ini_set('pcre.jit', 0); } if (isset($options) && $options instanceof Options) { @@ -343,15 +344,16 @@ class Dompdf * Parse errors are stored in the global array _dompdf_warnings. * * @param string $file a filename or url to load + * @param string $encoding Encoding of $file * * @throws Exception */ - public function loadHtmlFile($file) + public function loadHtmlFile($file, $encoding = null) { $this->saveLocale(); if (!$this->protocol && !$this->baseHost && !$this->basePath) { - list($this->protocol, $this->baseHost, $this->basePath) = Helpers::explode_url($file); + [$this->protocol, $this->baseHost, $this->basePath] = Helpers::explode_url($file); } $protocol = strtolower($this->protocol); @@ -383,8 +385,10 @@ class Dompdf $file = $realfile; } - list($contents, $http_response_header) = Helpers::getFileContent($file, $this->httpContext); - $encoding = 'UTF-8'; + [$contents, $http_response_header] = Helpers::getFileContent($file, $this->httpContext); + if (empty($contents)) { + throw new Exception("File '$file' not found."); + } // See http://the-stickman.com/web-development/php/getting-http-response-headers-when-using-file_get_contents/ if (isset($http_response_header)) { @@ -406,7 +410,7 @@ class Dompdf * @param string $encoding * @deprecated */ - public function load_html($str, $encoding = 'UTF-8') + public function load_html($str, $encoding = null) { $this->loadHtml($str, $encoding); } @@ -414,47 +418,51 @@ class Dompdf /** * Loads an HTML string * Parse errors are stored in the global array _dompdf_warnings. - * @todo use the $encoding variable * * @param string $str HTML text to load - * @param string $encoding Not used yet + * @param string $encoding Encoding of $str */ - public function loadHtml($str, $encoding = 'UTF-8') + public function loadHtml($str, $encoding = null) { $this->saveLocale(); - // FIXME: Determine character encoding, switch to UTF8, update meta tag. Need better http/file stream encoding detection, currently relies on text or meta tag. - $known_encodings = mb_list_encodings(); - mb_detect_order('auto'); - if (($file_encoding = mb_detect_encoding($str, null, true)) === false) { - $file_encoding = "auto"; + // Determine character encoding when $encoding parameter not used + if ($encoding === null) { + mb_detect_order('auto'); + if (($encoding = mb_detect_encoding($str, null, true)) === false) { + + //"auto" is expanded to "ASCII,JIS,UTF-8,EUC-JP,SJIS" + $encoding = "auto"; + } } - if (in_array(strtoupper($file_encoding), array('UTF-8','UTF8')) === false) { - $str = mb_convert_encoding($str, 'UTF-8', $file_encoding); + + if (in_array(strtoupper($encoding), array('UTF-8','UTF8')) === false) { + $str = mb_convert_encoding($str, 'UTF-8', $encoding); + + //Update encoding after converting + $encoding = 'UTF-8'; } - $metatags = array( + $metatags = [ '@<meta\s+http-equiv="Content-Type"\s+content="(?:[\w/]+)(?:;\s*?charset=([^\s"]+))?@i', '@<meta\s+content="(?:[\w/]+)(?:;\s*?charset=([^\s"]+))"?\s+http-equiv="Content-Type"@i', '@<meta [^>]*charset\s*=\s*["\']?\s*([^"\' ]+)@i', - ); + ]; foreach ($metatags as $metatag) { if (preg_match($metatag, $str, $matches)) { - if (isset($matches[1]) && in_array($matches[1], $known_encodings)) { + if (isset($matches[1]) && in_array($matches[1], mb_list_encodings())) { $document_encoding = $matches[1]; break; } } } - if (isset($document_encoding) && in_array(strtoupper($document_encoding), array('UTF-8','UTF8')) === false) { + if (isset($document_encoding) && in_array(strtoupper($document_encoding), ['UTF-8','UTF8']) === false) { $str = preg_replace('/charset=([^\s"]+)/i', 'charset=UTF-8', $str); } elseif (isset($document_encoding) === false && strpos($str, '<head>') !== false) { $str = str_replace('<head>', '<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">', $str); } elseif (isset($document_encoding) === false) { $str = '<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">' . $str; } - //FIXME: since we're not using this just yet - $encoding = 'UTF-8'; // remove BOM mark from UTF-8, it's treated as document text by DOMDocument // FIXME: roll this into the encoding detection using UTF-8/16/32 BOM (http://us2.php.net/manual/en/function.mb-detect-encoding.php#91051)? @@ -463,75 +471,76 @@ class Dompdf } // Store parsing warnings as messages - set_error_handler(array("\\Dompdf\\Helpers", "record_warnings")); - - // @todo Take the quirksmode into account - // http://hsivonen.iki.fi/doctype/ - // https://developer.mozilla.org/en/mozilla's_quirks_mode - $quirksmode = false; - - if ($this->options->isHtml5ParserEnabled() && class_exists("HTML5_Tokenizer")) { - $tokenizer = new HTML5_Tokenizer($str); - $tokenizer->parse(); - $doc = $tokenizer->save(); - - // Remove #text children nodes in nodes that shouldn't have - $tag_names = array("html", "table", "tbody", "thead", "tfoot", "tr"); - foreach ($tag_names as $tag_name) { - $nodes = $doc->getElementsByTagName($tag_name); - - foreach ($nodes as $node) { - self::removeTextNodes($node); - } - } - - $quirksmode = ($tokenizer->getTree()->getQuirksMode() > HTML5_TreeBuilder::NO_QUIRKS); - } else { - // loadHTML assumes ISO-8859-1 unless otherwise specified on the HTML document header. - // http://devzone.zend.com/1538/php-dom-xml-extension-encoding-processing/ (see #4) - // http://stackoverflow.com/a/11310258/264628 - $doc = new DOMDocument("1.0", $encoding); - $doc->preserveWhiteSpace = true; - $doc->loadHTML($str); - $doc->encoding = $encoding; - - // Remove #text children nodes in nodes that shouldn't have - $tag_names = array("html", "table", "tbody", "thead", "tfoot", "tr"); - foreach ($tag_names as $tag_name) { - $nodes = $doc->getElementsByTagName($tag_name); - - foreach ($nodes as $node) { - self::removeTextNodes($node); + set_error_handler([Helpers::class, 'record_warnings']); + + try { + // @todo Take the quirksmode into account + // http://hsivonen.iki.fi/doctype/ + // https://developer.mozilla.org/en/mozilla's_quirks_mode + $quirksmode = false; + + if ($this->options->isHtml5ParserEnabled() && class_exists(HTML5_Tokenizer::class)) { + $tokenizer = new HTML5_Tokenizer($str); + $tokenizer->parse(); + $doc = $tokenizer->save(); + + // Remove #text children nodes in nodes that shouldn't have + $tag_names = ["html", "head", "table", "tbody", "thead", "tfoot", "tr"]; + foreach ($tag_names as $tag_name) { + $nodes = $doc->getElementsByTagName($tag_name); + + foreach ($nodes as $node) { + self::removeTextNodes($node); + } } - } - // If some text is before the doctype, we are in quirksmode - if (preg_match("/^(.+)<!doctype/i", ltrim($str), $matches)) { - $quirksmode = true; - } // If no doctype is provided, we are in quirksmode - elseif (!preg_match("/^<!doctype/i", ltrim($str), $matches)) { - $quirksmode = true; + $quirksmode = ($tokenizer->getTree()->getQuirksMode() > HTML5_TreeBuilder::NO_QUIRKS); } else { - // HTML5 <!DOCTYPE html> - if (!$doc->doctype->publicId && !$doc->doctype->systemId) { - $quirksmode = false; + // loadHTML assumes ISO-8859-1 unless otherwise specified on the HTML document header. + // http://devzone.zend.com/1538/php-dom-xml-extension-encoding-processing/ (see #4) + // http://stackoverflow.com/a/11310258/264628 + $doc = new DOMDocument("1.0", $encoding); + $doc->preserveWhiteSpace = true; + $doc->loadHTML($str); + $doc->encoding = $encoding; + + // Remove #text children nodes in nodes that shouldn't have + $tag_names = ["html", "head", "table", "tbody", "thead", "tfoot", "tr"]; + foreach ($tag_names as $tag_name) { + $nodes = $doc->getElementsByTagName($tag_name); + + foreach ($nodes as $node) { + self::removeTextNodes($node); + } } - // not XHTML - if (!preg_match("/xhtml/i", $doc->doctype->publicId)) { + // If some text is before the doctype, we are in quirksmode + if (preg_match("/^(.+)<!doctype/i", ltrim($str), $matches)) { $quirksmode = true; + } // If no doctype is provided, we are in quirksmode + elseif (!preg_match("/^<!doctype/i", ltrim($str), $matches)) { + $quirksmode = true; + } else { + // HTML5 <!DOCTYPE html> + if (!$doc->doctype->publicId && !$doc->doctype->systemId) { + $quirksmode = false; + } + + // not XHTML + if (!preg_match("/xhtml/i", $doc->doctype->publicId)) { + $quirksmode = true; + } } } - } - - $this->dom = $doc; - $this->quirksmode = $quirksmode; - $this->tree = new FrameTree($this->dom); + $this->dom = $doc; + $this->quirksmode = $quirksmode; - restore_error_handler(); - - $this->restoreLocale(); + $this->tree = new FrameTree($this->dom); + } finally { + restore_error_handler(); + $this->restoreLocale(); + } } /** @@ -548,7 +557,7 @@ class Dompdf */ public static function removeTextNodes(DOMNode $node) { - $children = array(); + $children = []; for ($i = 0; $i < $node->childNodes->length; $i++) { $child = $node->childNodes->item($i); if ($child->nodeName === "#text") { @@ -577,7 +586,7 @@ class Dompdf // <base href="" /> $base_nodes = $this->dom->getElementsByTagName("base"); if ($base_nodes->length && ($href = $base_nodes->item(0)->getAttribute("href"))) { - list($this->protocol, $this->baseHost, $this->basePath) = Helpers::explode_url($href); + [$this->protocol, $this->baseHost, $this->basePath] = Helpers::explode_url($href); } // Set the base path of the Stylesheet to that of the file being processed @@ -688,7 +697,7 @@ class Dompdf */ public function parseDefaultView($value) { - $valid = array("XYZ", "Fit", "FitH", "FitV", "FitR", "FitB", "FitBH", "FitBV"); + $valid = ["XYZ", "Fit", "FitH", "FitV", "FitR", "FitB", "FitBH", "FitBV"]; $options = preg_split("/\s*,\s*/", trim($value)); $defaultView = array_shift($options); @@ -739,7 +748,7 @@ class Dompdf // recreation need if (is_array($basePageStyle->size)) { $basePageStyleSize = $basePageStyle->size; - $this->setPaper(array(0, 0, $basePageStyleSize[0], $basePageStyleSize[1])); + $this->setPaper([0, 0, $basePageStyleSize[0], $basePageStyleSize[1]]); } $paperSize = $this->getPaperSize(); @@ -820,11 +829,11 @@ class Dompdf } $metas = $this->dom->getElementsByTagName("meta"); - $labels = array( + $labels = [ "author" => "Author", "keywords" => "Keywords", "description" => "Subject", - ); + ]; /** @var \DOMElement $meta */ foreach ($metas as $meta) { $name = mb_strtolower($meta->getAttribute("name")); @@ -840,7 +849,7 @@ class Dompdf } } - $root->set_containing_block(0, 0,$canvas->get_width(), $canvas->get_height()); + $root->set_containing_block(0, 0, $canvas->get_width(), $canvas->get_height()); $root->set_renderer(new Renderer($this)); // This is where the magic happens: @@ -928,7 +937,7 @@ class Dompdf * @param string $filename the name of the streamed file * @param array $options header options (see above) */ - public function stream($filename = "document.pdf", $options = array()) + public function stream($filename = "document.pdf", $options = []) { $this->saveLocale(); @@ -952,7 +961,7 @@ class Dompdf * * @return string|null */ - public function output($options = array()) + public function output($options = []) { $this->saveLocale(); @@ -1442,7 +1451,7 @@ class Dompdf public function setCallbacks($callbacks) { if (is_array($callbacks)) { - $this->callbacks = array(); + $this->callbacks = []; foreach ($callbacks as $c) { if (is_array($c) && isset($c['event']) && isset($c['f'])) { $event = $c['event']; diff --git a/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php b/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php index 712bd0acc6..7378078c25 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php +++ b/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php @@ -55,7 +55,7 @@ class FontMetrics * * @var array */ - protected $fontLookup = array(); + protected $fontLookup = []; /** * @var Options @@ -139,7 +139,7 @@ class FontMetrics $cacheData = require $this->getCacheFile(); - $this->fontLookup = array(); + $this->fontLookup = []; if (is_array($this->fontLookup)) { foreach ($cacheData as $key => $value) { $this->fontLookup[stripslashes($key)] = $value; @@ -173,28 +173,38 @@ class FontMetrics $fontname = mb_strtolower($style["family"]); $families = $this->getFontFamilies(); - $entry = array(); + $entry = []; if (isset($families[$fontname])) { $entry = $families[$fontname]; } $styleString = $this->getType("{$style['weight']} {$style['style']}"); - if (isset($entry[$styleString])) { - return true; - } $fontDir = $this->getOptions()->getFontDir(); $remoteHash = md5($remoteFile); - $localFile = $fontDir . DIRECTORY_SEPARATOR . $remoteHash; + + $prefix = $fontname . "_" . $styleString; + $prefix = preg_replace("/[^\\pL\d]+/u", "-", $prefix); + $prefix = trim($prefix, "-"); + if (function_exists('iconv')) { + $prefix = iconv('utf-8', 'us-ascii//TRANSLIT', $prefix); + } + $prefix = preg_replace("/[^-\w]+/", "", $prefix); + + $localFile = $fontDir . "/" . $prefix . "_" . $remoteHash; + + if (isset($entry[$styleString]) && $localFile == $entry[$styleString]) { + return true; + } $cacheEntry = $localFile; - $localFile .= ".".strtolower(pathinfo(parse_url($remoteFile, PHP_URL_PATH),PATHINFO_EXTENSION)); + $localFile .= ".".strtolower(pathinfo(parse_url($remoteFile, PHP_URL_PATH), PATHINFO_EXTENSION)); $entry[$styleString] = $cacheEntry; // Download the remote file list($remoteFileContent, $http_response_header) = @Helpers::getFileContent($remoteFile, $context); - if (false === $remoteFileContent) { + if (empty($remoteFileContent)) { return false; } @@ -262,7 +272,7 @@ class FontMetrics public function getTextWidth($text, $font, $size, $wordSpacing = 0.0, $charSpacing = 0.0) { // @todo Make sure this cache is efficient before enabling it - static $cache = array(); + static $cache = []; if ($text === "") { return 0; @@ -335,7 +345,7 @@ class FontMetrics */ public function getFont($familyRaw, $subtypeRaw = "normal") { - static $cache = array(); + static $cache = []; if (isset($cache[$familyRaw][$subtypeRaw])) { return $cache[$familyRaw][$subtypeRaw]; @@ -352,7 +362,7 @@ class FontMetrics $subtype = strtolower($subtypeRaw); if ($familyRaw) { - $family = str_replace(array("'", '"'), "", strtolower($familyRaw)); + $family = str_replace(["'", '"'], "", strtolower($familyRaw)); if (isset($this->fontLookup[$family][$subtype])) { return $cache[$familyRaw][$subtypeRaw] = $this->fontLookup[$family][$subtype]; @@ -412,7 +422,7 @@ class FontMetrics */ public function getFamily($family) { - $family = str_replace(array("'", '"'), "", mb_strtolower($family)); + $family = str_replace(["'", '"'], "", mb_strtolower($family)); if (isset($this->fontLookup[$family])) { return $this->fontLookup[$family]; @@ -437,19 +447,25 @@ class FontMetrics */ public function getType($type) { - if (preg_match("/bold/i", $type)) { - if (preg_match("/italic|oblique/i", $type)) { - $type = "bold_italic"; - } else { - $type = "bold"; - } - } elseif (preg_match("/italic|oblique/i", $type)) { - $type = "italic"; + if (preg_match('/bold/i', $type)) { + $weight = 700; + } elseif (preg_match('/([1-9]00)/', $type, $match)) { + $weight = (int)$match[0]; } else { - $type = "normal"; + $weight = 400; + } + $weight = $weight === 400 ? 'normal' : $weight; + $weight = $weight === 700 ? 'bold' : $weight; + + $style = preg_match('/italic|oblique/i', $type) ? 'italic' : null; + + if ($weight === 'normal' && $style !== null) { + return $style; } - return $type; + return $style === null + ? $weight + : $weight.'_'.$style; } /** @@ -495,7 +511,7 @@ class FontMetrics */ public function getCacheFile() { - return $this->getOptions()->getFontDir() . DIRECTORY_SEPARATOR . self::CACHE_FILE; + return $this->getOptions()->getFontDir() . '/' . self::CACHE_FILE; } /** diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame.php b/civicrm/vendor/dompdf/dompdf/src/Frame.php index 31ea00a1f4..ac38fa21ea 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Frame.php +++ b/civicrm/vendor/dompdf/dompdf/src/Frame.php @@ -145,7 +145,7 @@ class Frame /** * @var array */ - protected $_is_cache = array(); + protected $_is_cache = []; /** * Tells whether the frame was already pushed to the next page @@ -188,22 +188,22 @@ class Frame $this->_style = null; $this->_original_style = null; - $this->_containing_block = array( + $this->_containing_block = [ "x" => null, "y" => null, "w" => null, "h" => null, - ); + ]; $this->_containing_block[0] =& $this->_containing_block["x"]; $this->_containing_block[1] =& $this->_containing_block["y"]; $this->_containing_block[2] =& $this->_containing_block["w"]; $this->_containing_block[3] =& $this->_containing_block["h"]; - $this->_position = array( + $this->_position = [ "x" => null, "y" => null, - ); + ]; $this->_position[0] =& $this->_position["x"]; $this->_position[1] =& $this->_position["y"]; @@ -240,7 +240,7 @@ class Frame { $whitespace = $this->get_style()->white_space; - return in_array($whitespace, array("pre", "pre-wrap", "pre-line")); + return in_array($whitespace, ["pre", "pre-wrap", "pre-line"]); } /** @@ -306,7 +306,6 @@ class Frame $this->_original_style->dispose(); $this->_original_style = null; unset($this->_original_style); - } /** @@ -475,15 +474,24 @@ class Frame { $style = $this->_style; - return (float)$style->length_in_pt(array( - $style->height, - $style->margin_top, - $style->margin_bottom, - $style->border_top_width, - $style->border_bottom_width, - $style->padding_top, - $style->padding_bottom - ), $this->_containing_block["h"]); + return ( + (float)$style->length_in_pt( + [ + $style->height, + (float)$style->length_in_pt( + [ + $style->border_top_width, + $style->border_bottom_width, + $style->margin_top, + $style->margin_bottom, + $style->padding_top, + $style->padding_bottom + ], $this->_containing_block["w"] + ) + ], + $this->_containing_block["h"] + ) + ); } /** @@ -496,7 +504,7 @@ class Frame { $style = $this->_style; - return (float)$style->length_in_pt(array( + return (float)$style->length_in_pt([ $style->width, $style->margin_left, $style->margin_right, @@ -504,7 +512,7 @@ class Frame $style->border_right_width, $style->padding_left, $style->padding_right - ), $this->_containing_block["w"]); + ], $this->_containing_block["w"]); } /** @@ -514,15 +522,24 @@ class Frame { $style = $this->_style; - return (float)$style->length_in_pt(array( - //$style->height, - $style->margin_top, - $style->margin_bottom, - $style->border_top_width, - $style->border_bottom_width, - $style->padding_top, - $style->padding_bottom - ), $this->_containing_block["h"]); + return ( + (float)$style->length_in_pt( + [ + //$style->height, + (float)$style->length_in_pt( + [ + $style->border_top_width, + $style->border_bottom_width, + $style->margin_top, + $style->margin_bottom, + $style->padding_top, + $style->padding_bottom + ], $this->_containing_block["w"] + ) + ], + $this->_containing_block["h"] + ) + ); } /** @@ -536,25 +553,32 @@ class Frame $cb = $this->_containing_block; $x = $this->_position["x"] + - (float)$style->length_in_pt(array($style->margin_left, + (float)$style->length_in_pt( + [ + $style->margin_left, $style->border_left_width, - $style->padding_left), - $cb["w"]); + $style->padding_left + ], + $cb["w"] + ); $y = $this->_position["y"] + - (float)$style->length_in_pt(array($style->margin_top, + (float)$style->length_in_pt( + [ + $style->margin_top, $style->border_top_width, - $style->padding_top), - $cb["h"]); + $style->padding_top + ], + $cb["w"]); $w = $style->length_in_pt($style->width, $cb["w"]); $h = $style->length_in_pt($style->height, $cb["h"]); - return array(0 => $x, "x" => $x, + return [0 => $x, "x" => $x, 1 => $y, "y" => $y, 2 => $w, "w" => $w, - 3 => $h, "h" => $h); + 3 => $h, "h" => $h]; } /** @@ -568,29 +592,44 @@ class Frame $cb = $this->_containing_block; $x = $this->_position["x"] + - (float)$style->length_in_pt(array($style->margin_left, - $style->border_left_width), + (float)$style->length_in_pt( + [ + $style->margin_left, + $style->border_left_width + ], $cb["w"]); $y = $this->_position["y"] + - (float)$style->length_in_pt(array($style->margin_top, - $style->border_top_width), - $cb["h"]); - - $w = $style->length_in_pt(array($style->padding_left, - $style->width, - $style->padding_right), - $cb["w"]); - - $h = $style->length_in_pt(array($style->padding_top, - $style->height, - $style->padding_bottom), - $cb["h"]); - - return array(0 => $x, "x" => $x, + (float)$style->length_in_pt( + [ + $style->margin_top, + $style->border_top_width + ], + $cb["h"] + ); + + $w = $style->length_in_pt( + [ + $style->padding_left, + $style->width, + $style->padding_right + ], + $cb["w"] + ); + + $h = $style->length_in_pt( + [ + $style->padding_top, + $style->padding_bottom, + $style->length_in_pt($style->height, $cb["h"]) + ], + $cb["w"] + ); + + return [0 => $x, "x" => $x, 1 => $y, "y" => $y, 2 => $w, "w" => $w, - 3 => $h, "h" => $h); + 3 => $h, "h" => $h]; } /** @@ -605,26 +644,32 @@ class Frame $x = $this->_position["x"] + (float)$style->length_in_pt($style->margin_left, $cb["w"]); - $y = $this->_position["y"] + (float)$style->length_in_pt($style->margin_top, $cb["h"]); + $y = $this->_position["y"] + (float)$style->length_in_pt($style->margin_top, $cb["w"]); - $w = $style->length_in_pt(array($style->border_left_width, + $w = $style->length_in_pt( + [ + $style->border_left_width, $style->padding_left, $style->width, $style->padding_right, - $style->border_right_width), + $style->border_right_width + ], $cb["w"]); - $h = $style->length_in_pt(array($style->border_top_width, + $h = $style->length_in_pt( + [ + $style->border_top_width, $style->padding_top, - $style->height, $style->padding_bottom, - $style->border_bottom_width), - $cb["h"]); + $style->border_bottom_width, + $style->length_in_pt($style->height, $cb["h"]) + ], + $cb["w"]); - return array(0 => $x, "x" => $x, + return [0 => $x, "x" => $x, 1 => $y, "y" => $y, 2 => $w, "w" => $w, - 3 => $h, "h" => $h); + 3 => $h, "h" => $h]; } /** @@ -726,7 +771,7 @@ class Frame public function set_position($x = null, $y = null) { if (is_array($x)) { - list($x, $y) = array($x["x"], $x["y"]); + list($x, $y) = [$x["x"], $x["y"]]; } if (is_numeric($x)) { @@ -767,7 +812,7 @@ class Frame return in_array( "auto", - array( + [ $style->height, $style->margin_top, $style->margin_bottom, @@ -776,7 +821,7 @@ class Frame $style->padding_top, $style->padding_bottom, $this->_containing_block["h"] - ), + ], true ); } @@ -792,7 +837,7 @@ class Frame return in_array( "auto", - array( + [ $style->width, $style->margin_left, $style->margin_right, @@ -801,7 +846,7 @@ class Frame $style->padding_left, $style->padding_right, $this->_containing_block["w"] - ), + ], true ); } @@ -894,7 +939,7 @@ class Frame $white_space = $this->get_style()->white_space; - return $this->_is_cache["pre"] = in_array($white_space, array("pre", "pre-wrap")); + return $this->_is_cache["pre"] = in_array($white_space, ["pre", "pre-wrap"]); } /** @@ -1206,8 +1251,8 @@ class Frame $str .= "\n"; if (php_sapi_name() === "cli") { - $str = strip_tags(str_replace(array("<br/>", "<b>", "</b>"), - array("\n", "", ""), + $str = strip_tags(str_replace(["<br/>", "<b>", "</b>"], + ["\n", "", ""], $str)); } diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php index 1d25854394..944d12b224 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php +++ b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php @@ -34,7 +34,7 @@ class FrameTree * * @var array */ - protected static $HIDDEN_TAGS = array( + protected static $HIDDEN_TAGS = [ "area", "base", "basefont", @@ -46,7 +46,7 @@ class FrameTree "noembed", "param", "#comment" - ); + ]; /** * The main DomDocument @@ -86,7 +86,7 @@ class FrameTree { $this->_dom = $dom; $this->_root = null; - $this->_registry = array(); + $this->_registry = []; } /** @@ -239,7 +239,7 @@ class FrameTree } // Store the children in an array so that the tree can be modified - $children = array(); + $children = []; $length = $node->childNodes->length; for ($i = 0; $i < $length; $i++) { $children[] = $node->childNodes->item($i); diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php index ebca7e99ff..d1d82c27e9 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php +++ b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php @@ -22,7 +22,7 @@ class FrameTreeIterator implements Iterator /** * @var array */ - protected $_stack = array(); + protected $_stack = []; /** * @var int @@ -43,7 +43,7 @@ class FrameTreeIterator implements Iterator */ public function rewind() { - $this->_stack = array($this->_root); + $this->_stack = [$this->_root]; $this->_num = 0; } diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php index 777fc3ce83..eb86341d4a 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php @@ -31,7 +31,7 @@ abstract class AbstractFrameDecorator extends Frame { const DEFAULT_COUNTER = "-dompdf-default-counter"; - public $_counters = array(); // array([id] => counter_value) (for generated content) + public $_counters = []; // array([id] => counter_value) (for generated content) /** * The root node of the DOM tree @@ -178,7 +178,7 @@ abstract class AbstractFrameDecorator extends Frame { $this->_frame->reset(); - $this->_counters = array(); + $this->_counters = []; $this->_cached_parent = null; //clear get_parent() cache diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php index b65b3e1048..481e587753 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php @@ -42,7 +42,7 @@ class Block extends AbstractFrameDecorator { parent::__construct($frame, $dompdf); - $this->_line_boxes = array(new LineBox($this)); + $this->_line_boxes = [new LineBox($this)]; $this->_cl = 0; } @@ -53,7 +53,7 @@ class Block extends AbstractFrameDecorator { parent::reset(); - $this->_line_boxes = array(new LineBox($this)); + $this->_line_boxes = [new LineBox($this)]; $this->_cl = 0; } @@ -135,7 +135,7 @@ class Block extends AbstractFrameDecorator if ($frame instanceof Inline) { // Handle line breaks if ($frame->get_node()->nodeName === "br") { - $this->maximize_line_height($style->length_in_pt($style->line_height), $frame); + $this->maximize_line_height($style->line_height, $frame); $this->add_line(true); } @@ -188,7 +188,11 @@ class Block extends AbstractFrameDecorator $current_line->add_frame($frame); if ($frame->is_text_node()) { - $current_line->wc += count(preg_split("/\s+/", trim($frame->get_text()))); + // split the text into words (used to determine spacing between words on justified lines) + // The regex splits on everything that's a separator (^\S double negative), excluding nbsp (\xa0) + // This currently excludes the "narrow nbsp" character + $words = preg_split('/[^\S\xA0]+/u', trim($frame->get_text())); + $current_line->wc += count($words); } $this->increase_line_width($w); diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php index e831fd85e1..5b39381015 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php @@ -93,7 +93,7 @@ class Inline extends AbstractFrameDecorator $split->append_child($frame); } - $page_breaks = array("always", "left", "right"); + $page_breaks = ["always", "left", "right"]; $frame_style = $frame->get_style(); if ($force_pagebreak || in_array($frame_style->page_break_before, $page_breaks) || diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php index 5b23118866..0479fc18f2 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php @@ -25,7 +25,7 @@ class ListBullet extends AbstractFrameDecorator const BULLET_DESCENT = 0.3; //descent of font below baseline. Todo: Guessed for now. const BULLET_SIZE = 0.35; // bullet diameter. For now 0.5 of font_size without descent. - static $BULLET_TYPES = array("disc", "circle", "square"); + static $BULLET_TYPES = ["disc", "circle", "square"]; /** * ListBullet constructor. diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php index 39921aba84..62787766fd 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php @@ -55,7 +55,7 @@ class Page extends AbstractFrameDecorator * * @var array */ - protected $_floating_frames = array(); + protected $_floating_frames = []; //........................................................................ @@ -125,7 +125,7 @@ class Page extends AbstractFrameDecorator */ function next_page() { - $this->_floating_frames = array(); + $this->_floating_frames = []; $this->_renderer->new_page(); $this->_page_full = false; } @@ -174,8 +174,8 @@ class Page extends AbstractFrameDecorator return null; } - $block_types = array("block", "list-item", "table", "inline"); - $page_breaks = array("always", "left", "right"); + $block_types = ["block", "list-item", "table", "inline"]; + $page_breaks = ["always", "left", "right"]; $style = $frame->get_style(); @@ -282,7 +282,7 @@ class Page extends AbstractFrameDecorator */ protected function _page_break_allowed(Frame $frame) { - $block_types = array("block", "list-item", "table", "-dompdf-image"); + $block_types = ["block", "list-item", "table", "-dompdf-image"]; Helpers::dompdf_debug("page-break", "_page_break_allowed(" . $frame->get_node()->nodeName . ")"); $display = $frame->get_style()->display; @@ -455,7 +455,6 @@ class Page extends AbstractFrameDecorator } } } - } /** diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php index 3776c60be6..5e28939059 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php @@ -20,7 +20,7 @@ use Dompdf\Frame\Factory; */ class Table extends AbstractFrameDecorator { - public static $VALID_CHILDREN = array( + public static $VALID_CHILDREN = [ "table-row-group", "table-row", "table-header-group", @@ -29,13 +29,13 @@ class Table extends AbstractFrameDecorator "table-column-group", "table-caption", "table-cell" - ); + ]; - public static $ROW_GROUPS = array( + public static $ROW_GROUPS = [ 'table-row-group', 'table-header-group', 'table-footer-group' - ); + ]; /** * The Cellmap object for this table. The cellmap maps table cells @@ -92,8 +92,8 @@ class Table extends AbstractFrameDecorator $this->_min_width = null; $this->_max_width = null; - $this->_headers = array(); - $this->_footers = array(); + $this->_headers = []; + $this->_footers = []; } public function reset() @@ -102,8 +102,8 @@ class Table extends AbstractFrameDecorator $this->_cellmap->reset(); $this->_min_width = null; $this->_max_width = null; - $this->_headers = array(); - $this->_footers = array(); + $this->_headers = []; + $this->_footers = []; $this->_reflower->reset(); } @@ -263,7 +263,7 @@ class Table extends AbstractFrameDecorator public function normalise() { // Store frames generated by invalid tags and move them outside the table - $erroneous_frames = array(); + $erroneous_frames = []; $anon_row = false; $iter = $this->get_first_child(); while ($iter) { diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php index 9bf77258e5..996e16f000 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php @@ -32,7 +32,7 @@ class TableCell extends BlockFrameDecorator function __construct(Frame $frame, Dompdf $dompdf) { parent::__construct($frame, $dompdf); - $this->_resolved_borders = array(); + $this->_resolved_borders = []; $this->_content_height = 0; } @@ -41,7 +41,7 @@ class TableCell extends BlockFrameDecorator function reset() { parent::reset(); - $this->_resolved_borders = array(); + $this->_resolved_borders = []; $this->_content_height = 0; $this->_frame->reset(); } @@ -69,14 +69,14 @@ class TableCell extends BlockFrameDecorator { $style = $this->get_style(); $v_space = (float)$style->length_in_pt( - array( + [ $style->margin_top, $style->padding_top, $style->border_top_width, $style->border_bottom_width, $style->padding_bottom, $style->margin_bottom - ), + ], (float)$style->length_in_pt($style->height) ); diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php index 4c6dcb5f9d..2fbfeb4ca3 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php @@ -39,7 +39,7 @@ class TableRow extends AbstractFrameDecorator // Find our table parent $p = TableFrameDecorator::find_parent_table($this); - $erroneous_frames = array(); + $erroneous_frames = []; foreach ($this->get_children() as $child) { $display = $child->get_style()->display; diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php index b1c1ea7a0f..92eafc2888 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php @@ -98,7 +98,7 @@ class Text extends AbstractFrameDecorator // This function is called in add_frame_to_line() and is used to // determine the line height, so we actually want to return the // 'line-height' property, not the actual margin box - $style = $this->get_parent()->get_style(); + $style = $this->get_style(); $font = $style->font_family; $size = $style->font_size; @@ -118,9 +118,9 @@ class Text extends AbstractFrameDecorator */ function get_padding_box() { + $style = $this->_frame->get_style(); $pb = $this->_frame->get_padding_box(); - $pb[3] = $pb["h"] = $this->_frame->get_style()->height; - + $pb[3] = $pb["h"] = $style->length_in_pt($style->height); return $pb; } diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php index 946d0969e0..46d01144bf 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php @@ -73,7 +73,7 @@ abstract class AbstractFrameReflower $style = $frame->get_style(); // Margins of float/absolutely positioned/inline-block elements do not collapse. - if (!$frame->is_in_flow() || $frame->is_inline_block()) { + if (!$frame->is_in_flow() || $frame->is_inline_block() || $frame->get_root() == $frame || $frame->get_parent() == $frame->get_root()) { return; } @@ -215,27 +215,27 @@ abstract class AbstractFrameReflower $style = $this->_frame->get_style(); // Account for margins & padding - $dims = array($style->padding_left, + $dims = [$style->padding_left, $style->padding_right, $style->border_left_width, $style->border_right_width, $style->margin_left, - $style->margin_right); + $style->margin_right]; $cb_w = $this->_frame->get_containing_block("w"); $delta = (float)$style->length_in_pt($dims, $cb_w); // Handle degenerate case if (!$this->_frame->get_first_child()) { - return $this->_min_max_cache = array( + return $this->_min_max_cache = [ $delta, $delta, "min" => $delta, "max" => $delta, - ); + ]; } - $low = array(); - $high = array(); + $low = []; + $high = []; for ($iter = $this->_frame->get_children()->getIterator(); $iter->valid(); $iter->next()) { $inline_min = 0; @@ -247,7 +247,7 @@ abstract class AbstractFrameReflower $minmax = $child->get_min_max_width(); - if (in_array($iter->current()->get_style()->white_space, array("pre", "nowrap"))) { + if (in_array($iter->current()->get_style()->white_space, ["pre", "nowrap"])) { $inline_min += $minmax["min"]; } else { $low[] = $minmax["min"]; @@ -287,7 +287,7 @@ abstract class AbstractFrameReflower $min += $delta; $max += $delta; - return $this->_min_max_cache = array($min, $max, "min" => $min, "max" => $max); + return $this->_min_max_cache = [$min, $max, "min" => $min, "max" => $max]; } /** @@ -306,8 +306,8 @@ abstract class AbstractFrameReflower $string = trim($string, "'\""); } - $string = str_replace(array("\\\n", '\\"', "\\'"), - array("", '"', "'"), $string); + $string = str_replace(["\\\n", '\\"', "\\'"], + ["", '"', "'"], $string); // Convert escaped hex characters into ascii characters (e.g. \A => newline) $string = preg_replace_callback("/\\\\([0-9a-fA-F]{0,6})/", @@ -333,13 +333,13 @@ abstract class AbstractFrameReflower return null; } - $quotes_array = array(); + $quotes_array = []; foreach ($matches as $_quote) { $quotes_array[] = $this->_parse_string($_quote[0], true); } if (empty($quotes_array)) { - $quotes_array = array('"', '"'); + $quotes_array = ['"', '"']; } return array_chunk($quotes_array, 2); @@ -426,7 +426,7 @@ abstract class AbstractFrameReflower } $p = $this->_frame->lookup_counter_frame($counter_id); - $tmp = array(); + $tmp = []; while ($p) { // We only want to use the counter values when they actually increment the counter if (array_key_exists($counter_id, $p->_counters)) { diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php index c6b75eb019..fcf810ff5d 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php @@ -60,13 +60,13 @@ class Block extends AbstractFrameReflower $right = $style->length_in_pt($style->right, $w); // Handle 'auto' values - $dims = array($style->border_left_width, + $dims = [$style->border_left_width, $style->border_right_width, $style->padding_left, $style->padding_right, $width !== "auto" ? $width : 0, $rm !== "auto" ? $rm : 0, - $lm !== "auto" ? $lm : 0); + $lm !== "auto" ? $lm : 0]; // absolutely positioned boxes take the 'left' and 'right' properties into account if ($frame->is_absolute()) { @@ -156,13 +156,13 @@ class Block extends AbstractFrameReflower $rm = $diff; } - return array( + return [ "width" => $width, "margin_left" => $lm, "margin_right" => $rm, "left" => $left, "right" => $right, - ); + ]; } /** @@ -207,7 +207,7 @@ class Block extends AbstractFrameReflower $max_width = $style->length_in_pt($style->max_width, $cb["w"]); if ($max_width !== "none" && $min_width > $max_width) { - list($max_width, $min_width) = array($min_width, $max_width); + list($max_width, $min_width) = [$min_width, $max_width]; } if ($max_width !== "none" && $width > $max_width) { @@ -223,7 +223,7 @@ class Block extends AbstractFrameReflower $right = $calculate_width['right']; } - return array($width, $margin_left, $margin_right, $left, $right); + return [$width, $margin_left, $margin_right, $left, $right]; } /** @@ -269,7 +269,7 @@ class Block extends AbstractFrameReflower // see http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height - $dims = array($top !== "auto" ? $top : 0, + $dims = [$top !== "auto" ? $top : 0, $style->margin_top !== "auto" ? $style->margin_top : 0, $style->padding_top, $style->border_top_width, @@ -277,7 +277,7 @@ class Block extends AbstractFrameReflower $style->border_bottom_width, $style->padding_bottom, $style->margin_bottom !== "auto" ? $style->margin_bottom : 0, - $bottom !== "auto" ? $bottom : 0); + $bottom !== "auto" ? $bottom : 0]; $sum = (float)$style->length_in_pt($dims, $cb["h"]); @@ -406,7 +406,7 @@ class Block extends AbstractFrameReflower if ($max_height !== "none" && $min_height > $max_height) { // Swap 'em - list($max_height, $min_height) = array($min_height, $max_height); + list($max_height, $min_height) = [$min_height, $max_height]; } if ($max_height !== "none" && $height > $max_height) { @@ -419,7 +419,7 @@ class Block extends AbstractFrameReflower } } - return array($height, $margin_top, $margin_bottom, $top, $bottom); + return [$height, $margin_top, $margin_bottom, $top, $bottom]; } /** @@ -604,7 +604,7 @@ class Block extends AbstractFrameReflower break; case "text-top": // FIXME: this should be the height of the frame minus the height of the text - $y_offset = $height - (float)$style->length_in_pt($style->line_height, $style->font_size); + $y_offset = $height - $style->line_height; break; case "top": @@ -810,16 +810,16 @@ class Block extends AbstractFrameReflower $this->_frame->increase_line_width($indent); // Determine the content edge - $top = (float)$style->length_in_pt(array($style->margin_top, + $top = (float)$style->length_in_pt([$style->margin_top, $style->padding_top, - $style->border_top_width), $cb["h"]); + $style->border_top_width], $cb["h"]); - $bottom = (float)$style->length_in_pt(array($style->border_bottom_width, + $bottom = (float)$style->length_in_pt([$style->border_bottom_width, $style->margin_bottom, - $style->padding_bottom), $cb["h"]); + $style->padding_bottom], $cb["h"]); - $cb_x = $x + (float)$left_margin + (float)$style->length_in_pt(array($style->border_left_width, - $style->padding_left), $cb["w"]); + $cb_x = $x + (float)$left_margin + (float)$style->length_in_pt([$style->border_left_width, + $style->padding_left], $cb["w"]); $cb_y = $y + $top; diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php index 805523c52c..f74728634d 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php @@ -201,6 +201,6 @@ class Image extends AbstractFrameReflower $style->min_height = "none"; $style->max_height = "none"; - return array($width, $width, "min" => $width, "max" => $width); + return [$width, $width, "min" => $width, "max" => $width]; } } diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php index dc87705c11..3399b97d02 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php @@ -93,7 +93,7 @@ class Page extends AbstractFrameReflower */ function reflow(BlockFrameDecorator $block = null) { - $fixed_children = array(); + $fixed_children = []; $prev_child = null; $child = $this->_frame->get_first_child(); $current_page = 0; @@ -186,10 +186,10 @@ class Page extends AbstractFrameReflower } if (is_array($this->_callbacks) && isset($this->_callbacks[$event])) { - $info = array( + $info = [ 0 => $this->_canvas, "canvas" => $this->_canvas, 1 => $frame, "frame" => $frame, - ); + ]; $fs = $this->_callbacks[$event]; foreach ($fs as $f) { if (is_callable($f)) { diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php index 1f560c053a..ebf430efe4 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php @@ -85,11 +85,11 @@ class Table extends AbstractFrameReflower $delta = $left + $right; if (!$centered) { - $delta += (float)$style->length_in_pt(array( + $delta += (float)$style->length_in_pt([ $style->padding_left, $style->border_left_width, $style->border_right_width, - $style->padding_right), + $style->padding_right], $cb["w"]); } @@ -345,7 +345,7 @@ class Table extends AbstractFrameReflower if ($max_height !== "none" && $min_height > $max_height) { // Swap 'em - list($max_height, $min_height) = array($min_height, $max_height); + list($max_height, $min_height) = [$min_height, $max_height]; } if ($max_height !== "none" && $height > $max_height) { @@ -433,7 +433,7 @@ class Table extends AbstractFrameReflower $left = $style->margin_left; $right = $style->margin_right; - $diff = $cb["w"] - $width; + $diff = (float)$cb["w"] - (float)$width; if ($left === "auto" && $right === "auto") { if ($diff < 0) { @@ -457,11 +457,11 @@ class Table extends AbstractFrameReflower list($x, $y) = $frame->get_position(); // Determine the content edge - $content_x = $x + (float)$left + (float)$style->length_in_pt(array($style->padding_left, - $style->border_left_width), $cb["w"]); - $content_y = $y + (float)$style->length_in_pt(array($style->margin_top, + $content_x = $x + (float)$left + (float)$style->length_in_pt([$style->padding_left, + $style->border_left_width], $cb["w"]); + $content_y = $y + (float)$style->length_in_pt([$style->margin_top, $style->border_top_width, - $style->padding_top), $cb["h"]); + $style->padding_top], $cb["h"]); if (isset($cb["h"])) { $h = $cb["h"]; @@ -533,7 +533,7 @@ class Table extends AbstractFrameReflower // Find the min/max width of the table and sort the columns into // absolute/percent/auto arrays - $this->_state = array(); + $this->_state = []; $this->_state["min_width"] = 0; $this->_state["max_width"] = 0; @@ -541,9 +541,9 @@ class Table extends AbstractFrameReflower $this->_state["absolute_used"] = 0; $this->_state["auto_min"] = 0; - $this->_state["absolute"] = array(); - $this->_state["percent"] = array(); - $this->_state["auto"] = array(); + $this->_state["absolute"] = []; + $this->_state["percent"] = []; + $this->_state["auto"] = []; $columns =& $this->_frame->get_cellmap()->get_columns(); foreach (array_keys($columns) as $i) { @@ -563,12 +563,12 @@ class Table extends AbstractFrameReflower } // Account for margins & padding - $dims = array($style->border_left_width, + $dims = [$style->border_left_width, $style->border_right_width, $style->padding_left, $style->padding_right, $style->margin_left, - $style->margin_right); + $style->margin_right]; if ($style->border_collapse !== "collapse") { list($dims[]) = $style->border_spacing; @@ -579,11 +579,11 @@ class Table extends AbstractFrameReflower $this->_state["min_width"] += $delta; $this->_state["max_width"] += $delta; - return $this->_min_max_cache = array( + return $this->_min_max_cache = [ $this->_state["min_width"], $this->_state["max_width"], "min" => $this->_state["min_width"], "max" => $this->_state["max_width"], - ); + ]; } } diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php index 87c5cf8184..b3c93df4bc 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php @@ -50,23 +50,23 @@ class TableCell extends Block //FIXME? $h = $this->_frame->get_containing_block("h"); - $left_space = (float)$style->length_in_pt(array($style->margin_left, + $left_space = (float)$style->length_in_pt([$style->margin_left, $style->padding_left, - $style->border_left_width), + $style->border_left_width], $w); - $right_space = (float)$style->length_in_pt(array($style->padding_right, + $right_space = (float)$style->length_in_pt([$style->padding_right, $style->margin_right, - $style->border_right_width), + $style->border_right_width], $w); - $top_space = (float)$style->length_in_pt(array($style->margin_top, + $top_space = (float)$style->length_in_pt([$style->margin_top, $style->padding_top, - $style->border_top_width), + $style->border_top_width], $h); - $bottom_space = (float)$style->length_in_pt(array($style->margin_bottom, + $bottom_space = (float)$style->length_in_pt([$style->margin_bottom, $style->padding_bottom, - $style->border_bottom_width), + $style->border_bottom_width], $h); $style->width = $cb_w = $w - $left_space - $right_space; diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php index 321efeba5e..16217dc039 100644 --- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php +++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php @@ -54,9 +54,6 @@ class Text extends AbstractFrameReflower */ protected function _collapse_white_space($text) { - //$text = $this->_frame->get_text(); -// if ( $this->_block_parent->get_current_line_box->w == 0 ) -// $text = ltrim($text, " \n\r\t"); return preg_replace(self::$_whitespace_pattern, " ", $text); } @@ -84,12 +81,12 @@ class Text extends AbstractFrameReflower // Determine the frame width including margin, padding & border $text_width = $this->getFontMetrics()->getTextWidth($text, $font, $size, $word_spacing, $char_spacing); $mbp_width = - (float)$style->length_in_pt(array($style->margin_left, + (float)$style->length_in_pt([$style->margin_left, $style->border_left_width, $style->padding_left, $style->padding_right, $style->border_right_width, - $style->margin_right), $line_width); + $style->margin_right], $line_width); $frame_width = $text_width + $mbp_width; @@ -109,7 +106,9 @@ class Text extends AbstractFrameReflower } // split the text into words - $words = preg_split('/([\s-]+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE); + // The regex splits on everything that's a separator (^\S double negative), excluding nbsp (\xa0), plus dashes + // This currently excludes the "narrow nbsp" character + $words = preg_split('/([^\S\xA0]+|-+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE); $wc = count($words); // Determine the split point @@ -396,6 +395,7 @@ class Text extends AbstractFrameReflower $word_spacing = (float)$style->length_in_pt($style->word_spacing); $char_spacing = (float)$style->length_in_pt($style->letter_spacing); + // determine minimum text width based on the whitespace setting switch ($style->white_space) { default: case "normal": @@ -405,13 +405,13 @@ class Text extends AbstractFrameReflower // Find the longest word (i.e. minimum length) - // This technique (using arrays & an anonymous function) is actually - // faster than doing a single-pass character by character scan. Heh, - // yes I took the time to bench it ;) - $words = array_flip(preg_split("/[\s-]+/u", $str, -1, PREG_SPLIT_DELIM_CAPTURE)); + // split the text into words + // The regex splits on everything that's a separator (^\S double negative), excluding nbsp (\xa0), plus dashes + // This currently excludes the "narrow nbsp" character + $words = array_flip(preg_split('/([^\S\xA0]+|-+)/u', $str, -1, PREG_SPLIT_DELIM_CAPTURE)); $root = $this; - array_walk($words, function(&$val, $str) use ($font, $size, $word_spacing, $char_spacing, $root) { - $val = $root->getFontMetrics()->getTextWidth($str, $font, $size, $word_spacing, $char_spacing); + array_walk($words, function(&$chunked_text_width, $chunked_text) use ($font, $size, $word_spacing, $char_spacing, $root) { + $chunked_text_width = $root->getFontMetrics()->getTextWidth($chunked_text, $font, $size, $word_spacing, $char_spacing); }); arsort($words); @@ -419,10 +419,10 @@ class Text extends AbstractFrameReflower break; case "pre": - $lines = array_flip(preg_split("/\n/u", $str)); + $lines = array_flip(preg_split("/\R/u", $str)); $root = $this; - array_walk($lines, function(&$val, $str) use ($font, $size, $word_spacing, $char_spacing, $root) { - $val = $root->getFontMetrics()->getTextWidth($str, $font, $size, $word_spacing, $char_spacing); + array_walk($lines, function(&$chunked_text_width, $chunked_text) use ($font, $size, $word_spacing, $char_spacing, $root) { + $chunked_text_width = $root->getFontMetrics()->getTextWidth($chunked_text, $font, $size, $word_spacing, $char_spacing); }); arsort($lines); @@ -434,6 +434,7 @@ class Text extends AbstractFrameReflower break; } + // clean up the frame text based on the whitespace setting and use to determine maximum text width switch ($style->white_space) { default: case "normal": @@ -442,30 +443,29 @@ class Text extends AbstractFrameReflower break; case "pre-line": - //XXX: Is this correct? $str = preg_replace("/[ \t]+/u", " ", $text); + break; case "pre-wrap": // Find the longest word (i.e. minimum length) - $lines = array_flip(preg_split("/\n/", $text)); + $lines = array_flip(preg_split("/\R/u", $text)); $root = $this; - array_walk($lines, function(&$val, $str) use ($font, $size, $word_spacing, $char_spacing, $root) { - $val = $root->getFontMetrics()->getTextWidth($str, $font, $size, $word_spacing, $char_spacing); + array_walk($lines, function(&$chunked_text_width, $chunked_text) use ($font, $size, $word_spacing, $char_spacing, $root) { + $chunked_text_width = $root->getFontMetrics()->getTextWidth($chunked_text, $font, $size, $word_spacing, $char_spacing); }); arsort($lines); reset($lines); $str = key($lines); break; } - $max = $this->getFontMetrics()->getTextWidth($str, $font, $size, $word_spacing, $char_spacing); - $delta = (float)$style->length_in_pt(array($style->margin_left, + $delta = (float)$style->length_in_pt([$style->margin_left, $style->border_left_width, $style->padding_left, $style->padding_right, $style->border_right_width, - $style->margin_right), $line_width); + $style->margin_right], $line_width); $min += $delta; $min_word = $min; $max += $delta; @@ -478,7 +478,7 @@ class Text extends AbstractFrameReflower $min = $delta + $min_char; } - return $this->_min_max_cache = array($min, $max, $min_word, "min" => $min, "max" => $max, 'min_word' => $min_word); + return $this->_min_max_cache = [$min, $max, $min_word, "min" => $min, "max" => $max, 'min_word' => $min_word]; } /** diff --git a/civicrm/vendor/dompdf/dompdf/src/Helpers.php b/civicrm/vendor/dompdf/dompdf/src/Helpers.php index ab05b6a749..6534966bef 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Helpers.php +++ b/civicrm/vendor/dompdf/dompdf/src/Helpers.php @@ -69,7 +69,7 @@ class Helpers $ret = $protocol; - if (!in_array(mb_strtolower($protocol), array("http://", "https://", "ftp://", "ftps://"))) { + if (!in_array(mb_strtolower($protocol), ["http://", "https://", "ftp://", "ftps://"])) { //On Windows local file, an abs path can begin also with a '\' or a drive letter and colon //drive: followed by a relative path would be a drive specific default folder. //not known in php app code, treat as abs path @@ -137,10 +137,10 @@ class Helpers public static function dec2roman($num) { - static $ones = array("", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix"); - static $tens = array("", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc"); - static $hund = array("", "c", "cc", "ccc", "cd", "d", "dc", "dcc", "dccc", "cm"); - static $thou = array("", "m", "mm", "mmm"); + static $ones = ["", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix"]; + static $tens = ["", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc"]; + static $hund = ["", "c", "cc", "ccc", "cd", "d", "dc", "dcc", "dccc", "cm"]; + static $thou = ["", "m", "mm", "mmm"]; if (!is_numeric($num)) { throw new Exception("dec2roman() requires a numeric argument."); @@ -200,11 +200,11 @@ class Helpers } $match['data'] = rawurldecode($match['data']); - $result = array( + $result = [ 'charset' => $match['charset'] ? $match['charset'] : 'US-ASCII', 'mime' => $match['mime'] ? $match['mime'] : 'text/plain', 'data' => $match['base64'] ? base64_decode($match['data']) : $match['data'], - ); + ]; return $result; } @@ -226,18 +226,18 @@ class Helpers * @return string The original URL with special characters encoded */ public static function encodeURI($uri) { - $unescaped = array( + $unescaped = [ '%2D'=>'-','%5F'=>'_','%2E'=>'.','%21'=>'!', '%7E'=>'~', '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')' - ); - $reserved = array( + ]; + $reserved = [ '%3B'=>';','%2C'=>',','%2F'=>'/','%3F'=>'?','%3A'=>':', '%40'=>'@','%26'=>'&','%3D'=>'=','%2B'=>'+','%24'=>'$' - ); - $score = array( + ]; + $score = [ '%23'=>'#' - ); - return strtr(rawurlencode(rawurldecode($uri)), array_merge($reserved,$unescaped,$score)); + ]; + return strtr(rawurlencode(rawurldecode($uri)), array_merge($reserved, $unescaped, $score)); } /** @@ -306,7 +306,7 @@ class Helpers { $w = floor($width / 2) + ($width % 2); $lineWidth = $w + (3 - (($width - 1) / 2) % 4); - $pixels = array(); + $pixels = []; $cnt = strlen($str); $c = 0; @@ -460,11 +460,11 @@ class Helpers } } - $ret = array($protocol, $host, $path, $file, + $ret = [$protocol, $host, $path, $file, "protocol" => $protocol, "host" => $host, "path" => $path, - "file" => $file); + "file" => $file]; return $ret; } @@ -503,7 +503,7 @@ class Helpers public static function record_warnings($errno, $errstr, $errfile, $errline) { // Not a warning or notice - if (!($errno & (E_WARNING | E_NOTICE | E_USER_NOTICE | E_USER_WARNING))) { + if (!($errno & (E_WARNING | E_NOTICE | E_USER_NOTICE | E_USER_WARNING | E_STRICT | E_DEPRECATED | E_USER_DEPRECATED))) { throw new Exception($errstr . " $errno"); } @@ -551,7 +551,7 @@ class Helpers public static function cmyk_to_rgb($c, $m = null, $y = null, $k = null) { if (is_array($c)) { - list($c, $m, $y, $k) = $c; + [$c, $m, $y, $k] = $c; } $c *= 255; @@ -573,10 +573,10 @@ class Helpers $b = 0; } - return array( + return [ $r, $g, $b, "r" => $r, "g" => $g, "b" => $b - ); + ]; } /** @@ -588,46 +588,46 @@ class Helpers */ public static function dompdf_getimagesize($filename, $context = null) { - static $cache = array(); + static $cache = []; if (isset($cache[$filename])) { return $cache[$filename]; } - list($width, $height, $type) = getimagesize($filename); + [$width, $height, $type] = getimagesize($filename); // Custom types - $types = array( + $types = [ IMAGETYPE_JPEG => "jpeg", IMAGETYPE_GIF => "gif", IMAGETYPE_BMP => "bmp", IMAGETYPE_PNG => "png", - ); + ]; $type = isset($types[$type]) ? $types[$type] : null; if ($width == null || $height == null) { - list($data, $headers) = Helpers::getFileContent($filename, $context); - - if (substr($data, 0, 2) === "BM") { - $meta = unpack('vtype/Vfilesize/Vreserved/Voffset/Vheadersize/Vwidth/Vheight', $data); - $width = (int)$meta['width']; - $height = (int)$meta['height']; - $type = "bmp"; - } - else { - if (strpos($data, "<svg") !== false) { - $doc = new \Svg\Document(); - $doc->loadFile($filename); + [$data, $headers] = Helpers::getFileContent($filename, $context); + + if (!empty($data)) { + if (substr($data, 0, 2) === "BM") { + $meta = unpack('vtype/Vfilesize/Vreserved/Voffset/Vheadersize/Vwidth/Vheight', $data); + $width = (int)$meta['width']; + $height = (int)$meta['height']; + $type = "bmp"; + } else { + if (strpos($data, "<svg") !== false) { + $doc = new \Svg\Document(); + $doc->loadFile($filename); - list($width, $height) = $doc->getDimensions(); - $type = "svg"; + [$width, $height] = $doc->getDimensions(); + $type = "svg"; + } } } - } - return $cache[$filename] = array($width, $height, $type); + return $cache[$filename] = [$width, $height, $type]; } /** @@ -693,7 +693,7 @@ class Helpers $meta['colors'] = !$meta['colors'] ? pow(2, $meta['bits']) : $meta['colors']; // read color palette - $palette = array(); + $palette = []; if ($meta['bits'] < 16) { $palette = unpack('l' . $meta['colors'], fread($fh, $meta['colors'] * 4)); // in rare cases the color value is signed @@ -818,52 +818,64 @@ class Helpers * @param resource $context (ignored if curl is used) * @param int $offset * @param int $maxlen (ignored if curl is used) - * @return bool|array + * @return string[] */ public static function getFileContent($uri, $context = null, $offset = 0, $maxlen = null) { - $result = false; + $content = null; $headers = null; - list($proto, $host, $path, $file) = Helpers::explode_url($uri); - $is_local_path = ($proto == "" || $proto === "file://"); + [$proto, $host, $path, $file] = Helpers::explode_url($uri); + $is_local_path = ($proto == '' || $proto === 'file://'); - set_error_handler(array("\\Dompdf\\Helpers", "record_warnings")); + set_error_handler([self::class, 'record_warnings']); - if ($is_local_path || ini_get("allow_url_fopen")) { - if ($is_local_path === false) { - $uri = Helpers::encodeURI($uri); - } - if (isset($maxlen)) { - $result = file_get_contents($uri, null, $context, $offset, $maxlen); - } else { - $result = file_get_contents($uri, null, $context, $offset); - } - if (isset($http_response_header)) { - $headers = $http_response_header; - } + try { + if ($is_local_path || ini_get('allow_url_fopen')) { + if ($is_local_path === false) { + $uri = Helpers::encodeURI($uri); + } + if (isset($maxlen)) { + $result = file_get_contents($uri, null, $context, $offset, $maxlen); + } else { + $result = file_get_contents($uri, null, $context, $offset); + } + if ($result !== false) { + $content = $result; + } + if (isset($http_response_header)) { + $headers = $http_response_header; + } - } elseif (function_exists("curl_exec")) { - $curl = curl_init($uri); + } elseif (function_exists('curl_exec')) { + $curl = curl_init($uri); - //TODO: use $context to define additional curl options - curl_setopt($curl, CURLOPT_TIMEOUT, 10); - curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); - curl_setopt($curl, CURLOPT_HEADER, true); - if ($offset > 0) { - curl_setopt($curl, CURLOPT_RESUME_FROM, $offset); - } + //TODO: use $context to define additional curl options + curl_setopt($curl, CURLOPT_TIMEOUT, 10); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_HEADER, true); + if ($offset > 0) { + curl_setopt($curl, CURLOPT_RESUME_FROM, $offset); + } - $data = curl_exec($curl); - $raw_headers = substr($data, 0, curl_getinfo($curl, CURLINFO_HEADER_SIZE)); - $headers = preg_split("/[\n\r]+/", trim($raw_headers)); - $result = substr($data, curl_getinfo($curl, CURLINFO_HEADER_SIZE)); - curl_close($curl); - } + $data = curl_exec($curl); - restore_error_handler(); + if ($data !== false && !curl_errno($curl)) { + switch ($http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE)) { + case 200: + $raw_headers = substr($data, 0, curl_getinfo($curl, CURLINFO_HEADER_SIZE)); + $headers = preg_split("/[\n\r]+/", trim($raw_headers)); + $content = substr($data, curl_getinfo($curl, CURLINFO_HEADER_SIZE)); + break; + } + } + curl_close($curl); + } + } finally { + restore_error_handler(); + } - return array($result, $headers); + return [$content, $headers]; } public static function mb_ucwords($str) { @@ -874,7 +886,7 @@ class Helpers $str = mb_strtoupper(mb_substr($str, 0, 1)) . mb_substr($str, 1); - foreach (array(' ', '.', ',', '!', '?', '-', '+') as $s) { + foreach ([' ', '.', ',', '!', '?', '-', '+'] as $s) { $pos = 0; while (($pos = mb_strpos($str, $s, $pos)) !== false) { $pos++; diff --git a/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php b/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php index e1139b11d9..16c837d56f 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php +++ b/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php @@ -27,7 +27,7 @@ class Cache * * @var array */ - protected static $_cache = array(); + protected static $_cache = []; /** * The url to the "broken image" used when images can't be loaded @@ -88,7 +88,9 @@ class Cache } // From remote else { $tmp_dir = $dompdf->getOptions()->getTempDir(); - $resolved_url = @tempnam($tmp_dir, "ca_dompdf_img_"); + if (($resolved_url = @tempnam($tmp_dir, "ca_dompdf_img_")) === false) { + throw new ImageException("Unable to create temporary image in " . $tmp_dir, E_WARNING); + } $image = ""; if ($data_uri) { @@ -100,7 +102,7 @@ class Cache } // Image not found or invalid - if (strlen($image) == 0) { + if (empty($image)) { $msg = ($data_uri ? "Data-URI could not be parsed" : "Image not found"); throw new ImageException($msg, E_WARNING); } // Image found, put in cache and process @@ -110,7 +112,9 @@ class Cache //- a remote url does not need to have a file extension at all //- local cached file does not have a matching file extension //Therefore get image type from the content - file_put_contents($resolved_url, $image); + if (@file_put_contents($resolved_url, $image) === false) { + throw new ImageException("Unable to create temporary image in " . $tmp_dir, E_WARNING); + } } } } // Not remote, local image @@ -127,7 +131,7 @@ class Cache list($width, $height, $type) = Helpers::dompdf_getimagesize($resolved_url, $dompdf->getHttpContext()); // Known image type - if ($width && $height && in_array($type, array("gif", "png", "jpeg", "bmp", "svg"))) { + if ($width && $height && in_array($type, ["gif", "png", "jpeg", "bmp", "svg"])) { //Don't put replacement image into cache - otherwise it will be deleted on cache cleanup. //Only execute on successful caching of remote image. if ($enable_remote && $remote || $data_uri) { @@ -145,7 +149,7 @@ class Cache Helpers::record_warnings($e->getCode(), $e->getMessage() . " \n $url", $e->getFile(), $e->getLine()); } - return array($resolved_url, $type, $message); + return [$resolved_url, $type, $message]; } /** @@ -165,7 +169,7 @@ class Cache unlink($file); } - self::$_cache = array(); + self::$_cache = []; } static function detect_type($file, $context = null) diff --git a/civicrm/vendor/dompdf/dompdf/src/LineBox.php b/civicrm/vendor/dompdf/dompdf/src/LineBox.php index 1634fb17dd..68e1f7087e 100644 --- a/civicrm/vendor/dompdf/dompdf/src/LineBox.php +++ b/civicrm/vendor/dompdf/dompdf/src/LineBox.php @@ -29,7 +29,7 @@ class LineBox /** * @var Frame[] */ - protected $_frames = array(); + protected $_frames = []; /** * @var integer @@ -69,7 +69,7 @@ class LineBox /** * @var bool[] */ - public $floating_blocks = array(); + public $floating_blocks = []; /** * @var bool @@ -85,7 +85,7 @@ class LineBox public function __construct(Block $frame, $y = 0) { $this->_block_frame = $frame; - $this->_frames = array(); + $this->_frames = []; $this->y = $y; $this->get_float_offsets(); @@ -124,7 +124,7 @@ class LineBox $parent = $p; - $childs = array(); + $childs = []; foreach ($floating_frames as $_floating) { $p = $_floating->get_parent(); @@ -279,7 +279,7 @@ class LineBox */ public function __toString() { - $props = array("wc", "y", "w", "h", "left", "right", "br"); + $props = ["wc", "y", "w", "h", "left", "right", "br"]; $s = ""; foreach ($props as $prop) { $s .= "$prop: " . $this->$prop . "\n"; diff --git a/civicrm/vendor/dompdf/dompdf/src/Options.php b/civicrm/vendor/dompdf/dompdf/src/Options.php index b6c7c362c5..8c373160e9 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Options.php +++ b/civicrm/vendor/dompdf/dompdf/src/Options.php @@ -294,9 +294,9 @@ class Options $this->setChroot(realpath(__DIR__ . "/../")); $this->setRootDir($this->getChroot()); $this->setTempDir(sys_get_temp_dir()); - $this->setFontDir($this->chroot . DIRECTORY_SEPARATOR . "lib" . DIRECTORY_SEPARATOR . "fonts"); + $this->setFontDir($this->chroot . "/lib/fonts"); $this->setFontCache($this->getFontDir()); - $this->setLogOutputFile($this->getTempDir() . DIRECTORY_SEPARATOR . "log.htm"); + $this->setLogOutputFile($this->getTempDir() . "/log.htm"); if (null !== $attributes) { $this->set($attributes); @@ -311,7 +311,7 @@ class Options public function set($attributes, $value = null) { if (!is_array($attributes)) { - $attributes = array($attributes => $value); + $attributes = [$attributes => $value]; } foreach ($attributes as $key => $value) { if ($key === 'tempDir' || $key === 'temp_dir') { diff --git a/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php b/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php index 0058027a02..cdebc7a41f 100644 --- a/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php +++ b/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php @@ -33,7 +33,7 @@ class PhpEvaluator * @param $code * @param array $vars */ - public function evaluate($code, $vars = array()) + public function evaluate($code, $vars = []) { if (!$this->_canvas->get_dompdf()->getOptions()->getIsPhpEnabled()) { return; diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php index 30dac509a9..ef34a5c480 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php +++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php @@ -37,7 +37,7 @@ class Absolute extends AbstractPositioner list($x, $y, $w, $h) = $p->get_padding_box(); } - list($width, $height) = array($frame->get_margin_width(), $frame->get_margin_height()); + list($width, $height) = [$frame->get_margin_width(), $frame->get_margin_height()]; $orig_style = $frame->get_original_style(); $orig_width = $orig_style->width; diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php index 36691f232d..70bc2833b2 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php +++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php @@ -41,8 +41,10 @@ class ListBullet extends AbstractPositioner $n = $frame->get_next_sibling(); if ($n) { $style = $n->get_style(); - $line_height = $style->length_in_pt($style->line_height, $style->font_size); - $offset = (float)$style->length_in_pt($line_height, $n->get_containing_block("h")) - $frame->get_height(); + $line_height = $style->line_height; + // TODO: should offset take into account the line height of the next sibling (per previous logic)? + // $offset = (float)$style->length_in_pt($line_height, $n->get_containing_block("h")) - $frame->get_height(); + $offset = $line_height - $frame->get_height(); $y += $offset / 2; } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer.php b/civicrm/vendor/dompdf/dompdf/src/Renderer.php index aa3bf2f88d..535fec750d 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer.php @@ -65,7 +65,7 @@ class Renderer extends AbstractRenderer $style = $frame->get_style(); - if (in_array($style->visibility, array("hidden", "collapse"))) { + if (in_array($style->visibility, ["hidden", "collapse"])) { return; } @@ -87,7 +87,7 @@ class Renderer extends AbstractRenderer $values[] = $x + (float)$style->length_in_pt($origin[0], (float)$style->length_in_pt($style->width)); $values[] = $y + (float)$style->length_in_pt($origin[1], (float)$style->length_in_pt($style->height)); - call_user_func_array(array($this->_canvas, $function), $values); + call_user_func_array([$this->_canvas, $function], $values); } } @@ -167,7 +167,7 @@ class Renderer extends AbstractRenderer } } - $stack = array(); + $stack = []; foreach ($frame->get_children() as $child) { // < 0 : nagative z-index @@ -222,8 +222,8 @@ class Renderer extends AbstractRenderer } if (is_array($this->_callbacks) && isset($this->_callbacks[$event])) { - $info = array(0 => $this->_canvas, "canvas" => $this->_canvas, - 1 => $frame, "frame" => $frame); + $info = [0 => $this->_canvas, "canvas" => $this->_canvas, + 1 => $frame, "frame" => $frame]; $fs = $this->_callbacks[$event]; foreach ($fs as $f) { if (is_callable($f)) { diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php index 502e78a023..768037b008 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php @@ -287,8 +287,9 @@ abstract class AbstractRenderer //However on transparent image preset the composed image with the transparency color, //to keep the transparency when copying over the non transparent parts of the tiles. $ti = imagecolortransparent($src); + $palletsize = imagecolorstotal($src); - if ($ti >= 0) { + if ($ti >= 0 && $ti < $palletsize) { $tc = imagecolorsforindex($src, $ti); $ti = imagecolorallocate($bg, $tc['red'], $tc['green'], $tc['blue']); imagefill($bg, 0, 0, $ti); @@ -434,7 +435,7 @@ abstract class AbstractRenderer */ protected function _get_dash_pattern($style, $width) { - $pattern = array(); + $pattern = []; switch ($style) { default: @@ -449,14 +450,14 @@ abstract class AbstractRenderer case "dotted": if ($width <= 1) { - $pattern = array($width, $width * 2); + $pattern = [$width, $width * 2]; } else { - $pattern = array($width); + $pattern = [$width]; } break; case "dashed": - $pattern = array(3 * $width); + $pattern = [3 * $width]; break; } @@ -556,34 +557,34 @@ abstract class AbstractRenderer // All this polygon business is for beveled corners... switch ($side) { case "top": - $points = array($x, $y, + $points = [$x, $y, $x + $length, $y, $x + $length - $right, $y + $top, - $x + $left, $y + $top); + $x + $left, $y + $top]; $this->_canvas->polygon($points, $color, null, null, true); break; case "bottom": - $points = array($x, $y, + $points = [$x, $y, $x + $length, $y, $x + $length - $right, $y - $bottom, - $x + $left, $y - $bottom); + $x + $left, $y - $bottom]; $this->_canvas->polygon($points, $color, null, null, true); break; case "left": - $points = array($x, $y, + $points = [$x, $y, $x, $y + $length, $x + $left, $y + $length - $bottom, - $x + $left, $y + $top); + $x + $left, $y + $top]; $this->_canvas->polygon($points, $color, null, null, true); break; case "right": - $points = array($x, $y, + $points = [$x, $y, $x, $y + $length, $x - $right, $y + $length - $bottom, - $x - $right, $y + $top); + $x - $right, $y + $top]; $this->_canvas->polygon($points, $color, null, null, true); break; @@ -660,7 +661,7 @@ abstract class AbstractRenderer { list($top, $right, $bottom, $left) = $widths; - $third_widths = array($top / 3, $right / 3, $bottom / 3, $left / 3); + $third_widths = [$top / 3, $right / 3, $bottom / 3, $left / 3]; // draw the outer border $this->_border_solid($x, $y, $length, $color, $third_widths, $side, $corner_style, $r1, $r2); @@ -685,14 +686,13 @@ abstract class AbstractRenderer { list($top, $right, $bottom, $left) = $widths; - $half_widths = array($top / 2, $right / 2, $bottom / 2, $left / 2); + $half_widths = [$top / 2, $right / 2, $bottom / 2, $left / 2]; $this->_border_inset($x, $y, $length, $color, $half_widths, $side, $corner_style, $r1, $r2); $this->_apply_ratio($side, 0.5, $top, $right, $bottom, $left, $x, $y, $length, $r1, $r2); $this->_border_outset($x, $y, $length, $color, $half_widths, $side, $corner_style, $r1, $r2); - } /** @@ -710,14 +710,13 @@ abstract class AbstractRenderer { list($top, $right, $bottom, $left) = $widths; - $half_widths = array($top / 2, $right / 2, $bottom / 2, $left / 2); + $half_widths = [$top / 2, $right / 2, $bottom / 2, $left / 2]; $this->_border_outset($x, $y, $length, $color, $half_widths, $side, $corner_style, $r1, $r2); $this->_apply_ratio($side, 0.5, $top, $right, $bottom, $left, $x, $y, $length, $r1, $r2); $this->_border_inset($x, $y, $length, $color, $half_widths, $side, $corner_style, $r1, $r2); - } /** @@ -762,13 +761,13 @@ abstract class AbstractRenderer switch ($side) { case "top": case "left": - $shade = array_map(array($this, "_shade"), $color); + $shade = array_map([$this, "_shade"], $color); $this->_border_solid($x, $y, $length, $shade, $widths, $side, $corner_style, $r1, $r2); break; case "bottom": case "right": - $tint = array_map(array($this, "_tint"), $color); + $tint = array_map([$this, "_tint"], $color); $this->_border_solid($x, $y, $length, $tint, $widths, $side, $corner_style, $r1, $r2); break; @@ -793,13 +792,13 @@ abstract class AbstractRenderer switch ($side) { case "top": case "left": - $tint = array_map(array($this, "_tint"), $color); + $tint = array_map([$this, "_tint"], $color); $this->_border_solid($x, $y, $length, $tint, $widths, $side, $corner_style, $r1, $r2); break; case "bottom": case "right": - $shade = array_map(array($this, "_shade"), $color); + $shade = array_map([$this, "_shade"], $color); $this->_border_solid($x, $y, $length, $shade, $widths, $side, $corner_style, $r1, $r2); break; @@ -916,7 +915,7 @@ abstract class AbstractRenderer * @param string $color * @param array $style */ - protected function _debug_layout($box, $color = "red", $style = array()) + protected function _debug_layout($box, $color = "red", $style = []) { $this->_canvas->rectangle($box[0], $box[1], $box[2], $box[3], Color::parse($color), 0.1, $style); } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php index ee0705d8f6..16c57885d3 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php @@ -32,11 +32,11 @@ class Block extends AbstractRenderer $this->_set_opacity($frame->get_opacity($style->opacity)); if ($node->nodeName === "body") { - $h = $frame->get_containing_block("h") - (float)$style->length_in_pt(array( + $h = $frame->get_containing_block("h") - (float)$style->length_in_pt([ $style->margin_top, $style->border_top_width, $style->border_bottom_width, - $style->margin_bottom), + $style->margin_bottom], (float)$style->length_in_pt($style->width)); } @@ -65,20 +65,20 @@ class Block extends AbstractRenderer $this->_canvas->clipping_end(); } - $border_box = array($x, $y, $w, $h); + $border_box = [$x, $y, $w, $h]; $this->_render_border($frame, $border_box); $this->_render_outline($frame, $border_box); if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutBlocks()) { $this->_debug_layout($frame->get_border_box(), "red"); if ($this->_dompdf->getOptions()->getDebugLayoutPaddingBox()) { - $this->_debug_layout($frame->get_padding_box(), "red", array(0.5, 0.5)); + $this->_debug_layout($frame->get_padding_box(), "red", [0.5, 0.5]); } } if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutLines() && $frame->get_decorator()) { foreach ($frame->get_decorator()->get_line_boxes() as $line) { - $frame->_debug_layout(array($line->x, $line->y, $line->w, $line->h), "orange"); + $frame->_debug_layout([$line->x, $line->y, $line->w, $line->h], "orange"); } } @@ -107,7 +107,7 @@ class Block extends AbstractRenderer // Short-cut: If all the borders are "solid" with the same color and style, and no radius, we'd better draw a rectangle if ( - in_array($bp["top"]["style"], array("solid", "dashed", "dotted")) && + in_array($bp["top"]["style"], ["solid", "dashed", "dotted"]) && $bp["top"] == $bp["right"] && $bp["right"] == $bp["bottom"] && $bp["bottom"] == $bp["left"] && @@ -126,12 +126,12 @@ class Block extends AbstractRenderer } // Do it the long way - $widths = array( + $widths = [ (float)$style->length_in_pt($bp["top"]["width"]), (float)$style->length_in_pt($bp["right"]["width"]), (float)$style->length_in_pt($bp["bottom"]["width"]), (float)$style->length_in_pt($bp["left"]["width"]) - ); + ]; foreach ($bp as $side => $props) { list($x, $y, $w, $h) = $border_box; @@ -192,11 +192,11 @@ class Block extends AbstractRenderer { $style = $frame->get_style(); - $props = array( + $props = [ "width" => $style->outline_width, "style" => $style->outline_style, "color" => $style->outline_color, - ); + ]; if (!$props["style"] || $props["style"] === "none" || $props["width"] <= 0) { return; @@ -210,7 +210,7 @@ class Block extends AbstractRenderer $pattern = $this->_get_dash_pattern($props["style"], $offset); // If the outline style is "solid" we'd better draw a rectangle - if (in_array($props["style"], array("solid", "dashed", "dotted"))) { + if (in_array($props["style"], ["solid", "dashed", "dotted"])) { $border_box[0] -= $offset / 2; $border_box[1] -= $offset / 2; $border_box[2] += $offset; @@ -228,7 +228,7 @@ class Block extends AbstractRenderer $method = "_border_" . $props["style"]; $widths = array_fill(0, 4, (float)$style->length_in_pt($props["width"])); - $sides = array("top", "right", "left", "bottom"); + $sides = ["top", "right", "left", "bottom"]; $length = 0; foreach ($sides as $side) { diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php index 87333af71e..7cf55e023f 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php @@ -64,12 +64,12 @@ class Image extends Block $h = (float)$style->length_in_pt($style->height, $cb["h"]); if ($has_border_radius) { - list($wt, $wr, $wb, $wl) = array( + list($wt, $wr, $wb, $wl) = [ $style->border_top_width, $style->border_right_width, $style->border_bottom_width, $style->border_left_width, - ); + ]; // we have to get the "inner" radius if ($tl > 0) { @@ -120,14 +120,14 @@ class Image extends Block $_y = $alt ? $y + $h - count($parts) * $height : $y; foreach ($parts as $i => $_part) { - $this->_canvas->text($x, $_y + $i * $height, $_part, "times", $height * 0.8, array(0.5, 0.5, 0.5)); + $this->_canvas->text($x, $_y + $i * $height, $_part, "times", $height * 0.8, [0.5, 0.5, 0.5]); } } if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutBlocks()) { $this->_debug_layout($frame->get_border_box(), "blue"); if ($this->_dompdf->getOptions()->getDebugLayoutPaddingBox()) { - $this->_debug_layout($frame->get_padding_box(), "blue", array(0.5, 0.5)); + $this->_debug_layout($frame->get_padding_box(), "blue", [0.5, 0.5]); } } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php index 263fd6f1a5..f496f9d0e3 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php @@ -32,105 +32,45 @@ class Inline extends AbstractRenderer // Draw the left border if applicable $bp = $style->get_border_properties(); - $widths = array( + $widths = [ (float)$style->length_in_pt($bp["top"]["width"]), (float)$style->length_in_pt($bp["right"]["width"]), (float)$style->length_in_pt($bp["bottom"]["width"]), (float)$style->length_in_pt($bp["left"]["width"]) - ); + ]; // Draw the background & border behind each child. To do this we need // to figure out just how much space each child takes: list($x, $y) = $frame->get_first_child()->get_position(); $w = null; $h = 0; - // $x += $widths[3]; - // $y += $widths[0]; $this->_set_opacity($frame->get_opacity($style->opacity)); - $first_row = true; - $DEBUGLAYOUTINLINE = $this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutInline(); foreach ($frame->get_children() as $child) { list($child_x, $child_y, $child_w, $child_h) = $child->get_padding_box(); - if (!is_null($w) && $child_x < $x + $w) { - //This branch seems to be supposed to being called on the first part - //of an inline html element, and the part after the if clause for the - //parts after a line break. - //But because $w initially mostly is 0, and gets updated only on the next - //round, this seem to be never executed and the common close always. - - // The next child is on another line. Draw the background & - // borders on this line. - - // Background: - if (($bg = $style->background_color) !== "transparent") { - $this->_canvas->filled_rectangle($x, $y, $w, $h, $bg); - } - - if (($url = $style->background_image) && $url !== "none") { - $this->_background_image($url, $x, $y, $w, $h, $style); - } - - // If this is the first row, draw the left border - if ($first_row) { - if ($bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $bp["left"]["width"] > 0) { - $method = "_border_" . $bp["left"]["style"]; - $this->$method($x, $y, $h + $widths[0] + $widths[2], $bp["left"]["color"], $widths, "left"); - } - $first_row = false; - } - - // Draw the top & bottom borders - if ($bp["top"]["style"] !== "none" && $bp["top"]["color"] !== "transparent" && $bp["top"]["width"] > 0) { - $method = "_border_" . $bp["top"]["style"]; - $this->$method($x, $y, $w + $widths[1] + $widths[3], $bp["top"]["color"], $widths, "top"); - } - - if ($bp["bottom"]["style"] !== "none" && $bp["bottom"]["color"] !== "transparent" && $bp["bottom"]["width"] > 0) { - $method = "_border_" . $bp["bottom"]["style"]; - $this->$method($x, $y + $h + $widths[0] + $widths[2], $w + $widths[1] + $widths[3], $bp["bottom"]["color"], $widths, "bottom"); - } - - // Handle anchors & links - $link_node = null; - if ($frame->get_node()->nodeName === "a") { - $link_node = $frame->get_node(); - } else if ($frame->get_parent()->get_node()->nodeName === "a") { - $link_node = $frame->get_parent()->get_node(); - } - - if ($link_node && $href = $link_node->getAttribute("href")) { - $href = Helpers::build_url($this->_dompdf->getProtocol(), $this->_dompdf->getBaseHost(), $this->_dompdf->getBasePath(), $href); - $this->_canvas->add_link($href, $x, $y, $w, $h); - } - - $x = $child_x; - $y = $child_y; - $w = (float)$child_w; - $h = (float)$child_h; - continue; - } - if (is_null($w)) { $w = (float)$child_w; - }else { + } else { $w += (float)$child_w; } - $h = max($h, $child_h); if ($DEBUGLAYOUTINLINE) { $this->_debug_layout($child->get_border_box(), "blue"); if ($this->_dompdf->getOptions()->getDebugLayoutPaddingBox()) { - $this->_debug_layout($child->get_padding_box(), "blue", array(0.5, 0.5)); + $this->_debug_layout($child->get_padding_box(), "blue", [0.5, 0.5]); } } } + // make sure the border and background start inside the left margin + $left_margin = (float)$style->length_in_pt($style->margin_left); + $x += $left_margin; + // Handle the last child if (($bg = $style->background_color) !== "transparent") { $this->_canvas->filled_rectangle($x + $widths[3], $y + $widths[0], $w, $h, $bg); @@ -152,12 +92,8 @@ class Inline extends AbstractRenderer $w += (float)$widths[1] + (float)$widths[3]; $h += (float)$widths[0] + (float)$widths[2]; - // make sure the border and background start inside the left margin - $left_margin = (float)$style->length_in_pt($style->margin_left); - $x += $left_margin; - // If this is the first row, draw the left border too - if ($first_row && $bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $widths[3] > 0) { + if ($bp["left"]["style"] !== "none" && $bp["left"]["color"] !== "transparent" && $widths[3] > 0) { $method = "_border_" . $bp["left"]["style"]; $this->$method($x, $y, $h, $bp["left"]["color"], $widths, "left"); } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php index fa0bc37310..d3df02902e 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php @@ -27,7 +27,7 @@ class ListBullet extends AbstractRenderer */ static function get_counter_chars($type) { - static $cache = array(); + static $cache = []; if (isset($cache[$type])) { return $cache[$type]; @@ -135,7 +135,7 @@ class ListBullet extends AbstractRenderer { $style = $frame->get_style(); $font_size = $style->font_size; - $line_height = (float)$style->length_in_pt($style->line_height, $frame->get_containing_block("h")); + $line_height = $style->line_height; $this->_set_opacity($frame->get_opacity($style->opacity)); @@ -230,11 +230,13 @@ class ListBullet extends AbstractRenderer $font_family = $style->font_family; $line = $li->get_containing_line(); - list($x, $y) = array($frame->get_position("x"), $line->y); + list($x, $y) = [$frame->get_position("x"), $line->y]; $x -= $this->_dompdf->getFontMetrics()->getTextWidth($text, $font_family, $font_size, $spacing); // Take line-height into account + // TODO: should the line height take into account the line height of the containing block (per previous logic) + // $line_height = (float)$style->length_in_pt($style->line_height, $frame->get_containing_block("h")); $line_height = $style->line_height; $y += ($line_height - $font_size) / 4; // FIXME I thought it should be 2, but 4 gives better results diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php index 8e607927c0..25bdb56a28 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php @@ -29,21 +29,26 @@ class TableCell extends Block return; } - $this->_set_opacity($frame->get_opacity($style->opacity)); - list($x, $y, $w, $h) = $frame->get_border_box(); - - // Draw our background, border and content - if (($bg = $style->background_color) !== "transparent") { - $this->_canvas->filled_rectangle($x, $y, (float)$w, (float)$h, $bg); + $id = $frame->get_node()->getAttribute("id"); + if (strlen($id) > 0) { + $this->_canvas->add_named_dest($id); } - if (($url = $style->background_image) && $url !== "none") { - $this->_background_image($url, $x, $y, $w, $h, $style); - } + $this->_set_opacity($frame->get_opacity($style->opacity)); + list($x, $y, $w, $h) = $frame->get_border_box(); + $table = Table::find_parent_table($frame); if ($table->get_style()->border_collapse !== "collapse") { + if (($bg = $style->background_color) !== "transparent") { + $this->_canvas->filled_rectangle($x, $y, (float)$w, (float)$h, $bg); + } + + if (($url = $style->background_image) && $url !== "none") { + $this->_background_image($url, $x, $y, $w, $h, $style); + } + $this->_render_border($frame); $this->_render_outline($frame); return; @@ -52,6 +57,10 @@ class TableCell extends Block // The collapsed case is slightly complicated... // @todo Add support for outlines here + $background_position_x = $x; $background_position_y = $y; $background_width = (float)$w; $background_height = (float)$h; + $border_right_width = 0; $border_left_width = 0; $border_top_width = 0; $border_bottom_width = 0; + $border_right_length = 0; $border_left_length = 0; $border_top_length = 0; $border_bottom_length = 0; + $cellmap = $table->get_cellmap(); $cells = $cellmap->get_spanned_cells($frame); @@ -77,43 +86,50 @@ class TableCell extends Block } // Draw the horizontal borders + $border_function_calls = []; foreach ($cells["columns"] as $j) { $bp = $cellmap->get_border_properties($i, $j); - - $y = $top_row["y"] - $bp["top"]["width"] / 2; - $col = $cellmap->get_column($j); + $x = $col["x"] - $bp["left"]["width"] / 2; + $y = $top_row["y"] - $bp["top"]["width"] / 2; $w = $col["used-width"] + ($bp["left"]["width"] + $bp["right"]["width"]) / 2; - if ($bp["top"]["style"] !== "none" && $bp["top"]["width"] > 0) { - $widths = array( + if ($bp["top"]["width"] > 0) { + $widths = [ (float)$bp["top"]["width"], (float)$bp["right"]["width"], (float)$bp["bottom"]["width"], (float)$bp["left"]["width"] - ); + ]; + + $border_top_width = max($border_top_width, $widths[0]); + $method = "_border_" . $bp["top"]["style"]; - $this->$method($x, $y, $w, $bp["top"]["color"], $widths, "top", "square"); + $border_function_calls[] = [$method, [$x, $y, $w, $bp["top"]["color"], $widths, "top", "square"]]; } if ($draw_bottom) { $bp = $cellmap->get_border_properties($num_rows - 1, $j); - if ($bp["bottom"]["style"] === "none" || $bp["bottom"]["width"] <= 0) { + if ($bp["bottom"]["width"] <= 0) { continue; } - - $y = $bottom_row["y"] + $bottom_row["height"] + $bp["bottom"]["width"] / 2; - - $widths = array( + + $widths = [ (float)$bp["top"]["width"], (float)$bp["right"]["width"], (float)$bp["bottom"]["width"], (float)$bp["left"]["width"] - ); - $method = "_border_" . $bp["bottom"]["style"]; - $this->$method($x, $y, $w, $bp["bottom"]["color"], $widths, "bottom", "square"); + ]; + $y = $bottom_row["y"] + $bottom_row["height"] + $bp["bottom"]["width"] / 2; + $border_bottom_width = max($border_bottom_width, $widths[2]); + + $method = "_border_" . $bp["bottom"]["style"]; + $border_function_calls[] = [$method, [$x, $y, $w, $bp["bottom"]["color"], $widths, "bottom", "square"]]; + } else { + $adjacent_bp = $cellmap->get_border_properties($i+1, $j); + $border_bottom_width = max($border_bottom_width, $adjacent_bp["top"]["width"]); } } @@ -131,49 +147,73 @@ class TableCell extends Block // Draw the vertical borders foreach ($cells["rows"] as $i) { $bp = $cellmap->get_border_properties($i, $j); - - $x = $left_col["x"] - $bp["left"]["width"] / 2; - $row = $cellmap->get_row($i); + $x = $left_col["x"] - $bp["left"]["width"] / 2; $y = $row["y"] - $bp["top"]["width"] / 2; $h = $row["height"] + ($bp["top"]["width"] + $bp["bottom"]["width"]) / 2; - if ($bp["left"]["style"] !== "none" && $bp["left"]["width"] > 0) { - $widths = array( + if ($bp["left"]["width"] > 0) { + $widths = [ (float)$bp["top"]["width"], (float)$bp["right"]["width"], (float)$bp["bottom"]["width"], (float)$bp["left"]["width"] - ); + ]; + + $border_left_width = max($border_left_width, $widths[3]); $method = "_border_" . $bp["left"]["style"]; - $this->$method($x, $y, $h, $bp["left"]["color"], $widths, "left", "square"); + $border_function_calls[] = [$method, [$x, $y, $h, $bp["left"]["color"], $widths, "left", "square"]]; } if ($draw_right) { $bp = $cellmap->get_border_properties($i, $num_cols - 1); - if ($bp["right"]["style"] === "none" || $bp["right"]["width"] <= 0) { + if ($bp["right"]["width"] <= 0) { continue; } - $x = $right_col["x"] + $right_col["used-width"] + $bp["right"]["width"] / 2; - - $widths = array( + $widths = [ (float)$bp["top"]["width"], (float)$bp["right"]["width"], (float)$bp["bottom"]["width"], (float)$bp["left"]["width"] - ); + ]; + + $x = $right_col["x"] + $right_col["used-width"] + $bp["right"]["width"] / 2; + $border_right_width = max($border_right_width, $widths[1]); $method = "_border_" . $bp["right"]["style"]; - $this->$method($x, $y, $h, $bp["right"]["color"], $widths, "right", "square"); + $border_function_calls[] = [$method, [$x, $y, $h, $bp["right"]["color"], $widths, "right", "square"]]; + } else { + $adjacent_bp = $cellmap->get_border_properties($i, $j+1); + $border_right_width = max($border_right_width, $adjacent_bp["left"]["width"]); } } - $id = $frame->get_node()->getAttribute("id"); - if (strlen($id) > 0) { - $this->_canvas->add_named_dest($id); + // Draw our background, border and content + if (($bg = $style->background_color) !== "transparent") { + $this->_canvas->filled_rectangle( + $background_position_x + ($border_left_width/2), + $background_position_y + ($border_top_width/2), + (float)$background_width - (($border_left_width + $border_right_width)/2), + (float)$background_height - (($border_top_width + $border_bottom_width)/2), + $bg + ); + } + if (($url = $style->background_image) && $url !== "none") { + $this->_background_image( + $url, + $background_position_x + ($border_left_width/2), + $background_position_y + ($border_top_width/2), + (float)$background_width - (($border_left_width + $border_right_width)/2), + (float)$background_height - (($border_top_width + $border_bottom_width)/2), + $style + ); + } + foreach ($border_function_calls as $border_function_call_params) + { + call_user_func_array([$this, $border_function_call_params[0]], $border_function_call_params[1]); } } } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php index 6742f9970e..41ddd87afd 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php @@ -32,13 +32,13 @@ class TableRowGroup extends Block if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutBlocks()) { $this->_debug_layout($frame->get_border_box(), "red"); if ($this->_dompdf->getOptions()->getDebugLayoutPaddingBox()) { - $this->_debug_layout($frame->get_padding_box(), "red", array(0.5, 0.5)); + $this->_debug_layout($frame->get_padding_box(), "red", [0.5, 0.5]); } } if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutLines() && $frame->get_decorator()) { foreach ($frame->get_decorator()->get_line_boxes() as $line) { - $frame->_debug_layout(array($line->x, $line->y, $line->w, $line->h), "orange"); + $frame->_debug_layout([$line->x, $line->y, $line->w, $line->h], "orange"); } } diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php index 51e6e62598..ed458d9055 100644 --- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php +++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php @@ -66,7 +66,7 @@ class Text extends AbstractRenderer $bl = 0; } - $x += (float)$style->length_in_pt(array($ml, $pl, $bl), $cb["w"]); + $x += (float)$style->length_in_pt([$ml, $pl, $bl], $cb["w"]); $font = $style->font_family; $size = $style->font_size; @@ -121,7 +121,7 @@ class Text extends AbstractRenderer // Draw all applicable text-decorations. Start with the root and work our way down. $p = $frame; - $stack = array(); + $stack = []; while ($p = $p->get_parent()) { $stack[] = $p; } @@ -161,7 +161,7 @@ class Text extends AbstractRenderer if ($this->_dompdf->getOptions()->getDebugLayout() && $this->_dompdf->getOptions()->getDebugLayoutLines()) { $text_width = $this->_dompdf->getFontMetrics()->getTextWidth($text, $font, $size); - $this->_debug_layout(array($x, $y, $text_width + ($line->wc - 1) * $word_spacing, $frame_font_size), "orange", array(0.5, 0.5)); + $this->_debug_layout([$x, $y, $text_width + ($line->wc - 1) * $word_spacing, $frame_font_size], "orange", [0.5, 0.5]); } } } diff --git a/civicrm/vendor/pear/mail_mime/.gitattributes b/civicrm/vendor/pear/mail_mime/.gitattributes new file mode 100644 index 0000000000..3726835a68 --- /dev/null +++ b/civicrm/vendor/pear/mail_mime/.gitattributes @@ -0,0 +1,4 @@ +tests/ export-ignore +.gitignore export-ignore +.travis.yml export-ignore +package.xml export-ignore diff --git a/civicrm/packages/Mail/mime.php b/civicrm/vendor/pear/mail_mime/Mail/mime.php similarity index 87% rename from civicrm/packages/Mail/mime.php rename to civicrm/vendor/pear/mail_mime/Mail/mime.php index 8ed49b1087..25342f86aa 100644 --- a/civicrm/packages/Mail/mime.php +++ b/civicrm/vendor/pear/mail_mime/Mail/mime.php @@ -24,8 +24,8 @@ * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * - Neither the name of the authors, nor the names of its contributors - * may be used to endorse or promote products derived from this + * - Neither the name of the authors, nor the names of its contributors + * may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" @@ -494,14 +494,14 @@ class Mail_mime } // Temporarily reset magic_quotes_runtime and read file contents - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); + if (version_compare(PHP_VERSION, '5.4.0', '<')) { + $magic_quotes = @ini_set('magic_quotes_runtime', 0); } $cont = file_get_contents($file_name); - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); + if (isset($magic_quotes)) { + @ini_set('magic_quotes_runtime', $magic_quotes); } return $cont; @@ -769,8 +769,8 @@ class Mail_mime } // Temporarily reset magic_quotes_runtime and read file contents - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); + if (version_compare(PHP_VERSION, '5.4.0', '<')) { + $magic_quotes = @ini_set('magic_quotes_runtime', 0); } if (!($fh = fopen($filename, 'ab'))) { @@ -785,14 +785,14 @@ class Mail_mime fclose($fh); - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); + if (isset($magic_quotes)) { + @ini_set('magic_quotes_runtime', $magic_quotes); } // Write the rest of the message into file $res = $this->get($params, $filename); - return $res ? $res : true; + return $res ?: true; } /** @@ -822,8 +822,8 @@ class Mail_mime } // Temporarily reset magic_quotes_runtime and read file contents - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); + if (version_compare(PHP_VERSION, '5.4.0', '<')) { + $magic_quotes = @ini_set('magic_quotes_runtime', 0); } // Write the rest of the message into file @@ -833,11 +833,11 @@ class Mail_mime fclose($fh); } - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); + if (isset($magic_quotes)) { + @ini_set('magic_quotes_runtime', $magic_quotes); } - return $res ? $res : true; + return $res ?: true; } /** @@ -896,137 +896,7 @@ class Mail_mime $this->checkParams(); - $attachments = count($this->parts) > 0; - $html_images = count($this->html_images) > 0; - $html = strlen($this->htmlbody) > 0; - $calendar = strlen($this->calbody) > 0; - $has_text = strlen($this->txtbody) > 0; - $text = !$html && $has_text; - $mixed_params = array('preamble' => $this->build_params['preamble']); - - switch (true) { - case $calendar && !$attachments && !$text && !$html: - $message = $this->addCalendarPart(); - break; - - case $calendar && !$attachments: - $message = $this->addAlternativePart($mixed_params); - if ($has_text) { - $this->addTextPart($message); - } - if ($html) { - $this->addHtmlPart($message); - } - $this->addCalendarPart($message); - break; - - case $text && !$attachments: - $message = $this->addTextPart(); - break; - - case !$text && !$html && $attachments: - $message = $this->addMixedPart($mixed_params); - for ($i = 0; $i < count($this->parts); $i++) { - $this->addAttachmentPart($message, $this->parts[$i]); - } - break; - - case $text && $attachments: - $message = $this->addMixedPart($mixed_params); - $this->addTextPart($message); - for ($i = 0; $i < count($this->parts); $i++) { - $this->addAttachmentPart($message, $this->parts[$i]); - } - break; - - case $html && !$attachments && !$html_images: - if ($has_text) { - $message = $this->addAlternativePart(); - $this->addTextPart($message); - $this->addHtmlPart($message); - } else { - $message = $this->addHtmlPart(); - } - break; - - case $html && !$attachments && $html_images: - // * Content-Type: multipart/alternative; - // * text - // * Content-Type: multipart/related; - // * html - // * image... - if ($has_text) { - $message = $this->addAlternativePart(); - $this->addTextPart($message); - - $ht = $this->addRelatedPart($message); - $this->addHtmlPart($ht); - for ($i = 0; $i < count($this->html_images); $i++) { - $this->addHtmlImagePart($ht, $this->html_images[$i]); - } - } else { - // * Content-Type: multipart/related; - // * html - // * image... - $message = $this->addRelatedPart(); - $this->addHtmlPart($message); - for ($i = 0; $i < count($this->html_images); $i++) { - $this->addHtmlImagePart($message, $this->html_images[$i]); - } - } - /* - // #13444, #9725: the code below was a non-RFC compliant hack - // * Content-Type: multipart/related; - // * Content-Type: multipart/alternative; - // * text - // * html - // * image... - $message = $this->addRelatedPart(); - if ($has_text) { - $alt = $this->addAlternativePart($message); - $this->addTextPart($alt); - $this->addHtmlPart($alt); - } else { - $this->addHtmlPart($message); - } - for ($i = 0; $i < count($this->html_images); $i++) { - $this->addHtmlImagePart($message, $this->html_images[$i]); - } - */ - break; - - case $html && $attachments && !$html_images: - $message = $this->addMixedPart($mixed_params); - if ($has_text) { - $alt = $this->addAlternativePart($message); - $this->addTextPart($alt); - $this->addHtmlPart($alt); - } else { - $this->addHtmlPart($message); - } - for ($i = 0; $i < count($this->parts); $i++) { - $this->addAttachmentPart($message, $this->parts[$i]); - } - break; - - case $html && $attachments && $html_images: - $message = $this->addMixedPart($mixed_params); - if ($has_text) { - $alt = $this->addAlternativePart($message); - $this->addTextPart($alt); - $rel = $this->addRelatedPart($alt); - } else { - $rel = $this->addRelatedPart($message); - } - $this->addHtmlPart($rel); - for ($i = 0; $i < count($this->html_images); $i++) { - $this->addHtmlImagePart($rel, $this->html_images[$i]); - } - for ($i = 0; $i < count($this->parts); $i++) { - $this->addAttachmentPart($message, $this->parts[$i]); - } - break; - } + $message = $this->buildBodyPart(); if (!isset($message)) { return null; @@ -1047,15 +917,129 @@ class Mail_mime return $headers; } $this->headers = array_merge($this->headers, $headers); - return null; } else { $output = $message->encode($boundary, $skip_head); if (self::isError($output)) { return $output; } $this->headers = array_merge($this->headers, $output['headers']); - return $output['body']; } + + // remember the boundary used, in case we'd handle headers() call later + if (empty($boundary) && !empty($this->headers['Content-Type'])) { + if (preg_match('/boundary="([^"]+)/', $this->headers['Content-Type'], $m)) { + $this->build_params['boundary'] = $m[1]; + } + } + + return $filename ? null : $output['body']; + } + + /** + * Builds the main body MIME part for the email body. It will add a mixed part + * if attachments are found. If no attachments are found it will return an + * alternative part if several body texts are found (text, html, calendar), + * or a single part if only one body text is found. + * + * @return Mail_mimePart|null The corresponding part for the body or null. + * + * @see buildAlternativeParts + * @see buildHtmlParts + */ + protected function buildBodyPart() + { + $parts_count = count($this->parts); + $mixed_params = array('preamble' => $this->build_params['preamble']); + $message = null; + + if ($parts_count > 0) { + $message = $this->addMixedPart($mixed_params); + $this->buildAlternativeParts($message, null); + for ($i = 0; $i < $parts_count; $i++) { + $this->addAttachmentPart($message, $this->parts[$i]); + } + } else { + $message = $this->buildAlternativeParts(null, $mixed_params); + } + + return $message; + } + + /** + * Builds a single text, html, or calendar part only if one of them is found. + * If two or more parts are found, then an alternative part containing them is built. + * + * @param Mail_mimePart|null $parent_part The parent mime part to add + * the part or null + * @param array $mixed_params The needed params to create the + * part when no parent_part is + * received. + * + * @return null|object The main part built inside the method. It will be an + * alternative part or text, html, or calendar part. + * Null if no body texts are found. + */ + protected function buildAlternativeParts($parent_part, $mixed_params = null) + { + $html = strlen($this->htmlbody) > 0; + $calendar = strlen($this->calbody) > 0; + $has_text = strlen($this->txtbody) > 0; + $alternatives_count = $html + $calendar + $has_text; + + if ($alternatives_count > 1) { + $alt_part = $this->addAlternativePart($parent_part ?: $mixed_params); + } else { + $alt_part = null; + } + + $dest_part = $alt_part ?: $parent_part; + $part = null; + + if ($has_text) { + $part = $this->addTextPart($dest_part); + } + + if ($html) { + $part = $this->buildHtmlParts($dest_part); + } + + if ($calendar) { + $part = $this->addCalendarPart($dest_part); + } + + return $dest_part ?: $part; + } + + /** + * Builds html part as a single part or inside a related part with the html + * images thar were found. + * + * @param Mail_mimePart|null $parent_part The object to add the part to, + * or anything else if a new object + * is to be created. + * + * @return Mail_mimePart|null The created part or null if no htmlbody found. + */ + protected function buildHtmlParts($parent_part) + { + if (!strlen($this->htmlbody)) { + return null; + } + + $count_html_images = count($this->html_images); + + if ($count_html_images > 0) { + $part = $this->addRelatedPart($parent_part); + $this->addHtmlPart($part); + } else { + $part = $this->addHtmlPart($parent_part); + } + + for ($i = 0; $i < $count_html_images; $i++) { + $this->addHtmlImagePart($part, $this->html_images[$i]); + } + + return $part; } /** @@ -1076,14 +1060,6 @@ class Mail_mime // Add mime version header $headers['MIME-Version'] = '1.0'; - // Content-Type and Content-Transfer-Encoding headers should already - // be present if get() was called, but we'll re-set them to make sure - // we got them when called before get() or something in the message - // has been changed after get() [#14780] - if (!$skip_content) { - $headers += $this->contentHeaders(); - } - if (!empty($xtra_headers)) { $headers = array_merge($headers, $xtra_headers); } @@ -1094,6 +1070,14 @@ class Mail_mime $this->headers = array_merge($headers, $this->headers); } + // Always reset Content-Type/Content-Transfer-Encoding headers + // In case the message structure changed in meantime + unset($this->headers['Content-Type']); + unset($this->headers['Content-Transfer-Encoding']); + unset($this->headers['Content-Disposition']); + + $this->headers = array_merge($this->headers, $this->contentHeaders()); + $headers = $this->headers; if ($skip_content) { @@ -1104,8 +1088,7 @@ class Mail_mime $headers['Content-Type'] = $this->build_params['ctype']; } - $encodedHeaders = $this->encodeHeaders($headers); - return $encodedHeaders; + return $this->encodeHeaders($headers); } /** @@ -1366,49 +1349,44 @@ class Mail_mime */ protected function contentHeaders() { - $attachments = count($this->parts) > 0; - $html_images = count($this->html_images) > 0; - $html = strlen($this->htmlbody) > 0; - $calendar = strlen($this->calbody) > 0; - $has_text = strlen($this->txtbody) > 0; - $text = !$html && $has_text; - $headers = array(); + $attachments = count($this->parts) > 0; + $html_images = count($this->html_images) > 0; + $html = strlen($this->htmlbody) > 0; + $calendar = strlen($this->calbody) > 0; + $has_text = strlen($this->txtbody) > 0; + $has_alternatives = ($html + $calendar + $has_text) > 1; + $headers = array(); // See get() switch (true) { - case $calendar && !$attachments && !$html && !$has_text: - $headers['Content-Type'] = 'text/calendar'; + case $has_text && !$attachments && !$has_alternatives: + $headers['Content-Type'] = 'text/plain'; break; - case $calendar && !$attachments: - $headers['Content-Type'] = 'multipart/alternative'; + case $html && !$html_images && !$attachments && !$has_alternatives: + $headers['Content-Type'] = 'text/html'; break; - case $text && !$attachments: - $headers['Content-Type'] = 'text/plain'; + case $html && $html_images && !$attachments && !$has_alternatives: + $headers['Content-Type'] = 'multipart/related'; break; - case !$text && !$html && $attachments: - case $text && $attachments: - case $html && $attachments && !$html_images: - case $html && $attachments && $html_images: - $headers['Content-Type'] = 'multipart/mixed'; + case $calendar && !$attachments && !$has_alternatives: + $headers['Content-Type'] = 'text/calendar'; break; - case $html && !$attachments && !$html_images && $has_text: - case $html && !$attachments && $html_images && $has_text: + case $has_alternatives && !$attachments: $headers['Content-Type'] = 'multipart/alternative'; break; - case $html && !$attachments && !$html_images && !$has_text: - $headers['Content-Type'] = 'text/html'; - break; - - case $html && !$attachments && $html_images && !$has_text: - $headers['Content-Type'] = 'multipart/related'; + case $attachments: + $headers['Content-Type'] = 'multipart/mixed'; break; + } - default: + // Note: This is outside of the above switch construct to workaround + // opcache bug: https://bugzilla.opensuse.org/show_bug.cgi?id=1166235 + if (empty($headers)) { return $headers; } diff --git a/civicrm/packages/Mail/mimePart.php b/civicrm/vendor/pear/mail_mime/Mail/mimePart.php similarity index 93% rename from civicrm/packages/Mail/mimePart.php rename to civicrm/vendor/pear/mail_mime/Mail/mimePart.php index 187b1652da..b66c840c45 100644 --- a/civicrm/packages/Mail/mimePart.php +++ b/civicrm/vendor/pear/mail_mime/Mail/mimePart.php @@ -145,27 +145,26 @@ class Mail_mimePart * * @param string $body The body of the mime part if any. * @param array $params An associative array of optional parameters: - * content_type - The content type for this part eg multipart/mixed - * encoding - The encoding to use, 7bit, 8bit, - * base64, or quoted-printable - * charset - Content character set - * cid - Content ID to apply - * disposition - Content disposition, inline or attachment - * filename - Filename parameter for content disposition - * description - Content description - * name_encoding - Encoding of the attachment name (Content-Type) - * By default filenames are encoded using RFC2231 - * Here you can set RFC2047 encoding (quoted-printable - * or base64) instead - * filename_encoding - Encoding of the attachment filename (Content-Disposition) - * See 'name_encoding' - * headers_charset - Charset of the headers e.g. filename, description. - * If not set, 'charset' will be used - * eol - End of line sequence. Default: "\r\n" - * headers - Hash array with additional part headers. Array keys - * can be in form of <header_name>:<parameter_name> - * body_file - Location of file with part's body (instead of $body) - * preamble - short text of multipart part preamble (RFC2046 5.1.1) + * - content_type: The content type for this part eg multipart/mixed + * - encoding: The encoding to use, 7bit, 8bit, base64, or quoted-printable + * - charset: Content character set + * - cid: Content ID to apply + * - disposition: Content disposition, inline or attachment + * - filename: Filename parameter for content disposition + * - description: Content description + * - name_encoding: Encoding of the attachment name (Content-Type) + * By default filenames are encoded using RFC2231 + * Here you can set RFC2047 encoding (quoted-printable + * or base64) instead + * - filename_encoding: Encoding of the attachment filename (Content-Disposition) + * See 'name_encoding' + * - headers_charset: Charset of the headers e.g. filename, description. + * If not set, 'charset' will be used + * - eol: End of line sequence. Default: "\r\n" + * - headers: Hash array with additional part headers. Array keys + * can be in form of <header_name>:<parameter_name> + * - body_file: Location of file with part's body (instead of $body) + * - preamble: short text of multipart part preamble (RFC2046 5.1.1) */ public function __construct($body = '', $params = array()) { @@ -340,12 +339,12 @@ class Mail_mimePart $encoded['body'] = $this->getEncodedData($this->body, $this->encoding); } else if ($this->body_file) { // Temporarily reset magic_quotes_runtime for file reads and writes - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); + if (version_compare(PHP_VERSION, '5.4.0', '<')) { + $magic_quotes = @ini_set('magic_quotes_runtime', 0); } $body = $this->getEncodedDataFromFile($this->body_file, $this->encoding); - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); + if (isset($magic_quotes)) { + @ini_set('magic_quotes_runtime', $magic_quotes); } if (is_a($body, 'PEAR_Error')) { @@ -392,8 +391,8 @@ class Mail_mimePart } // Temporarily reset magic_quotes_runtime for file reads and writes - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); + if (version_compare(PHP_VERSION, '5.4.0', '<')) { + $magic_quotes = @ini_set('magic_quotes_runtime', 0); } $res = $this->encodePartToFile($fh, $boundary, $skip_head); @@ -402,8 +401,8 @@ class Mail_mimePart fclose($fh); } - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); + if (isset($magic_quotes)) { + @ini_set('magic_quotes_runtime', $magic_quotes); } return is_a($res, 'PEAR_Error') ? $res : $this->headers; @@ -773,7 +772,7 @@ class Mail_mimePart $add_len = strlen($prefix . $suffix) + strlen($name) + 6; $len = $add_len + strlen($value); - while ($len > $maxLength) { + while ($len > $maxLength) { // We can cut base64-encoded string every 4 characters $real_len = floor(($maxLength - $add_len) / 4) * 4; $_quote = substr($value, 0, $real_len); @@ -814,6 +813,27 @@ class Mail_mimePart return " {$name}=\"{$quoted}\""; } + /** + * Return charset for mbstring functions. + * Replace ISO-2022-JP with ISO-2022-JP-MS to convert Windows dependent + * characters. + * + * @param string $charset A original charset + * + * @return string A charset for mbstring + * @since 1.10.8 + */ + protected static function mbstringCharset($charset) + { + $mb_charset = $charset; + + if ($charset == 'ISO-2022-JP') { + $mb_charset = 'ISO-2022-JP-MS'; + } + + return $mb_charset; + } + /** * Encodes a header as per RFC2047 * @@ -856,6 +876,7 @@ class Mail_mimePart // exploding quoted strings as well as some regexes below do not // work properly with some charset e.g. ISO-2022-JP, we'll use UTF-8 $mb = $charset != 'UTF-8' && function_exists('mb_convert_encoding'); + $mb_charset = Mail_mimePart::mbstringCharset($charset); // Structured header (make sure addr-spec inside is not encoded) if (!empty($separator)) { @@ -863,7 +884,7 @@ class Mail_mimePart $email_regexp = '([^\s<]+|("[^\r\n"]+"))@\S+'; if ($mb) { - $value = mb_convert_encoding($value, 'UTF-8', $charset); + $value = mb_convert_encoding($value, 'UTF-8', $mb_charset); } $parts = Mail_mimePart::explodeQuotedString("[\t$separator]", $value); @@ -905,7 +926,7 @@ class Mail_mimePart $word = preg_replace('/\\\\([\\\\"])/', '$1', $word); } if ($mb) { - $word = mb_convert_encoding($word, $charset, 'UTF-8'); + $word = mb_convert_encoding($word, $mb_charset, 'UTF-8'); } // find length of last line @@ -929,7 +950,7 @@ class Mail_mimePart $value .= $word.' '.$address; } else { if ($mb) { - $part = mb_convert_encoding($part, $charset, 'UTF-8'); + $part = mb_convert_encoding($part, $mb_charset, 'UTF-8'); } // addr-spec not found, don't encode (?) $value .= $part; @@ -949,14 +970,14 @@ class Mail_mimePart if (preg_match('#([^\s\x21-\x7E]){1}#', $value)) { if ($value[0] == '"' && $value[strlen($value)-1] == '"') { if ($mb) { - $value = mb_convert_encoding($value, 'UTF-8', $charset); + $value = mb_convert_encoding($value, 'UTF-8', $mb_charset); } // de-quote quoted-string, encoding changes // string to atom $value = substr($value, 1, -1); $value = preg_replace('/\\\\([\\\\"])/', '$1', $value); if ($mb) { - $value = mb_convert_encoding($value, $charset, 'UTF-8'); + $value = mb_convert_encoding($value, $mb_charset, 'UTF-8'); } } @@ -1157,11 +1178,12 @@ class Mail_mimePart $prefix = '=?' . $charset . '?'.$encoding.'?'; $suffix = '?='; $maxLength = 75 - strlen($prefix . $suffix); + $mb_charset = Mail_mimePart::mbstringCharset($charset); // A multi-octet character may not be split across adjacent encoded-words // So, we'll loop over each character // mb_stlen() with wrong charset will generate a warning here and return null - $length = mb_strlen($str, $charset); + $length = mb_strlen($str, $mb_charset); $result = ''; $line_length = $prefix_len; @@ -1172,7 +1194,7 @@ class Mail_mimePart for ($i=1; $i<=$length; $i++) { // See #17311 - $chunk = mb_substr($str, $start, $i-$start, $charset); + $chunk = mb_substr($str, $start, $i-$start, $mb_charset); $chunk = base64_encode($chunk); $chunk_len = strlen($chunk); @@ -1202,7 +1224,7 @@ class Mail_mimePart $regexp = '/([\x22-\x29\x2C\x2E\x3A-\x40\x5B-\x60\x7B-\x7E\x80-\xFF])/'; for ($i=0; $i<=$length; $i++) { - $char = mb_substr($str, $i, 1, $charset); + $char = mb_substr($str, $i, 1, $mb_charset); // RFC recommends underline (instead of =20) in place of the space // that's one of the reasons why we're not using iconv_mime_encode() if ($char == ' ') { diff --git a/civicrm/vendor/pear/mail_mime/PATCHES.txt b/civicrm/vendor/pear/mail_mime/PATCHES.txt new file mode 100644 index 0000000000..bb4c565889 --- /dev/null +++ b/civicrm/vendor/pear/mail_mime/PATCHES.txt @@ -0,0 +1,7 @@ +This file was automatically generated by Composer Patches (https://github.com/cweagans/composer-patches) +Patches applied to this directory: + +Apply patch for CRM-3133 wordwrap body to be 750 characters to apply with RFC 2821 +Source: https://raw.githubusercontent.com/civicrm/civicrm-core/74e25f27bb3be32519657539afe8a285c6c99a08/tools/scripts/composer/patches/mail_mime_crm_3133.patch + + diff --git a/civicrm/vendor/pear/mail_mime/README b/civicrm/vendor/pear/mail_mime/README new file mode 100644 index 0000000000..d725a7f6b4 --- /dev/null +++ b/civicrm/vendor/pear/mail_mime/README @@ -0,0 +1,19 @@ +This package is http://pear.php.net/package/Mail_Mime and has been migrated from http://svn.php.net/repository/pear/packages/Mail_Mime + +Please report all new issues via the PEAR bug tracker. + +If this package is marked as unmaintained and you have fixes, please submit your pull requests and start discussion on the pear-qa mailing list. + +To test, run either +$ phpunit tests/ + or +$ pear run-tests -r + +To build, simply +$ pear package + +To install from scratch +$ pear install package.xml + +To upgrade +$ pear upgrade -f package.xml diff --git a/civicrm/vendor/pear/mail_mime/composer.json b/civicrm/vendor/pear/mail_mime/composer.json new file mode 100644 index 0000000000..08498e5640 --- /dev/null +++ b/civicrm/vendor/pear/mail_mime/composer.json @@ -0,0 +1,34 @@ +{ + "authors": [ + { + "email": "cipri@php.net", + "name": "Cipriano Groenendal", + "role": "Lead" + }, + { + "email": "alec@php.net", + "name": "Aleksander Machniak", + "role": "Lead" + } + ], + "autoload": { + "psr-0": { + "Mail": "./" + } + }, + "description": "Mail_Mime provides classes to create MIME messages", + "homepage": "http://pear.php.net/package/Mail_Mime", + "include-path": [ + "./" + ], + "license": "BSD-3-clause", + "name": "pear/mail_mime", + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Mail_Mime", + "source": "https://github.com/pear/Mail_Mime" + }, + "type": "library", + "require": { + "pear/pear-core-minimal": "*" + } +} diff --git a/civicrm/vendor/phenx/php-font-lib/.travis.yml b/civicrm/vendor/phenx/php-font-lib/.travis.yml index 7eb1316ff1..a38c93e9fd 100644 --- a/civicrm/vendor/phenx/php-font-lib/.travis.yml +++ b/civicrm/vendor/phenx/php-font-lib/.travis.yml @@ -5,15 +5,22 @@ env: - PREFER_LOWEST="" php: - - 5.4 - - 5.5 - 5.6 - 7.0 - - hhvm + - 7.1 + - 7.2 + - 7.3 + - 7.4 + - nightly matrix: + include: + - php: 5.4 + dist: trusty + - php: 5.5 + dist: trusty allow_failures: - - php: hhvm + - php: nightly fast_finish: true before_script: diff --git a/civicrm/vendor/phenx/php-font-lib/composer.json b/civicrm/vendor/phenx/php-font-lib/composer.json index 31f7e24729..18cf0ca964 100644 --- a/civicrm/vendor/phenx/php-font-lib/composer.json +++ b/civicrm/vendor/phenx/php-font-lib/composer.json @@ -19,6 +19,6 @@ "bin-dir": "bin" }, "require-dev": { - "phpunit/phpunit": "^4.8" + "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7" } } diff --git a/civicrm/vendor/phenx/php-font-lib/sample-fonts/NotoSansShavian-Regular.ttf b/civicrm/vendor/phenx/php-font-lib/sample-fonts/NotoSansShavian-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..29ebdb5fc2c77895ea77bb7697e462467177b1ea GIT binary patch literal 6020 zcmb7I3tW^{+CS%g-+2e`3=9m~3Ns8ct{0RUX2yi|7GEm5!isrGQ@Mk36HxJjy0nOf zRESZUtEdPrcuPS+vrkjo%+@UPPHCT;e70I<S*FaH{hxPcLfiJYza2btZqIpc=l?v< z83`qXbRjE<NCwBo4>B)p%hV7;hhTMfQdUAPx$1R@5Fs7&ooNaAxx}9s3DFf`?wyvo zD0Sf;`)WeO6@+yAAU!1^SsW@?V()D<TRIlHi{d4Wzefv6&nhT9+~50u!T$}+&t~Q% zB}{CK&BS>v=5w+V3Ui5_48VQ>=KAb}td#O@EwO}X#uFmTxjFd-&J2<Y`IGoQ;kr}x z?neX6X|sAn-6vhVut3O%MYlHd{*%6^86m8*sz4rrX(uA^ReW&HtK6}J5LFvyT2+C< zN!fCLMJOu~q`&(Nm-OUE5*z5NL<JrjR2Hxda`ocJB$bO1x~K$6B?*GWk9h?1(dgLN z(PRW6PNz!;uX153NE8VYxM8d(1jk?}dU!_Q?HbXFUD1w_WImRrlVs71R)%(w1PYDV zv!lO88bQ|xx@tZKU9p=k@NqgZgXD`VNt~c3je>(zp~ZQ6sTa`-&5+TRM1d}u(}}+$ zh2mWBnu~cRF-y&)*i9D)x;WJzNU~}M+Gp;z1#4}jO58xIq|@9Im@X<-YSDMbd=iWt zfxav8!XEciH&|ZHoK7dkkI$&{zVn7Ni3%<+DZBiut1{x=;~&}8Dc{_i-Q0~kU+-=r z`f7K>m_ZV6;7g@AwB;CcO|<U6e$X(3EGN6k|4}dcG#x{i(n?xS&(W`h0AZXkPuMEF zCEOHyhy%o-Vw{*N7KxSOU&K!(Ng61Pm1avzr7CH+^o8`JDp)m9Ri=7RR?B1LCGsx$ z1Nlox68Jrf8&n726*VCijX~4LpfRM15spDZwqvd8z{8kC=^ixXDCjQ_0FH^To@g{i zO+=_sOV!l7xv5?rz)rFc+n*7SwBB;lP6aLeY%pqMS#7o1>=t2av-xJhyt~6|R6Qe$ z4fXow9MC2^Z;J-dBIc;Z7-|geF8FEvb$*Z$VY68*W}QYf%#4cF&z$nR_OIAGY{SA+ znY{u`@&JdSZ(!_8bN8K4*V7Oxt-G_Ti_q&yP3>lzRb$b36N9$CshNGt9@O7z6_2z( z!#-pux!<|;%kl`)3lmv}U<*!o3nsfi!6{>Ks1-`sg*Ucc%$-}Zq4jdo1Nszezk2xU zg3mXK8Iku^mc4fA0PRmddab<DagH5i-?4Wep2`3Jqfu_|!WnQ6Cd96AjtDh{a+Vge zzfKKXxkR16zn@k%2Ak@JPS43m&z+aHwRCLi(7rKqqKCY&BqQhgyYVqQ{VUgITq-Gj zKVeygMz^t7WWSiL6-yr#U;W<KV?`F^_z}_voFKy6$F7qFjW$q#L3T0g&&M|HfBxpt zvi&DQM<+(bH4XpG;2Fm^(;%Vr?$jS0r`WyZTwB*b9Xt{UkF<bS?+#wRve9JKneDbG zc(y1!m(5HY7k#{Na?&qZ52o=tv0hBxvg8Q?{C=Fbg=$DZ1oTl;yHMT0f*K4~ImpWK z$mRFMt}oXBA_Yx^kHzfc=Ph!VnPfEu?%+6Yoh`67r=_Z_?DdwsZPRL(7uC@<_V939 zTKb}*O*D$;IH<(#|G+BPi7kuEbE`MyNq=bAwR0!?_Qp+U(Z~XY(^3q_Gv#=;XmI($ zY4#Jl3qZ3#8c8EKQUGW-^#f1?(Y_W9AmIm88ylMk-B`T%ACWau%)>VOpN#c=n&)up zY8EKIAkE~M_SIN$^TPxyuHFhcT3I&Yt~J#^Lz<4Fskvved-gOzqia7ynzgd_SH60+ zi{qw8zDHXakLUxYh0_2v^`>gE`c^9sJ{mzIIdw7XEdB`jKy@FR4Wbo?`M`fbHN43I z2S*-vq5A5TqzCLv$E8yj0qQS+={4&v9bo6#;C1Dd!azEf`p~DpzOtb09T%oqXW<NZ z8(<s9F<7bHkpp;e^a0;?NcA=bt6zzUfA@M$#*!C?M9+!o8#yPsbSnq=rRhVZalYSQ zEpA^@u{EY&WUq|@-WAJcpDroAm`?ln!-7CqV1g7NT9M-K=PjsBHXltym;htcfgV5~ zIOYbl6vh$FzHltMJJlgrXx9!zgI5c90Z$%YqRpc7GX<;Vf91J+765&sFgBy?m#jZw z4GN-PFL^=$wAI2V)sO&0Qyn$Y`yA2IOzTfySUI90zbAGTMEm;dco?aDG+G!USiOBi zP1M^YbM%>Q3+sxO*G}7(*YbMVn%7!#YU!8hX}0iiyEHRzQ+00n;w|h1tN4N4r>b_E zL!&kowMWseH*c_S0c_}zkJwQ`k`8*9OiFgK*a1~za0meC6M|$astiN+oc(zB5JOZ@ z19O&@QK3F4O581qmk%~w7R7pbB_(_JQLz*SjgmNUw1Fe48HL*g!DvN3@$s>Uw)Bnu zhOdugtnU?a`;gf9StGl{TI;VJp)w8SCmZpViHPAo0bFTjvlR2_02Z)Ug$%IE6?>|V z*xTifJuMGC`VG@4wFDXnX)fB1Y#!&%=2f>^IiV+;S0RDyg0?)SJECNlCrTP`wK5I; z#uFuRpiXm9cT}`EcSVzC@`}dEJrzxoLCc*&jnq!5B(vx1*z~=KkFiqkM>nM2BikFr z@vx5Pw{&RCYYK8ZQoO&#k0)gWVyMw*wfWdBvOxP!ob;QKLl;*>_Z~4cd+oKrX5Vc> zwEwb2p+ouy)DO=q2z@%NSA7`u+g``+fNK<P;%#UU2(C&zbHLzkB||W(70>eS%Aykw z7bebMS)64U)`J~l&MD&p#zYo>Ja|>@cSjc`i`CktnJGmo^ZEAfJGv%LF`ik|^qDXC zqY?@~fIrV!Hj7#EL10VBR92nN?8+f(buutR$(om#b7xSLVMxxNgtL2w7^JCkDRb=G z>nxS)MR8Ws;)B2uI6j6QU$c*|;srs33*rvl4(Yjm&XGI8{%>Z$(O1~Rx3BXW?z{hU zoGZk=oOIo|K_i-wnSFH{q1$&`o4>6QvY4|_NM#`)b08Tb*TFApPy?YVz+7WB_!<1P zKK?qvagyEKD3mbEoDW{nencCn;do8ZJ+`M#;^(-%w{Q-xI6Lx+)qsQEf@I8YZDSUp z<V|+-z4dCkm}Ujl9B0?rb7yhJjJMKIoZ(f#;D`EZjPS7=%%ax^x0}!Har|A1*}UAr z*o6mzjOV?;b(47X^iXb1EAZ^d0}=l9_fc~+C^5=!&nDRxUVM4Yg#~$+D=IF`J2d8x z6H2$n6i<qOF-8d9$=Iq@l<umds#h!6qnZT=lUf@K56n(Dz%2pZfXx_=O%+A<u~2a` zULptg((QG$Rx6HgZyd=H%4s>~YoHOwrU#K$vj?RX*rYbvd}ukaIXsGEbJURRwby$$ zd)El^6WAQovwk4ERkNA$7Z<<jvo37@ToZ8JW+XbJKE!0@1}arZ9hbc5*uCv94gUDW z$T0!qrZ@>}=`qZZRa~+lu@EKU^TwAx3Yn7Fbw~I1^JZ01%G@G6JC(bVJ_rAh$LpB~ z|4K$uuy3=t3anbVP`l&p(>o6H81QCSzFxMm|LW?M_y0`&Xn4st>ni=u?EdSi%2I^E zZ%^K+f9BcHzpYwvwt#)g?$$bA<_U|VL%IctCU?!?RgPQ4&44|`&vluIY1blZU9#!- zN3XqE7JO)J)8YMZ-l0#GwC~*SEFG@To!b`ESDG%Ks9n9^f91-Lj=goRbA1<f=BEbM zUcUN=t!CA<grgozs^&myzbEa~DGwjzt*GP?)K?RK8=Dn1)MDc1J$u)`QQKFq%N}hU z6*p^YazkRpQejD3)jw#!if`6e`dw;%>-4H+wi!VI3nB)2O&T*I)~jLSx*31^OHbSK zzh<-ZjvcK1wN5U(6%Bq1CvYqI6FAiBN-Z|PLs0?+%v16ee~5{&mbHEL#?8gT(u&0T zl&Q1gMukRa>kOvt>(}qyvss$igPm|X*!i6ImRkdMzW74r#0Ia}5o0EKg_{@X^fPQl zt53gm@QQNRz>+EqKH%?9?pycsMG%2YAH`@?PM(;AVrzI_Q_9xTO?Nf~Hv3OrRr_i2 zZ7OU)e2kw^r&;jf{F>vZSQ6X!h)$!OYoBL#nX`^v-{8;h7ZpfV;F3Z$J_fumT}+is z>JcgUp>9n$OpETdySRp1!}FVxx4izxzg0Yka>ibvCG56CVY*#2@BM=P@07DgtQgNh zMFz4(9%OXKq`M%f!Ofx>CfLQiIn8U+IyE;BY&w@C?$fUNl-<ZdWn_u-KFP*UNBjf& zw#g%S9aD*}a$}(q`8&Jb#9DUJPSm%KM)1IXUw*33!=FUWqs#a$N04U@q25vn=g3Sn z*O=n>2Y;LJbphI}aF0bYhP><^OOMg0kgYDb*JX^qcaPO1n)<lMUZfwL>>hU_eW{0M zXEK}aaIbeE!vrt)7{BF(XWip&LX}YL9(N}ZssQo~$sxI95y``^-87O;3h;~BOa_y1 z{OQSP?B-xSlcZoamSmG85{A)8tYo5}`17fJWtKwnL77Ju;5!+V6L7i!O;6%U0#0+P zct}YAMTW965tM0UKDZ^|-0wk~t(;i|tz0s*u#*PrY<%m<K(znNb+V#GK2C9dde{;M zn=Ba3hjh<*k4{f&<k{8ZG}ku)tpK_uz@ikwwaFuMv6h41@Bhw2|Je?YFaMP?8dA9C zX^Q5PFiU{cXnYr-aSO6x1NTP(_PCez*zGvO*YqS2cdGvte{vf-xN{Didzf<b1@QS$ zG6;VQmA^3P&~g7^xceN?4#H{*WDkM{uG<~-Z%$`n-$moP%?=LvI6ohH^81;jSi?R2 ztU}Kb7>`jZXcj`dJV^80MJ7%pVa}1{vXgs*+mr{I0&wEA@j&W$^sx$t`2BZq9{&V~ z0oeOBtZ=;O|0~V7E!-*|M~Se_bvGO(Tt3IX9&tVry74%Q$5>BBDRVyKdQ8FkB;<uy z@*H|TABp&yi0=uQk0t-3oQ=hb9#I>M)oA6!SY^!l#==e>n-j=1^y9G0X*ll`Xyx(_ z_frbqdAW*T^Pw}>k*{XpZgUZb8Q6EBDjp;5&;Q=9dfc9itLJRKau-S9o{E+Pt~}y- zOwUKp5ykc7F`oxLxGz1?%QfVb9MxPqzRM$_06q6E-{&~xIVTTuPo`LewfTx=^FhPy za78TF$Q9WgsQ4w`ei;w>(3szBE~MrI8(g<c^xVcYL<09b{-+w5RrxqmVdbxVC@8$} NhV4$&_`l8`{{+6r`#}Hz literal 0 HcmV?d00001 diff --git a/civicrm/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php b/civicrm/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php index a62daaa995..a0e973bcbd 100644 --- a/civicrm/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php +++ b/civicrm/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php @@ -139,7 +139,7 @@ class AdobeFontMetrics { $this->endSection("CharMetrics"); $kern = $font->getData("kern", "subtable"); - $tree = $kern["tree"]; + $tree = is_array($kern) ? $kern["tree"] : null; if (!$encoding && is_array($tree)) { $this->startSection("KernData"); diff --git a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php index 562f51ea93..7db77e1ae8 100644 --- a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php +++ b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/cmap.php @@ -35,6 +35,12 @@ class cmap extends Table { "rangeShift" => self::uint16, ); + private static $subtable_v12_format = array( + "length" => self::uint32, + "language" => self::uint32, + "ngroups" => self::uint32 + ); + protected function _parse() { $font = $this->getFont(); @@ -46,6 +52,7 @@ class cmap extends Table { for ($i = 0; $i < $data["numberSubtables"]; $i++) { $subtables[] = $font->unpack(self::$subtable_header_format); } + $data["subtables"] = $subtables; foreach ($data["subtables"] as $i => &$subtable) { @@ -53,67 +60,100 @@ class cmap extends Table { $subtable["format"] = $font->readUInt16(); - // @todo Only CMAP version 4 - if ($subtable["format"] != 4) { + // @todo Only CMAP version 4 and 12 + if (($subtable["format"] != 4) && ($subtable["format"] != 12)) { unset($data["subtables"][$i]); $data["numberSubtables"]--; continue; } - $subtable += $font->unpack(self::$subtable_v4_format); - $segCount = $subtable["segCountX2"] / 2; - $subtable["segCount"] = $segCount; + if ($subtable["format"] == 12) { - $endCode = $font->readUInt16Many($segCount); + $font->readUInt16(); - $font->readUInt16(); // reservedPad + $subtable += $font->unpack(self::$subtable_v12_format); - $startCode = $font->readUInt16Many($segCount); - $idDelta = $font->readInt16Many($segCount); + $glyphIndexArray = array(); + $endCodes = array(); + $startCodes = array(); - $ro_start = $font->pos(); - $idRangeOffset = $font->readUInt16Many($segCount); + for ($p = 0; $p < $subtable['ngroups']; $p++) { - $glyphIndexArray = array(); - for ($i = 0; $i < $segCount; $i++) { - $c1 = $startCode[$i]; - $c2 = $endCode[$i]; - $d = $idDelta[$i]; - $ro = $idRangeOffset[$i]; + $startCode = $startCodes[] = $font->readUInt32(); + $endCode = $endCodes[] = $font->readUInt32(); + $startGlyphCode = $font->readUInt32(); - if ($ro > 0) { - $font->seek($subtable["offset"] + 2 * $i + $ro); + for ($c = $startCode; $c <= $endCode; $c++) { + $glyphIndexArray[$c] = $startGlyphCode; + $startGlyphCode++; + } } - for ($c = $c1; $c <= $c2; $c++) { - if ($ro == 0) { - $gid = ($c + $d) & 0xFFFF; + $subtable += array( + "startCode" => $startCodes, + "endCode" => $endCodes, + "glyphIndexArray" => $glyphIndexArray, + ); + + } + else if ($subtable["format"] == 4) { + + $subtable += $font->unpack(self::$subtable_v4_format); + + $segCount = $subtable["segCountX2"] / 2; + $subtable["segCount"] = $segCount; + + $endCode = $font->readUInt16Many($segCount); + + $font->readUInt16(); // reservedPad + + $startCode = $font->readUInt16Many($segCount); + $idDelta = $font->readInt16Many($segCount); + + $ro_start = $font->pos(); + $idRangeOffset = $font->readUInt16Many($segCount); + + $glyphIndexArray = array(); + for ($i = 0; $i < $segCount; $i++) { + $c1 = $startCode[$i]; + $c2 = $endCode[$i]; + $d = $idDelta[$i]; + $ro = $idRangeOffset[$i]; + + if ($ro > 0) { + $font->seek($subtable["offset"] + 2 * $i + $ro); } - else { - $offset = ($c - $c1) * 2 + $ro; - $offset = $ro_start + 2 * $i + $offset; - $font->seek($offset); - $gid = $font->readUInt16(); + for ($c = $c1; $c <= $c2; $c++) { + if ($ro == 0) { + $gid = ($c + $d) & 0xFFFF; + } + else { + $offset = ($c - $c1) * 2 + $ro; + $offset = $ro_start + 2 * $i + $offset; + + $font->seek($offset); + $gid = $font->readUInt16(); - if ($gid != 0) { - $gid = ($gid + $d) & 0xFFFF; + if ($gid != 0) { + $gid = ($gid + $d) & 0xFFFF; + } } - } - if ($gid > 0) { - $glyphIndexArray[$c] = $gid; + if ($gid > 0) { + $glyphIndexArray[$c] = $gid; + } } } - } - $subtable += array( - "endCode" => $endCode, - "startCode" => $startCode, - "idDelta" => $idDelta, - "idRangeOffset" => $idRangeOffset, - "glyphIndexArray" => $glyphIndexArray, - ); + $subtable += array( + "endCode" => $endCode, + "startCode" => $startCode, + "idDelta" => $idDelta, + "idRangeOffset" => $idRangeOffset, + "glyphIndexArray" => $glyphIndexArray, + ); + } } $this->data = $data; diff --git a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php index 2458e20be3..76e3307e8d 100644 --- a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php +++ b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/hmtx.php @@ -27,8 +27,10 @@ class hmtx extends Table { $data = array(); $metrics = $font->readUInt16Many($numOfLongHorMetrics * 2); for ($gid = 0, $mid = 0; $gid < $numOfLongHorMetrics; $gid++) { - $advanceWidth = $metrics[$mid++]; - $leftSideBearing = $metrics[$mid++]; + $advanceWidth = isset($metrics[$mid]) ? $metrics[$mid] : 0; + $mid += 1; + $leftSideBearing = isset($metrics[$mid]) ? $metrics[$mid] : 0; + $mid += 1; $data[$gid] = array($advanceWidth, $leftSideBearing); } diff --git a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php index f6397c31ec..cbc2a2004b 100644 --- a/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php +++ b/civicrm/vendor/phenx/php-font-lib/src/FontLib/Table/Type/loca.php @@ -32,7 +32,7 @@ class loca extends Table { $loc = unpack("n*", $d); for ($i = 0; $i <= $numGlyphs; $i++) { - $data[] = $loc[$i + 1] * 2; + $data[] = isset($loc[$i + 1]) ? $loc[$i + 1] * 2 : 0; } } @@ -43,7 +43,7 @@ class loca extends Table { $loc = unpack("N*", $d); for ($i = 0; $i <= $numGlyphs; $i++) { - $data[] = $loc[$i + 1]; + $data[] = isset($loc[$i + 1]) ? $loc[$i + 1] : 0; } } } diff --git a/civicrm/vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php b/civicrm/vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php index b8a580afd2..b61da0f2e1 100644 --- a/civicrm/vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php +++ b/civicrm/vendor/phenx/php-font-lib/src/FontLib/TrueType/File.php @@ -305,7 +305,7 @@ class File extends BinaryStream { $class = "FontLib\\Table\\Type\\$name_canon"; - if (!isset($this->directory[$tag]) || !class_exists($class)) { + if (!isset($this->directory[$tag]) || !@class_exists($class)) { return; } } diff --git a/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php b/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php index 17c68142eb..15742423de 100644 --- a/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php +++ b/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php @@ -69,9 +69,34 @@ abstract class CSSBlockList extends CSSList { if ($sSpecificitySearch === null) { $aResult[] = $oSelector; } else { - $sComparison = "\$bRes = {$oSelector->getSpecificity()} $sSpecificitySearch;"; - eval($sComparison); - if ($bRes) { + $sComparator = '==='; + $aSpecificitySearch = explode(' ', $sSpecificitySearch); + $iTargetSpecificity = $aSpecificitySearch[0]; + if(count($aSpecificitySearch) > 1) { + $sComparator = $aSpecificitySearch[0]; + $iTargetSpecificity = $aSpecificitySearch[1]; + } + $iTargetSpecificity = (int)$iTargetSpecificity; + $iSelectorSpecificity = $oSelector->getSpecificity(); + $bMatches = false; + switch($sComparator) { + case '<=': + $bMatches = $iSelectorSpecificity <= $iTargetSpecificity; + break; + case '<': + $bMatches = $iSelectorSpecificity < $iTargetSpecificity; + break; + case '>=': + $bMatches = $iSelectorSpecificity >= $iTargetSpecificity; + break; + case '>': + $bMatches = $iSelectorSpecificity > $iTargetSpecificity; + break; + default: + $bMatches = $iSelectorSpecificity === $iTargetSpecificity; + break; + } + if ($bMatches) { $aResult[] = $oSelector; } } diff --git a/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/Document.php b/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/Document.php index 873df755f7..1658aee8db 100644 --- a/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/Document.php +++ b/civicrm/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/Document.php @@ -72,9 +72,6 @@ class Document extends CSSBlockList { * @example getSelectorsBySpecificity('>= 100') */ public function getSelectorsBySpecificity($sSpecificitySearch = null) { - if (is_numeric($sSpecificitySearch) || is_numeric($sSpecificitySearch[0])) { - $sSpecificitySearch = "== $sSpecificitySearch"; - } $aResult = array(); $this->allSelectors($aResult, $sSpecificitySearch); return $aResult; diff --git a/civicrm/xml/schema/Contact/RelationshipCache.xml b/civicrm/xml/schema/Contact/RelationshipCache.xml new file mode 100644 index 0000000000..dd6c2c401a --- /dev/null +++ b/civicrm/xml/schema/Contact/RelationshipCache.xml @@ -0,0 +1,197 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> + +<table> + <base>CRM/Contact</base> + <class>RelationshipCache</class> + <name>civicrm_relationship_cache</name> + <comment>The cache permutes information from the relationship table to facilitate querying. Every relationship is mapped to multiple records in the cache. Joins should begin on the near side and extract info from the far side.</comment> + <add>5.29</add> + <log>false</log> + <icon>fa-handshake-o</icon> + + <field> + <name>id</name> + <type>int unsigned</type> + <title>Relationship Cache ID</title> + <required>true</required> + <comment>Relationship Cache ID</comment> + <add>5.29</add> + </field> + <primaryKey> + <name>id</name> + <autoincrement>true</autoincrement> + </primaryKey> + + <field> + <name>relationship_id</name> + <type>int unsigned</type> + <title>Relationship</title> + <required>true</required> + <comment>id of the relationship (FK to civicrm_relationship.id)</comment> + <add>5.29</add> + </field> + <foreignKey> + <name>relationship_id</name> + <table>civicrm_relationship</table> + <key>id</key> + <add>5.29</add> + <onDelete>CASCADE</onDelete> + </foreignKey> + + <field> + <name>relationship_type_id</name> + <type>int unsigned</type> + <title>Relationship Type</title> + <required>true</required> + <comment>id of the relationship type</comment> + <add>5.29</add> + </field> + <foreignKey> + <name>relationship_type_id</name> + <table>civicrm_relationship_type</table> + <key>id</key> + <add>5.29</add> + <onDelete>CASCADE</onDelete> + </foreignKey> + + <field> + <name>orientation</name> + <type>char</type> + <length>3</length> + <title>Orientation (a_b or b_a)</title> + <required>true</required> + <pseudoconstant> + <callback>CRM_Core_SelectValues::relationshipOrientation</callback> + </pseudoconstant> + <comment>The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.</comment> + <add>5.29</add> + </field> + + <field> + <name>near_contact_id</name> + <type>int unsigned</type> + <title>Contact ID (Near side)</title> + <required>true</required> + <comment>id of the first contact</comment> + <add>5.29</add> + <html> + <type>EntityRef</type> + </html> + </field> + <foreignKey> + <name>near_contact_id</name> + <table>civicrm_contact</table> + <key>id</key> + <add>5.29</add> + <onDelete>CASCADE</onDelete> + </foreignKey> + + <field> + <name>near_relation</name> + <type>varchar</type> + <title>Relationship Name (Near side)</title> + <length>64</length> + <comment>name for relationship of near_contact to far_contact.</comment> + <add>5.29</add> + <pseudoconstant> + <callback>CRM_Core_PseudoConstant::relationshipTypeOptions</callback> + </pseudoconstant> + </field> + + <field> + <name>far_contact_id</name> + <type>int unsigned</type> + <title>Contact ID (Far side)</title> + <required>true</required> + <comment>id of the second contact</comment> + <add>5.29</add> + <html> + <type>EntityRef</type> + </html> + </field> + <foreignKey> + <name>far_contact_id</name> + <table>civicrm_contact</table> + <key>id</key> + <add>5.29</add> + <onDelete>CASCADE</onDelete> + </foreignKey> + + <field> + <name>far_relation</name> + <type>varchar</type> + <title>Relationship Name (Near side)</title> + <length>64</length> + <comment>name for relationship of far_contact to near_contact.</comment> + <add>5.29</add> + <pseudoconstant> + <callback>CRM_Core_PseudoConstant::relationshipTypeOptions</callback> + </pseudoconstant> + </field> + + <index> + <name>UI_relationship</name> + <fieldName>relationship_id</fieldName> + <fieldName>orientation</fieldName> + <unique>true</unique> + <add>5.29</add> + </index> + <index> + <!-- Ex: select ... from contact inner join relcache on contact.id=relcache.near_contact_id and near_relation = 'Parent of' --> + <name>index_nearid_nearrelation</name> + <fieldName>near_contact_id</fieldName> + <fieldName>near_relation</fieldName> + <add>5.29</add> + </index> + <index> + <!-- Ex: select ... from contact inner join relcache on contact.id=relcache.near_contact_id and far_relation = 'Child of' --> + <name>index_nearid_farrelation</name> + <fieldName>near_contact_id</fieldName> + <fieldName>far_relation</fieldName> + <add>5.29</add> + </index> + <index> + <!-- Ex: select relation, count(*) from relcache group by near_relation --> + <name>index_near_relation</name> + <fieldName>near_relation</fieldName> + <add>5.29</add> + </index> + + <!-- Passive mirror fields --> + + <field> + <name>is_active</name> + <type>boolean</type> + <title>Relationship Is Active</title> + <default>1</default> + <comment>is the relationship active ?</comment> + <add>5.29</add> + <html> + <type>CheckBox</type> + </html> + </field> + <field> + <name>start_date</name> + <uniqueName>relationship_start_date</uniqueName> + <type>date</type> + <title>Relationship Start Date</title> + <comment>date when the relationship started</comment> + <add>5.29</add> + <html> + <type>Select Date</type> + <formatType>activityDate</formatType> + </html> + </field> + <field> + <name>end_date</name> + <uniqueName>relationship_end_date</uniqueName> + <type>date</type> + <title>Relationship End Date</title> + <comment>date when the relationship ended</comment> + <add>5.29</add> + <html> + <type>Select Date</type> + <formatType>activityDate</formatType> + </html> + </field> +</table> diff --git a/civicrm/xml/schema/Contact/files.xml b/civicrm/xml/schema/Contact/files.xml index fd9cfb946f..7ffa2241ce 100644 --- a/civicrm/xml/schema/Contact/files.xml +++ b/civicrm/xml/schema/Contact/files.xml @@ -13,6 +13,7 @@ <xi:include href="GroupOrganization.xml" parse="xml" /> <xi:include href="Relationship.xml" parse="xml" /> <xi:include href="RelationshipType.xml" parse="xml" /> +<xi:include href="RelationshipCache.xml" parse="xml" /> <xi:include href="SavedSearch.xml" parse="xml" /> <xi:include href="ContactType.xml" parse="xml" /> diff --git a/civicrm/xml/schema/Event/Cart/Cart.xml b/civicrm/xml/schema/Event/Cart/Cart.xml index 35a96bfb3a..48c4ae3fd2 100644 --- a/civicrm/xml/schema/Event/Cart/Cart.xml +++ b/civicrm/xml/schema/Event/Cart/Cart.xml @@ -3,6 +3,7 @@ <table> <base>CRM/Event/Cart</base> <class>Cart</class> + <useBao>1</useBao> <name>civicrm_event_carts</name> <field> <name>id</name> diff --git a/civicrm/xml/schema/Event/Cart/EventInCart.xml b/civicrm/xml/schema/Event/Cart/EventInCart.xml index 6fd487202d..f8ac8d506b 100644 --- a/civicrm/xml/schema/Event/Cart/EventInCart.xml +++ b/civicrm/xml/schema/Event/Cart/EventInCart.xml @@ -3,6 +3,7 @@ <table> <base>CRM/Event/Cart</base> <class>EventInCart</class> + <useBao>1</useBao> <name>civicrm_events_in_carts</name> <field> <name>id</name> diff --git a/civicrm/xml/templates/civicrm_country.tpl b/civicrm/xml/templates/civicrm_country.tpl index 49c4882e35..93dd535249 100644 --- a/civicrm/xml/templates/civicrm_country.tpl +++ b/civicrm/xml/templates/civicrm_country.tpl @@ -9,7 +9,7 @@ -- Generated from {$smarty.template} -- {$generated} -- -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES utf8mb4 */; /******************************************************* * diff --git a/civicrm/xml/templates/civicrm_data.tpl b/civicrm/xml/templates/civicrm_data.tpl index bff3a755ac..dc9967e4fe 100644 --- a/civicrm/xml/templates/civicrm_data.tpl +++ b/civicrm/xml/templates/civicrm_data.tpl @@ -96,7 +96,7 @@ VALUES {ldelim}domain.address{rdelim}{/ts}',1,1), ('{ts escape="sql"}Subscribe Message{/ts}','Subscribe','{ts escape="sql"}Subscription Confirmation Request{/ts}','{ts escape="sql" 1=$subgroup 2=$suburl}You have a pending subscription to the %1 mailing list. To confirm this subscription, reply to this email or click <a href="%2">here</a>.{/ts}','{ts escape="sql" 1=$subgroup 2=$suburl}You have a pending subscription to the %1 mailing list. To confirm this subscription, reply to this email or click on this link: %2{/ts}',1,1), ('{ts escape="sql"}Welcome Message{/ts}','Welcome','{ts escape="sql"}Your Subscription has been Activated{/ts}','{ts escape="sql" 1=$welgroup}Welcome. Your subscription to the %1 mailing list has been activated.{/ts}','{ts escape="sql" 1=$welgroup}Welcome. Your subscription to the %1 mailing list has been activated.{/ts}',1,1), - ('{ts escape="sql"}Unsubscribe Message{/ts}','Unsubscribe','{ts escape="sql"}Un-subscribe Confirmation{/ts}','{ts escape="sql" 1=$unsubgroup 2=$actresub 3=$actresuburl}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking <a href="%3">here</a>.{/ts}','{ts escape="sql" 1=$unsubgroup 2=$actresub}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking %3{/ts}',1,1), + ('{ts escape="sql"}Unsubscribe Message{/ts}','Unsubscribe','{ts escape="sql"}Un-subscribe Confirmation{/ts}','{ts escape="sql" 1=$unsubgroup 2=$actresub 3=$actresuburl}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking <a href="%3">here</a>.{/ts}','{ts escape="sql" 1=$unsubgroup 2=$actresub 3=$actresuburl}You have been un-subscribed from the following groups: %1. You can re-subscribe by mailing %2 or clicking %3{/ts}',1,1), ('{ts escape="sql"}Resubscribe Message{/ts}','Resubscribe','{ts escape="sql"}Re-subscribe Confirmation{/ts}','{ts escape="sql" 1=$resubgroup 2=$actunsub 3=$actunsuburl}You have been re-subscribed to the following groups: %1. You can un-subscribe by mailing %2 or clicking <a href="%3">here</a>.{/ts}','{ts escape="sql" 1=$resubgroup 2=$actunsub 3=$actunsuburl}You have been re-subscribed to the following groups: %1. You can un-subscribe by mailing %2 or clicking %3{/ts}',1,1), ('{ts escape="sql"}Opt-out Message{/ts}','OptOut','{ts escape="sql"}Opt-out Confirmation{/ts}','{ts escape="sql" 1=$domname}Your email address has been removed from %1 mailing lists.{/ts}','{ts escape="sql" 1=$domname}Your email address has been removed from %1 mailing lists.{/ts}',1,1), ('{ts escape="sql"}Auto-responder{/ts}','Reply','{ts escape="sql"}Please Send Inquiries to Our Contact Email Address{/ts}','{ts escape="sql"}This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.{/ts}','{ts escape="sql"}This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.{/ts}',1,1); @@ -1158,7 +1158,6 @@ VALUES ('AuthNet', '{ts escape="sql"}Authorize.Net{/ts}', NULL,1,0,'{ts escape="sql"}API Login{/ts}','{ts escape="sql"}Payment Key{/ts}','{ts escape="sql"}MD5 Hash{/ts}',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1), ('PayJunction', '{ts escape="sql"}PayJunction{/ts}', NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1), ('eWAY', '{ts escape="sql"}eWAY (Single Currency){/ts}', NULL,0,0,'Customer ID',NULL,NULL,NULL,'Payment_eWAY','https://www.eway.com.au/gateway_cvn/xmlpayment.asp',NULL,NULL,NULL,'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp',NULL,NULL,NULL,1,0), - ('Payment_Express', '{ts escape="sql"}DPS Payment Express{/ts}', NULL,0,0,'User ID','Key','Mac Key - pxaccess only',NULL,'Payment_PaymentExpress','https://www.paymentexpress.com/pleaseenteraurl',NULL,NULL,NULL,'https://www.paymentexpress.com/pleaseenteratesturl',NULL,NULL,NULL,4,0), ('Dummy', '{ts escape="sql"}Dummy Payment Processor{/ts}',NULL,1,1,'{ts escape="sql"}User Name{/ts}',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1), ('Elavon', '{ts escape="sql"}Elavon Payment Processor{/ts}','{ts escape="sql"}Elavon / Nova Virtual Merchant{/ts}',0,0,'{ts escape="sql"}SSL Merchant ID {/ts}','{ts escape="sql"}SSL User ID{/ts}','{ts escape="sql"}SSL PIN{/ts}',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0), ('Realex', '{ts escape="sql"}Realex Payment{/ts}', NULL,0,0,'Merchant ID', 'Password', NULL, 'Account', 'Payment_Realex', 'https://epage.payandshop.com/epage.cgi', NULL, NULL, NULL, 'https://epage.payandshop.com/epage-remote.cgi', NULL, NULL, NULL, 1, 0), @@ -1781,3 +1780,4 @@ VALUES -- in the setup routine based on their tags & using the standard extension install api. -- do not try this at home folks. INSERT IGNORE INTO civicrm_extension (type, full_name, name, label, file, is_active) VALUES ('module', 'sequentialcreditnotes', 'Sequential credit notes', 'Sequential credit notes', 'sequentialcreditnotes', 1); +INSERT IGNORE INTO civicrm_extension (type, full_name, name, label, file, is_active) VALUES ('module', 'eventcart', 'Event cart', 'Event cart', 'eventcart', 1); diff --git a/civicrm/xml/templates/civicrm_state_province.tpl b/civicrm/xml/templates/civicrm_state_province.tpl index a51b0e0be8..614c34c071 100644 --- a/civicrm/xml/templates/civicrm_state_province.tpl +++ b/civicrm/xml/templates/civicrm_state_province.tpl @@ -9,7 +9,7 @@ -- Generated from {$smarty.template} -- {$generated} -- -/*!40101 SET NAMES utf8 */; +/*!40101 SET NAMES utf8mb4 */; INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES (1000, 1228, "AL", "Alabama"), diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml index 90be6845ed..1f477e75ac 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.28.4</version_no> + <version_no>5.29.0</version_no> </version> diff --git a/wp-rest/Plugin.php b/wp-rest/Plugin.php index 3531e597e4..5fadffa290 100644 --- a/wp-rest/Plugin.php +++ b/wp-rest/Plugin.php @@ -352,7 +352,6 @@ class Plugin { $session = \CRM_Core_Session::singleton(); $session->set( 'ufID', $wp_user->ID ); $session->set( 'userID', $uf_match['contact_id'] ); - $session->set( 'ufUniqID', $uf_match['uf_name'] ); } -- GitLab