diff --git a/.gitignore b/.gitignore index 20ab4f93a8de..231ab1469771 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,7 @@ !/ext/civi_pledge !/ext/civi_report !/ext/scheduled_communications +!/ext/user_dashboard backdrop/ bower_components CRM/Case/xml/configuration diff --git a/CRM/ACL/BAO/ACL.php b/CRM/ACL/BAO/ACL.php index dd39cce67904..944faaf3de8b 100644 --- a/CRM/ACL/BAO/ACL.php +++ b/CRM/ACL/BAO/ACL.php @@ -513,7 +513,7 @@ private static function getGroupClause(array $groupIDs, string $operation): stri "; $dao = CRM_Core_DAO::executeQuery($query); $foundGroupIDs = []; - $groupContactCacheClause = FALSE; + $groupContactCacheClause = ''; while ($dao->fetch()) { $foundGroupIDs[] = $dao->id; if (($dao->saved_search_id || $dao->children || $dao->parents)) { @@ -524,7 +524,7 @@ private static function getGroupClause(array $groupIDs, string $operation): stri } } - if ($groupIDs) { + if ($foundGroupIDs) { return "( `contact_a`.id $operation ( SELECT contact_id FROM civicrm_group_contact WHERE group_id IN (" . implode(', ', $foundGroupIDs) . ") AND status = 'Added' @@ -532,7 +532,12 @@ private static function getGroupClause(array $groupIDs, string $operation): stri ) )"; } - return ''; + else { + // Edge case avoiding SQL syntax error if no $foundGroupIDs + return "( + `contact_a`.id $operation (0) + )"; + } } public static function getObjectTableOptions(): array { diff --git a/CRM/ACL/DAO/ACL.php b/CRM/ACL/DAO/ACL.php index 0a9b48d46869..b9b28c82b0ac 100644 --- a/CRM/ACL/DAO/ACL.php +++ b/CRM/ACL/DAO/ACL.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/ACL/ACL.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:56266204b43a487af7bf9963d23e0556) + * (GenCodeChecksum:d49159426e04e1bab16768e2f7ed9551) */ /** @@ -135,7 +135,7 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { /** * Is this property active? * - * @var bool|string|null + * @var bool|string * (SQL type: tinyint) * Note that values will be retrieved from the database as a string. */ @@ -425,6 +425,7 @@ public static function &fields() { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('ACL Is Active?'), 'description' => ts('Is this property active?'), + 'required' => TRUE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, @@ -432,6 +433,7 @@ public static function &fields() { 'token' => FALSE, ], 'where' => 'civicrm_acl.is_active', + 'default' => '1', 'table_name' => 'civicrm_acl', 'entity' => 'ACL', 'bao' => 'CRM_ACL_BAO_ACL', diff --git a/CRM/ACL/Form/ACL.php b/CRM/ACL/Form/ACL.php index b4f52a7c746a..5f5c5b88a5e2 100644 --- a/CRM/ACL/Form/ACL.php +++ b/CRM/ACL/Form/ACL.php @@ -256,7 +256,7 @@ public function postProcess() { } else { $params = $this->controller->exportValues($this->_name); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; $params['entity_table'] = 'civicrm_acl_role'; // Figure out which type of object we're permissioning on and set object_table and object_id. diff --git a/CRM/Activity/BAO/Activity.php b/CRM/Activity/BAO/Activity.php index 5d74041ed6fe..8405e21c4bfe 100644 --- a/CRM/Activity/BAO/Activity.php +++ b/CRM/Activity/BAO/Activity.php @@ -2335,8 +2335,8 @@ public static function getContactActivitySelector(&$params) { $params['rowCount'] = $params['rp']; $params['sort'] = $params['sortBy'] ?? NULL; $params['caseId'] = NULL; - $context = $params['context'] ?? NULL; - $showContactOverlay = !CRM_Utils_String::startsWith($context, "dashlet"); + $context = $params['context'] ?? ''; + $showContactOverlay = !str_starts_with($context, "dashlet"); $activityTypeInfo = civicrm_api3('OptionValue', 'get', [ 'option_group_id' => "activity_type", 'options' => ['limit' => 0], diff --git a/CRM/Activity/Form/Activity.php b/CRM/Activity/Form/Activity.php index 001ea75742a9..cefbe57ae377 100644 --- a/CRM/Activity/Form/Activity.php +++ b/CRM/Activity/Form/Activity.php @@ -550,12 +550,8 @@ public function setDefaultValues() { if (isset($this->_activityId)) { if ($this->_context !== 'standalone') { - $this->assign('target_contact_value', - CRM_Utils_Array::value('target_contact_value', $defaults) - ); - $this->assign('assignee_contact_value', - CRM_Utils_Array::value('assignee_contact_value', $defaults) - ); + $this->assign('target_contact_value', $defaults['target_contact_value'] ?? NULL); + $this->assign('assignee_contact_value', $defaults['assignee_contact_value'] ?? NULL); } // Fixme: why are we getting the wrong keys from upstream? @@ -596,7 +592,7 @@ public function setDefaultValues() { } if ($this->_action & (CRM_Core_Action::DELETE | CRM_Core_Action::RENEW)) { - $this->assign('delName', CRM_Utils_Array::value('subject', $defaults)); + $this->assign('delName', $defaults['subject'] ?? NULL); } if ($this->_activityTypeFile) { @@ -679,13 +675,13 @@ public function buildQuickForm() { $this->addEntityRef($field, $values['label'], $attribute, $required); } else { - $this->add($values['type'], $field, $values['label'], $attribute, $required, CRM_Utils_Array::value('extra', $values)); + $this->add($values['type'], $field, $values['label'], $attribute, $required, $values['extra'] ?? NULL); } } } // CRM-7362 --add campaigns. - CRM_Campaign_BAO_Campaign::addCampaign($this, CRM_Utils_Array::value('campaign_id', $this->_values)); + CRM_Campaign_BAO_Campaign::addCampaign($this, $this->_values['campaign_id'] ?? NULL); // Add engagement level CRM-7775 $buildEngagementLevel = FALSE; diff --git a/CRM/Activity/Selector/Activity.php b/CRM/Activity/Selector/Activity.php index f8682ae5a7ba..d6a2af75e694 100644 --- a/CRM/Activity/Selector/Activity.php +++ b/CRM/Activity/Selector/Activity.php @@ -417,11 +417,11 @@ public function &getRows($action, $offset, $rowCount, $sort, $output = NULL, $ca $row['engagement_level'] = CRM_Utils_Array::value($engagementLevel, $engagementLevels, $engagementLevel); } - $actionLinks = $this->actionLinks(CRM_Utils_Array::value('activity_type_id', $row), - CRM_Utils_Array::value('source_record_id', $row), + $actionLinks = $this->actionLinks($row['activity_type_id'], + $row['source_record_id'] ?? NULL, // CRM-3553 !empty($row['mailingId']), - CRM_Utils_Array::value('activity_id', $row), + $row['activity_id'] ?? NULL, $this->_key ); diff --git a/CRM/Admin/Form/MailSettings.php b/CRM/Admin/Form/MailSettings.php index acdc5744da43..833c0de13753 100644 --- a/CRM/Admin/Form/MailSettings.php +++ b/CRM/Admin/Form/MailSettings.php @@ -211,7 +211,7 @@ public function postProcess() { 'is_contact_creation_disabled_if_no_match', 'is_active', ])) { - $params[$f] = CRM_Utils_Array::value($f, $formValues, FALSE); + $params[$f] = $formValues[$f] ?? FALSE; } else { $params[$f] = $formValues[$f] ?? NULL; diff --git a/CRM/Admin/Form/ParticipantStatusType.php b/CRM/Admin/Form/ParticipantStatusType.php index a3097c7de7e9..7eb952356895 100644 --- a/CRM/Admin/Form/ParticipantStatusType.php +++ b/CRM/Admin/Form/ParticipantStatusType.php @@ -119,7 +119,7 @@ public function postProcess() { } $params['weight'] = CRM_Utils_Weight::updateOtherWeights('CRM_Event_DAO_ParticipantStatusType', $oldWeight, $params['weight']); - $participantStatus = CRM_Event_BAO_ParticipantStatusType::create($params); + $participantStatus = CRM_Event_BAO_ParticipantStatusType::writeRecord($params); if ($participantStatus->id) { if ($this->_action & CRM_Core_Action::UPDATE) { diff --git a/CRM/Admin/Form/PaymentProcessorType.php b/CRM/Admin/Form/PaymentProcessorType.php index 2259920ef8a3..8543723e85a9 100644 --- a/CRM/Admin/Form/PaymentProcessorType.php +++ b/CRM/Admin/Form/PaymentProcessorType.php @@ -146,7 +146,7 @@ public function buildQuickForm($check = FALSE) { $attributes = CRM_Core_DAO::getAttribute('CRM_Financial_DAO_PaymentProcessorType'); foreach ($this->_fields as $field) { - $required = CRM_Utils_Array::value('required', $field, FALSE); + $required = $field['required'] ?? FALSE; $this->add('text', $field['name'], $field['label'], $attributes['name'], $required ); @@ -210,9 +210,9 @@ public function postProcess() { $dao = new CRM_Financial_DAO_PaymentProcessorType(); $dao->id = $this->_id; - $dao->is_default = CRM_Utils_Array::value('is_default', $values, 0); - $dao->is_active = CRM_Utils_Array::value('is_active', $values, 0); - $dao->is_recur = CRM_Utils_Array::value('is_recur', $values, 0); + $dao->is_default = $values['is_default'] ?? 0; + $dao->is_active = $values['is_active'] ?? 0; + $dao->is_recur = $values['is_recur'] ?? 0; $dao->name = $values['name']; $dao->description = $values['description']; diff --git a/CRM/Admin/Form/Preferences/Contribute.php b/CRM/Admin/Form/Preferences/Contribute.php index 7729a1f170ed..e6182123ee51 100644 --- a/CRM/Admin/Form/Preferences/Contribute.php +++ b/CRM/Admin/Form/Preferences/Contribute.php @@ -167,7 +167,7 @@ public function postProcess() { // too. This means that saving from api will not have the desired core effect. // but we should fix that elsewhere - ie. stop abusing the settings // and fix the code repetition associated with invoicing - $invoiceParams['invoicing'] = CRM_Utils_Array::value('invoicing', $params, 0); + $invoiceParams['invoicing'] = $params['invoicing'] ?? 0; Civi::settings()->set('contribution_invoice_settings', $invoiceParams); parent::postProcess(); } diff --git a/CRM/Admin/Form/RelationshipType.php b/CRM/Admin/Form/RelationshipType.php index ce4320617155..c3c07573ddc3 100644 --- a/CRM/Admin/Form/RelationshipType.php +++ b/CRM/Admin/Form/RelationshipType.php @@ -141,7 +141,7 @@ public function postProcess() { else { // store the submitted values in an array $params = $this->exportValues(); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; if ($this->_action & CRM_Core_Action::UPDATE) { $params['id'] = $this->_id; diff --git a/CRM/Admin/Form/ScheduleReminders.php b/CRM/Admin/Form/ScheduleReminders.php index 6b76ffa22c0e..eee74938962d 100644 --- a/CRM/Admin/Form/ScheduleReminders.php +++ b/CRM/Admin/Form/ScheduleReminders.php @@ -22,6 +22,8 @@ */ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form { + protected $retrieveMethod = 'api4'; + /** * @return string */ diff --git a/CRM/Admin/Form/Setting/Miscellaneous.php b/CRM/Admin/Form/Setting/Miscellaneous.php index 6a5a443dfe76..cf0753506856 100644 --- a/CRM/Admin/Form/Setting/Miscellaneous.php +++ b/CRM/Admin/Form/Setting/Miscellaneous.php @@ -62,7 +62,6 @@ public function preProcess() { 'recentItemsMaxCount', 'recentItemsProviders', 'dedupe_default_limit', - 'esm_loader', 'prevNextBackend', 'import_batch_size', ]); diff --git a/CRM/Admin/Page/AJAX.php b/CRM/Admin/Page/AJAX.php index 0cc9bbbb8ced..c82be9ba8dba 100644 --- a/CRM/Admin/Page/AJAX.php +++ b/CRM/Admin/Page/AJAX.php @@ -290,7 +290,7 @@ public static function getTagTree() { $result = []; $whereClauses = ['is_tagset <> 1']; - $orderColumn = 'name'; + $orderColumn = 'label'; // fetch all child tags in Array('parent_tag' => array('child_tag_1', 'child_tag_2', ...)) format $childTagIDs = CRM_Core_BAO_Tag::getChildTags($substring); @@ -300,7 +300,7 @@ public static function getTagTree() { $whereClauses[] = "parent_id = $parent"; } elseif ($substring) { - $whereClauses['substring'] = " name LIKE '%$substring%' "; + $whereClauses['substring'] = " label LIKE '%$substring%' "; if (!empty($parentIDs)) { $whereClauses['substring'] = sprintf(" %s OR id IN (%s) ", $whereClauses['substring'], implode(',', $parentIDs)); } @@ -328,7 +328,7 @@ public static function getTagTree() { $usedFor = (array) explode(',', $dao->used_for); $tag = [ 'id' => $dao->id, - 'text' => $dao->name, + 'text' => $dao->label, 'a_attr' => [ 'class' => 'crm-tag-item', ], diff --git a/CRM/Api4/Page/AJAX.php b/CRM/Api4/Page/AJAX.php index dee72c6f70ed..bea9ec482240 100644 --- a/CRM/Api4/Page/AJAX.php +++ b/CRM/Api4/Page/AJAX.php @@ -137,7 +137,7 @@ private function execute(string $entity, string $action, array $params = [], $in $status = $statusMap[get_class($e)] ?? 500; // Send error code (but don't overwrite success code if there are multiple calls and one was successful) $this->httpResponseCode = $this->httpResponseCode ?: $status; - if (CRM_Core_Permission::check('view debug output')) { + if (CRM_Core_Permission::check('view debug output') || ($e->getErrorData()['show_detailed_error'] ?? FALSE)) { $response['error_code'] = $e->getCode(); $response['error_message'] = $e->getMessage(); if (!empty($params['debug'])) { diff --git a/CRM/Badge/BAO/Layout.php b/CRM/Badge/BAO/Layout.php index c146c3a49c18..e7443c3ef43f 100644 --- a/CRM/Badge/BAO/Layout.php +++ b/CRM/Badge/BAO/Layout.php @@ -50,9 +50,9 @@ public static function setIsActive($id, $is_active) { * @return object */ public static function create(&$params) { - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); - $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['is_default'] = $params['is_default'] ?? FALSE; + $params['is_reserved'] = $params['is_reserved'] ?? FALSE; $params['label_type_id'] = CRM_Core_PseudoConstant::getKey('CRM_Core_DAO_PrintLabel', 'label_type_id', 'Event Badge'); diff --git a/CRM/Badge/Form/Layout.php b/CRM/Badge/Form/Layout.php index 661fb70ac3b5..6f5b9a41892a 100644 --- a/CRM/Badge/Form/Layout.php +++ b/CRM/Badge/Form/Layout.php @@ -9,6 +9,8 @@ +--------------------------------------------------------------------+ */ +use Civi\Token\TokenProcessor; + /** * * @package CRM @@ -49,21 +51,13 @@ public function buildQuickForm(): void { $this->add('text', 'description', ts('Description'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_PrintLabel', 'title')); - // get the tokens - at the point of rendering the token processor is used so - // the only reason for this cut-down set of tokens is UI on this - // screen and / or historical. - $contactTokens = CRM_Core_SelectValues::contactTokens(); - $eventTokens = [ - '{event.event_id}' => ts('Event ID'), - '{event.title}' => ts('Event Title'), - // This layout selection is day + month eg October 27th - // obviously someone felt year was not logical for dates. - '{event.start_date|crmDate:"%B %E%f"}' => ts('Event Start Date'), - '{event.end_date|crmDate:"%B %E%f"}' => ts('Event End Date'), - ]; - $participantTokens = CRM_Core_SelectValues::participantTokens(); - - $tokens = array_merge($contactTokens, $eventTokens, $participantTokens); + $tokenProcessor = new TokenProcessor(Civi::dispatcher(), ['schema' => ['participantId', 'contactId', 'eventId']]); + $tokens = $tokenProcessor->listTokens(); + // This layout selection is day + month eg October 27th + // obviously someone felt year was not logical for dates. + $tokens['{event.start_date|crmDate:"%B %E%f"}'] = ts('Event Start Date - Day & Month'); + $tokens[] = ts('Event End Date - Day & Month'); + asort($tokens); $tokens = array_merge(['spacer' => ts('- spacer -')] + $tokens); diff --git a/CRM/Campaign/BAO/Campaign.php b/CRM/Campaign/BAO/Campaign.php index b8d6b1c4c6a1..b613455438fa 100644 --- a/CRM/Campaign/BAO/Campaign.php +++ b/CRM/Campaign/BAO/Campaign.php @@ -278,160 +278,6 @@ public static function isCampaignEnable(): bool { return self::isComponentEnabled(); } - /** - * Retrieve campaigns for dashboard. - * - * @param array $params - * @param bool $onlyCount - * - * @return array|int - */ - public static function getCampaignSummary($params = [], $onlyCount = FALSE) { - $campaigns = []; - - //build the limit and order clause. - $limitClause = $orderByClause = $lookupTableJoins = NULL; - if (!$onlyCount) { - $sortParams = [ - 'sort' => 'start_date', - 'offset' => 0, - 'rowCount' => 10, - 'sortOrder' => 'desc', - ]; - foreach ($sortParams as $name => $default) { - if (!empty($params[$name])) { - $sortParams[$name] = $params[$name]; - } - } - - //need to lookup tables. - $orderOnCampaignTable = TRUE; - if ($sortParams['sort'] === 'status') { - $orderOnCampaignTable = FALSE; - $lookupTableJoins = " - LEFT JOIN civicrm_option_value status ON ( status.value = campaign.status_id OR campaign.status_id IS NULL ) -INNER JOIN civicrm_option_group grp ON ( status.option_group_id = grp.id AND grp.name = 'campaign_status' )"; - $orderByClause = "ORDER BY status.label {$sortParams['sortOrder']}"; - } - elseif ($sortParams['sort'] === 'campaign_type') { - $orderOnCampaignTable = FALSE; - $lookupTableJoins = " - LEFT JOIN civicrm_option_value campaign_type ON ( campaign_type.value = campaign.campaign_type_id - OR campaign.campaign_type_id IS NULL ) -INNER JOIN civicrm_option_group grp ON ( campaign_type.option_group_id = grp.id AND grp.name = 'campaign_type' )"; - $orderByClause = "ORDER BY campaign_type.label {$sortParams['sortOrder']}"; - } - elseif ($sortParams['sort'] === 'isActive') { - $sortParams['sort'] = 'is_active'; - } - if ($orderOnCampaignTable) { - $orderByClause = "ORDER BY campaign.{$sortParams['sort']} {$sortParams['sortOrder']}"; - } - $orderByClause = ($orderByClause) ? $orderByClause . ", campaign.id {$sortParams['sortOrder']}" : $orderByClause; - $limitClause = "LIMIT {$sortParams['offset']}, {$sortParams['rowCount']}"; - } - - //build the where clause. - $queryParams = $where = []; - if (!empty($params['id'])) { - $where[] = "( campaign.id = %1 )"; - $queryParams[1] = [$params['id'], 'Positive']; - } - if (!empty($params['name'])) { - $where[] = "( campaign.name LIKE %2 )"; - $queryParams[2] = ['%' . trim($params['name']) . '%', 'String']; - } - if (!empty($params['title'])) { - $where[] = "( campaign.title LIKE %3 )"; - $queryParams[3] = ['%' . trim($params['title']) . '%', 'String']; - } - if (!empty($params['start_date'])) { - $startDate = CRM_Utils_Date::processDate($params['start_date']); - $where[] = "( campaign.start_date >= %4 OR campaign.start_date IS NULL )"; - $queryParams[4] = [$startDate, 'String']; - } - if (!empty($params['end_date'])) { - $endDate = CRM_Utils_Date::processDate($params['end_date'], '235959'); - $where[] = "( campaign.end_date <= %5 OR campaign.end_date IS NULL )"; - $queryParams[5] = [$endDate, 'String']; - } - if (!empty($params['description'])) { - $where[] = "( campaign.description LIKE %6 )"; - $queryParams[6] = ['%' . trim($params['description']) . '%', 'String']; - } - if (!empty($params['campaign_type_id'])) { - $where[] = "( campaign.campaign_type_id IN ( %7 ) )"; - $queryParams[7] = [implode(',', (array) $params['campaign_type_id']), 'CommaSeparatedIntegers']; - } - if (!empty($params['status_id'])) { - $where[] = "( campaign.status_id IN ( %8 ) )"; - $queryParams[8] = [implode(',', (array) $params['status_id']), 'CommaSeparatedIntegers']; - } - if (array_key_exists('is_active', $params)) { - $active = "( campaign.is_active = 1 )"; - if (!empty($params['is_active'])) { - $active = "campaign.is_active = 0"; - } - $where[] = $active; - } - $whereClause = NULL; - if (!empty($where)) { - $whereClause = ' WHERE ' . implode(" \nAND ", $where); - } - - $properties = [ - 'id', - 'name', - 'title', - 'start_date', - 'end_date', - 'status_id', - 'is_active', - 'description', - 'campaign_type_id', - ]; - - $selectClause = ' -SELECT campaign.id as id, - campaign.name as name, - campaign.title as title, - campaign.is_active as is_active, - campaign.status_id as status_id, - campaign.end_date as end_date, - campaign.start_date as start_date, - campaign.description as description, - campaign.campaign_type_id as campaign_type_id'; - if ($onlyCount) { - $selectClause = 'SELECT COUNT(*)'; - } - $fromClause = 'FROM civicrm_campaign campaign'; - - $query = "{$selectClause} {$fromClause} {$lookupTableJoins} {$whereClause} {$orderByClause} {$limitClause}"; - - //in case of only count. - if ($onlyCount) { - return (int) CRM_Core_DAO::singleValueQuery($query, $queryParams); - } - - $campaign = CRM_Core_DAO::executeQuery($query, $queryParams); - while ($campaign->fetch()) { - foreach ($properties as $property) { - $campaigns[$campaign->id][$property] = $campaign->$property; - } - } - - return $campaigns; - } - - /** - * Get the campaign count. - * - * @return int - */ - public static function getCampaignCount(): int { - return (int) CRM_Core_DAO::singleValueQuery('SELECT COUNT(*) FROM civicrm_campaign'); - } - /** * Get Campaigns groups. * diff --git a/CRM/Campaign/BAO/Petition.php b/CRM/Campaign/BAO/Petition.php index d75e2b612f09..887370953fa3 100644 --- a/CRM/Campaign/BAO/Petition.php +++ b/CRM/Campaign/BAO/Petition.php @@ -34,136 +34,6 @@ public function __construct() { $this->cookieExpire = (1 * 60 * 60 * 24); } - /** - * Get Petition Details for dashboard. - * - * @param array $params - * @param bool $onlyCount - * - * @return array|int - */ - public static function getPetitionSummary($params = [], $onlyCount = FALSE) { - //build the limit and order clause. - $limitClause = $orderByClause = $lookupTableJoins = NULL; - if (!$onlyCount) { - $sortParams = [ - 'sort' => 'created_date', - 'offset' => 0, - 'rowCount' => 10, - 'sortOrder' => 'desc', - ]; - foreach ($sortParams as $name => $default) { - if (!empty($params[$name])) { - $sortParams[$name] = $params[$name]; - } - } - - //need to lookup tables. - $orderOnPetitionTable = TRUE; - if ($sortParams['sort'] == 'campaign') { - $orderOnPetitionTable = FALSE; - $lookupTableJoins = ' - LEFT JOIN civicrm_campaign campaign ON ( campaign.id = petition.campaign_id )'; - $orderByClause = "ORDER BY campaign.title {$sortParams['sortOrder']}"; - } - elseif ($sortParams['sort'] == 'activity_type') { - $orderOnPetitionTable = FALSE; - $lookupTableJoins = " - LEFT JOIN civicrm_option_value activity_type ON ( activity_type.value = petition.activity_type_id - OR petition.activity_type_id IS NULL ) -INNER JOIN civicrm_option_group grp ON ( activity_type.option_group_id = grp.id AND grp.name = 'activity_type' )"; - $orderByClause = "ORDER BY activity_type.label {$sortParams['sortOrder']}"; - } - elseif ($sortParams['sort'] == 'isActive') { - $sortParams['sort'] = 'is_active'; - } - if ($orderOnPetitionTable) { - $orderByClause = "ORDER BY petition.{$sortParams['sort']} {$sortParams['sortOrder']}"; - } - $limitClause = "LIMIT {$sortParams['offset']}, {$sortParams['rowCount']}"; - } - - //build the where clause. - $queryParams = $where = []; - - //we only have activity type as a - //difference between survey and petition. - $petitionTypeID = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Petition'); - if ($petitionTypeID) { - $where[] = "( petition.activity_type_id = %1 )"; - $queryParams[1] = [$petitionTypeID, 'Positive']; - } - if (!empty($params['title'])) { - $where[] = "( petition.title LIKE %2 )"; - $queryParams[2] = ['%' . trim($params['title']) . '%', 'String']; - } - if (!empty($params['campaign_id'])) { - $where[] = '( petition.campaign_id = %3 )'; - $queryParams[3] = [$params['campaign_id'], 'Positive']; - } - $whereClause = NULL; - if (!empty($where)) { - $whereClause = ' WHERE ' . implode(" \nAND ", $where); - } - - $selectClause = ' -SELECT petition.id as id, - petition.title as title, - petition.is_active as is_active, - petition.result_id as result_id, - petition.is_default as is_default, - petition.campaign_id as campaign_id, - petition.activity_type_id as activity_type_id'; - - if ($onlyCount) { - $selectClause = 'SELECT COUNT(*)'; - } - $fromClause = 'FROM civicrm_survey petition'; - - $query = "{$selectClause} {$fromClause} {$whereClause} {$orderByClause} {$limitClause}"; - - if ($onlyCount) { - return (int) CRM_Core_DAO::singleValueQuery($query, $queryParams); - } - - $petitions = []; - $properties = [ - 'id', - 'title', - 'campaign_id', - 'is_active', - 'is_default', - 'result_id', - 'activity_type_id', - ]; - - $petition = CRM_Core_DAO::executeQuery($query, $queryParams); - while ($petition->fetch()) { - foreach ($properties as $property) { - $petitions[$petition->id][$property] = $petition->$property; - } - } - - return $petitions; - } - - /** - * Get the petition count. - * - */ - public static function getPetitionCount() { - $whereClause = 'WHERE ( 1 )'; - $queryParams = []; - $petitionTypeID = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Petition'); - if ($petitionTypeID) { - $whereClause = "WHERE ( petition.activity_type_id = %1 )"; - $queryParams[1] = [$petitionTypeID, 'Positive']; - } - $query = "SELECT COUNT(*) FROM civicrm_survey petition {$whereClause}"; - - return (int) CRM_Core_DAO::singleValueQuery($query, $queryParams); - } - /** * Takes an associative array and creates a petition signature activity. * diff --git a/CRM/Campaign/BAO/Survey.php b/CRM/Campaign/BAO/Survey.php index 5f9ee274931a..f0220a12b2b6 100644 --- a/CRM/Campaign/BAO/Survey.php +++ b/CRM/Campaign/BAO/Survey.php @@ -63,141 +63,6 @@ public static function create(&$params) { return $dao; } - /** - * Retrieve surveys for dashboard. - * - * @param array $params - * @param bool $onlyCount - * - * @return array|int - */ - public static function getSurveySummary($params = [], $onlyCount = FALSE) { - //build the limit and order clause. - $limitClause = $orderByClause = $lookupTableJoins = NULL; - if (!$onlyCount) { - $sortParams = [ - 'sort' => 'created_date', - 'offset' => 0, - 'rowCount' => 10, - 'sortOrder' => 'desc', - ]; - foreach ($sortParams as $name => $default) { - if (!empty($params[$name])) { - $sortParams[$name] = $params[$name]; - } - } - - //need to lookup tables. - $orderOnSurveyTable = TRUE; - if ($sortParams['sort'] == 'campaign') { - $orderOnSurveyTable = FALSE; - $lookupTableJoins = ' - LEFT JOIN civicrm_campaign campaign ON ( campaign.id = survey.campaign_id )'; - $orderByClause = "ORDER BY campaign.title {$sortParams['sortOrder']}"; - } - elseif ($sortParams['sort'] == 'activity_type') { - $orderOnSurveyTable = FALSE; - $lookupTableJoins = " - LEFT JOIN civicrm_option_value activity_type ON ( activity_type.value = survey.activity_type_id - OR survey.activity_type_id IS NULL ) -INNER JOIN civicrm_option_group grp ON ( activity_type.option_group_id = grp.id AND grp.name = 'activity_type' )"; - $orderByClause = "ORDER BY activity_type.label {$sortParams['sortOrder']}"; - } - elseif ($sortParams['sort'] == 'isActive') { - $sortParams['sort'] = 'is_active'; - } - if ($orderOnSurveyTable) { - $orderByClause = "ORDER BY survey.{$sortParams['sort']} {$sortParams['sortOrder']}"; - } - $limitClause = "LIMIT {$sortParams['offset']}, {$sortParams['rowCount']}"; - } - - //build the where clause. - $queryParams = $where = []; - - //we only have activity type as a - //difference between survey and petition. - $petitionTypeID = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Petition'); - if ($petitionTypeID) { - $where[] = "( survey.activity_type_id != %1 )"; - $queryParams[1] = [$petitionTypeID, 'Positive']; - } - - if (!empty($params['title'])) { - $where[] = "( survey.title LIKE %2 )"; - $queryParams[2] = ['%' . trim($params['title']) . '%', 'String']; - } - if (!empty($params['campaign_id'])) { - $where[] = '( survey.campaign_id = %3 )'; - $queryParams[3] = [$params['campaign_id'], 'Positive']; - } - if (!empty($params['activity_type_id'])) { - $typeId = $params['activity_type_id']; - if (is_array($params['activity_type_id'])) { - $typeId = implode(' , ', $params['activity_type_id']); - } - $where[] = "( survey.activity_type_id IN ( {$typeId} ) )"; - } - $whereClause = NULL; - if (!empty($where)) { - $whereClause = ' WHERE ' . implode(" \nAND ", $where); - } - - $selectClause = ' -SELECT survey.id as id, - survey.title as title, - survey.is_active as is_active, - survey.result_id as result_id, - survey.is_default as is_default, - survey.campaign_id as campaign_id, - survey.activity_type_id as activity_type_id, - survey.release_frequency as release_frequency, - survey.max_number_of_contacts as max_number_of_contacts, - survey.default_number_of_contacts as default_number_of_contacts'; - if ($onlyCount) { - $selectClause = 'SELECT COUNT(*)'; - } - $fromClause = 'FROM civicrm_survey survey'; - - $query = "{$selectClause} {$fromClause} {$lookupTableJoins} {$whereClause} {$orderByClause} {$limitClause}"; - - //return only count. - if ($onlyCount) { - return (int) CRM_Core_DAO::singleValueQuery($query, $queryParams); - } - - $surveys = []; - $properties = [ - 'id', - 'title', - 'campaign_id', - 'is_active', - 'is_default', - 'result_id', - 'activity_type_id', - 'release_frequency', - 'max_number_of_contacts', - 'default_number_of_contacts', - ]; - - $survey = CRM_Core_DAO::executeQuery($query, $queryParams); - while ($survey->fetch()) { - foreach ($properties as $property) { - $surveys[$survey->id][$property] = $survey->$property; - } - } - - return $surveys; - } - - /** - * Get the survey count. - * - */ - public static function getSurveyCount() { - return (int) CRM_Core_DAO::singleValueQuery('SELECT COUNT(*) FROM civicrm_survey'); - } - /** * Get Surveys. * @@ -809,7 +674,7 @@ public static function buildPermissionLinks($surveyId, $enclosedInUL = FALSE, $e ); $menuLinks[] = sprintf('%s', $urlPath, - CRM_Utils_Array::value('title', $link), + $link['title'] ?? NULL, $link['title'] ); } diff --git a/CRM/Campaign/DAO/Survey.php b/CRM/Campaign/DAO/Survey.php index cbf590c94370..8343227f3855 100644 --- a/CRM/Campaign/DAO/Survey.php +++ b/CRM/Campaign/DAO/Survey.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Campaign/Survey.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:754f9a2e62e86ff340afea563b561dec) + * (GenCodeChecksum:b517a686715877b8cde6af69122dcc0d) */ /** @@ -45,6 +45,17 @@ class CRM_Campaign_DAO_Survey extends CRM_Core_DAO { */ public static $_log = FALSE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/survey/add?reset=1', + 'update' => 'civicrm/survey/configure/main?reset=1&action=update&id=[id]', + 'delete' => 'civicrm/survey/delete?reset=1&id=[id]', + ]; + /** * Survey id. * diff --git a/CRM/Campaign/Form/Campaign.php b/CRM/Campaign/Form/Campaign.php index 6a3931a1e994..f5a1c523bb41 100644 --- a/CRM/Campaign/Form/Campaign.php +++ b/CRM/Campaign/Form/Campaign.php @@ -235,14 +235,6 @@ public function buildQuickForm() { 'isDefault' => TRUE, ], ]; - // Skip this button when adding a new campaign from an entityRef - if (empty($_GET['snippet']) || empty($_GET['returnExtra'])) { - $buttons[] = [ - 'type' => 'upload', - 'name' => ts('Save and New'), - 'subName' => 'new', - ]; - } $buttons[] = [ 'type' => 'cancel', 'name' => ts('Cancel'), @@ -299,7 +291,7 @@ public function postProcess() { $params['created_date'] = date('YmdHis'); } // format params - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; $params['last_modified_id'] = $session->get('userID'); $params['last_modified_date'] = date('YmdHis'); $result = self::submit($params, $this); diff --git a/CRM/Campaign/Form/Petition.php b/CRM/Campaign/Form/Petition.php index 1cbd72d69bd1..55a7377984fa 100644 --- a/CRM/Campaign/Form/Petition.php +++ b/CRM/Campaign/Form/Petition.php @@ -291,7 +291,7 @@ public function postProcess() { $params['last_modified_id'] = $session->get('userID'); $params['last_modified_date'] = date('YmdHis'); - $params['is_share'] = CRM_Utils_Array::value('is_share', $params, FALSE); + $params['is_share'] = $params['is_share'] ?? FALSE; if ($this->_surveyId) { @@ -309,9 +309,9 @@ public function postProcess() { $params['created_date'] = date('YmdHis'); } - $params['bypass_confirm'] = CRM_Utils_Array::value('bypass_confirm', $params, 0); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, 0); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, 0); + $params['bypass_confirm'] = $params['bypass_confirm'] ?? 0; + $params['is_active'] = $params['is_active'] ?? 0; + $params['is_default'] = $params['is_default'] ?? 0; $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $this->getEntityId(), $this->getDefaultEntity()); diff --git a/CRM/Campaign/Form/Search/Campaign.php b/CRM/Campaign/Form/Search/Campaign.php deleted file mode 100644 index 3778ccea929b..000000000000 --- a/CRM/Campaign/Form/Search/Campaign.php +++ /dev/null @@ -1,119 +0,0 @@ -_search = $_GET['search'] ?? NULL; - $this->_force = CRM_Utils_Request::retrieve('force', 'Boolean', $this, FALSE, FALSE); - $this->_searchTab = CRM_Utils_Request::retrieve('type', 'String', $this, FALSE, 'campaign'); - - //when we do load tab, lets load the default objects. - $this->assign('force', $this->_force || $this->_searchTab); - $this->assign('searchParams', json_encode($this->get('searchParams'))); - $this->assign('buildSelector', $this->_search); - $this->assign('searchFor', $this->_searchTab); - $this->assign('campaignTypes', json_encode($this->get('campaignTypes'))); - $this->assign('campaignStatus', json_encode($this->get('campaignStatus'))); - $this->assign('suppressForm', TRUE); - - //set the form title. - $this->setTitle(ts('Find Campaigns')); - } - - /** - * Build the form object. - */ - public function buildQuickForm() { - if ($this->_search) { - return; - } - - $attributes = CRM_Core_DAO::getAttribute('CRM_Campaign_DAO_Campaign'); - $this->add('text', 'campaign_title', ts('Title'), $attributes['title']); - - //campaign description. - $this->add('text', 'description', ts('Description'), $attributes['description']); - - $this->add('datepicker', 'start_date', ts('Campaign Start Date'), [], FALSE, ['time' => FALSE]); - $this->add('datepicker', 'end_date', ts('Campaign End Date'), [], FALSE, ['time' => FALSE]); - - //campaign type. - $campaignTypes = CRM_Campaign_PseudoConstant::campaignType(); - $this->add('select', 'campaign_type_id', ts('Campaign Type'), - [ - '' => ts('- select -'), - ] + $campaignTypes - ); - - $this->set('campaignTypes', $campaignTypes); - $this->assign('campaignTypes', json_encode($campaignTypes)); - - //campaign status - $campaignStatus = CRM_Campaign_PseudoConstant::campaignStatus(); - $this->addElement('select', 'status_id', ts('Campaign Status'), - [ - '' => ts('- select -'), - ] + $campaignStatus - ); - $this->set('campaignStatus', $campaignStatus); - $this->assign('campaignStatus', json_encode($campaignStatus)); - - //active campaigns - $this->addElement('select', 'is_active', ts('Is Active?'), [ - '' => ts('- select -'), - '0' => ts('Yes'), - '1' => ts('No'), - ]); - - //build the array of all search params. - $this->_searchParams = []; - foreach ($this->_elements as $element) { - $name = $element->_attributes['name']; - $label = $element->_label; - if ($name == 'qfKey') { - continue; - } - $this->_searchParams[$name] = ($label) ? $label : $name; - } - $this->set('searchParams', $this->_searchParams); - $this->assign('searchParams', json_encode($this->_searchParams)); - } - -} diff --git a/CRM/Campaign/Form/Search/Petition.php b/CRM/Campaign/Form/Search/Petition.php deleted file mode 100644 index 49b94a12265f..000000000000 --- a/CRM/Campaign/Form/Search/Petition.php +++ /dev/null @@ -1,81 +0,0 @@ -_search = $_GET['search'] ?? NULL; - $this->_force = CRM_Utils_Request::retrieve('force', 'Boolean', $this, FALSE, FALSE); - $this->_searchTab = CRM_Utils_Request::retrieve('type', 'String', $this, FALSE, 'petition'); - - //when we do load tab, lets load the default objects. - $this->assign('force', $this->_force || $this->_searchTab); - $this->assign('searchParams', json_encode($this->get('searchParams'))); - $this->assign('buildSelector', $this->_search); - $this->assign('searchFor', $this->_searchTab); - $this->assign('petitionCampaigns', json_encode($this->get('petitionCampaigns'))); - $this->assign('suppressForm', TRUE); - - //set the form title. - $this->setTitle(ts('Find Petition')); - } - - /** - * Build the form object. - */ - public function buildQuickForm() { - if ($this->_search) { - return; - } - - $attributes = CRM_Core_DAO::getAttribute('CRM_Campaign_DAO_Survey'); - $this->add('text', 'petition_title', ts('Title'), $attributes['title']); - - //campaigns - $campaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE); - $this->add('select', 'petition_campaign_id', ts('Campaign'), ['' => ts('- select -')] + $campaigns); - $this->set('petitionCampaigns', $campaigns); - $this->assign('petitionCampaigns', json_encode($campaigns)); - - //build the array of all search params. - $this->_searchParams = []; - foreach ($this->_elements as $element) { - $name = $element->_attributes['name']; - $label = $element->_label; - if ($name == 'qfKey') { - continue; - } - $this->_searchParams[$name] = ($label) ? $label : $name; - } - $this->set('searchParams', $this->_searchParams); - $this->assign('searchParams', json_encode($this->_searchParams)); - } - -} diff --git a/CRM/Campaign/Form/Search/Survey.php b/CRM/Campaign/Form/Search/Survey.php deleted file mode 100644 index 6ad51606c772..000000000000 --- a/CRM/Campaign/Form/Search/Survey.php +++ /dev/null @@ -1,92 +0,0 @@ -_search = $_GET['search'] ?? NULL; - $this->_force = CRM_Utils_Request::retrieve('force', 'Boolean', $this, FALSE, FALSE); - $this->_searchTab = CRM_Utils_Request::retrieve('type', 'String', $this, FALSE, 'survey'); - - //when we do load tab, lets load the default objects. - $this->assign('force', $this->_force || $this->_searchTab); - $this->assign('searchParams', json_encode($this->get('searchParams'))); - $this->assign('buildSelector', $this->_search); - $this->assign('searchFor', $this->_searchTab); - $this->assign('surveyTypes', json_encode($this->get('surveyTypes'))); - $this->assign('surveyCampaigns', json_encode($this->get('surveyCampaigns'))); - $this->assign('suppressForm', TRUE); - - //set the form title. - $this->setTitle(ts('Find Survey')); - } - - /** - * Build the form object. - */ - public function buildQuickForm() { - if ($this->_search) { - return; - } - - $attributes = CRM_Core_DAO::getAttribute('CRM_Campaign_DAO_Survey'); - $this->add('text', 'survey_title', ts('Title'), $attributes['title']); - - //activity Type id - $surveyTypes = CRM_Campaign_BAO_Survey::getSurveyActivityType(); - $this->add('select', 'activity_type_id', - ts('Activity Type'), [ - '' => ts('- select -'), - ] + $surveyTypes - ); - $this->set('surveyTypes', $surveyTypes); - $this->assign('surveyTypes', json_encode($surveyTypes)); - - //campaigns - $campaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE); - $this->add('select', 'survey_campaign_id', ts('Campaign'), ['' => ts('- select -')] + $campaigns); - $this->set('surveyCampaigns', $campaigns); - $this->assign('surveyCampaigns', json_encode($campaigns)); - - //build the array of all search params. - $this->_searchParams = []; - foreach ($this->_elements as $element) { - $name = $element->_attributes['name']; - $label = $element->_label; - if ($name == 'qfKey') { - continue; - } - $this->_searchParams[$name] = ($label) ? $label : $name; - } - $this->set('searchParams', $this->_searchParams); - $this->assign('searchParams', json_encode($this->_searchParams)); - } - -} diff --git a/CRM/Campaign/Form/Survey.php b/CRM/Campaign/Form/Survey.php index e06367831d00..74d1563dad45 100644 --- a/CRM/Campaign/Form/Survey.php +++ b/CRM/Campaign/Form/Survey.php @@ -58,6 +58,9 @@ public function getEntityId() { } public function preProcess() { + // Multistep form doesn't play well with popups + $this->preventAjaxSubmit(); + if (!CRM_Campaign_BAO_Campaign::accessCampaign()) { CRM_Utils_System::permissionDenied(); } @@ -83,6 +86,7 @@ public function preProcess() { // CRM-11480, CRM-11682 // Preload libraries required by the "Questions" tab + $this->assign('perm', (bool) CRM_Core_Permission::check('administer CiviCRM')); CRM_UF_Page_ProfileEditor::registerProfileScripts(); CRM_UF_Page_ProfileEditor::registerSchemas(['IndividualModel', 'ActivityModel']); @@ -101,17 +105,6 @@ public function buildQuickForm() { 'name' => ts('Save'), 'isDefault' => TRUE, ], - [ - 'type' => 'upload', - 'name' => ts('Save and Done'), - 'subName' => 'done', - ], - [ - 'type' => 'upload', - 'name' => ts('Save and Next'), - 'spacing' => '                 ', - 'subName' => 'next', - ], ]; } else { diff --git a/CRM/Campaign/Form/Survey/Main.php b/CRM/Campaign/Form/Survey/Main.php index 2aca9a250b68..e23617951bf2 100644 --- a/CRM/Campaign/Form/Survey/Main.php +++ b/CRM/Campaign/Form/Survey/Main.php @@ -155,8 +155,8 @@ public function postProcess() { $params['created_date'] = date('YmdHis'); } - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, 0); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, 0); + $params['is_active'] = $params['is_active'] ?? 0; + $params['is_default'] = $params['is_default'] ?? 0; $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $this->getEntityId(), $this->getDefaultEntity()); diff --git a/CRM/Campaign/Page/AJAX.php b/CRM/Campaign/Page/AJAX.php index f5e857c2d358..69e15a5585c2 100644 --- a/CRM/Campaign/Page/AJAX.php +++ b/CRM/Campaign/Page/AJAX.php @@ -254,9 +254,9 @@ public static function voterList() { TRUE, FALSE, FALSE, FALSE, FALSE, - CRM_Utils_Array::value('whereClause', $voterClause), + $voterClause['whereClause'] ?? NULL, NULL, - CRM_Utils_Array::value('fromClause', $voterClause) + $voterClause['fromClause'] ?? NULL ); $iTotal = $searchCount; @@ -287,9 +287,9 @@ public static function voterList() { FALSE, FALSE, FALSE, FALSE, FALSE, - CRM_Utils_Array::value('whereClause', $voterClause), + $voterClause['whereClause'] ?? NULL, $sortOrder, - CRM_Utils_Array::value('fromClause', $voterClause) + $voterClause['fromClause'] ?? NULL ); while ($result->fetch()) { $contactID = $result->contact_id; @@ -501,312 +501,4 @@ public static function campaignGroups() { CRM_Utils_JSON::output($results); } - /** - * This function uses the deprecated v1 datatable api and needs updating. See CRM-16353. - * @deprecated - */ - public static function campaignList() { - //get the search criteria params. - $searchCriteria = CRM_Utils_Request::retrieve('searchCriteria', 'String', CRM_Core_DAO::$_nullObject, FALSE, NULL, 'POST'); - $searchParams = explode(',', $searchCriteria); - - $params = $searchRows = []; - foreach ($searchParams as $param) { - if (isset($_POST[$param])) { - $params[$param] = $_POST[$param]; - } - } - - //this is sequence columns on datatable. - $selectorCols = [ - 'id', - 'name', - 'title', - 'description', - 'start_date', - 'end_date', - 'campaign_type_id', - 'campaign_type', - 'status_id', - 'status', - 'is_active', - 'isActive', - 'action', - ]; - - // get the data table params. - $dataTableParams = [ - 'sEcho' => [ - 'name' => 'sEcho', - 'type' => 'Integer', - 'default' => 0, - ], - 'offset' => [ - 'name' => 'iDisplayStart', - 'type' => 'Integer', - 'default' => 0, - ], - 'rowCount' => [ - 'name' => 'iDisplayLength', - 'type' => 'Integer', - 'default' => 25, - ], - 'sort' => [ - 'name' => 'iSortCol_0', - 'type' => 'Integer', - 'default' => 'start_date', - ], - 'sortOrder' => [ - 'name' => 'sSortDir_0', - 'type' => 'String', - 'default' => 'desc', - ], - ]; - foreach ($dataTableParams as $pName => $pValues) { - $$pName = $pValues['default']; - if (!empty($_POST[$pValues['name']])) { - $$pName = CRM_Utils_Type::escape($_POST[$pValues['name']], $pValues['type']); - if ($pName == 'sort') { - $$pName = $selectorCols[$$pName]; - } - } - } - foreach ([ - 'sort', - 'offset', - 'rowCount', - 'sortOrder', - ] as $sortParam) { - $params[$sortParam] = $$sortParam; - } - - $searchCount = CRM_Campaign_BAO_Campaign::getCampaignSummary($params, TRUE); - $campaigns = CRM_Campaign_Page_DashBoard::getCampaignSummary($params); - $iTotal = $searchCount; - - if ($searchCount > 0) { - if ($searchCount < $offset) { - $offset = 0; - } - foreach ($campaigns as $campaignID => $values) { - foreach ($selectorCols as $col) { - $searchRows[$campaignID][$col] = $values[$col] ?? NULL; - } - } - } - - $selectorElements = $selectorCols; - - $iFilteredTotal = $iTotal; - - CRM_Utils_System::setHttpHeader('Content-Type', 'application/json'); - echo CRM_Utils_JSON::encodeDataTableSelector($searchRows, $sEcho, $iTotal, $iFilteredTotal, $selectorElements); - CRM_Utils_System::civiExit(); - } - - /** - * This function uses the deprecated v1 datatable api and needs updating. See CRM-16353. - * @deprecated - */ - public static function surveyList() { - //get the search criteria params. - $searchCriteria = CRM_Utils_Request::retrieve('searchCriteria', 'String', CRM_Core_DAO::$_nullObject, FALSE, NULL, 'POST'); - $searchParams = explode(',', $searchCriteria); - - $params = $searchRows = []; - foreach ($searchParams as $param) { - if (!empty($_POST[$param])) { - $params[$param] = $_POST[$param]; - } - } - - //this is sequence columns on datatable. - $selectorCols = [ - 'id', - 'title', - 'campaign_id', - 'campaign', - 'activity_type_id', - 'activity_type', - 'release_frequency', - 'default_number_of_contacts', - 'max_number_of_contacts', - 'is_default', - 'is_active', - 'isActive', - 'result_id', - 'action', - 'voterLinks', - ]; - - // get the data table params. - $dataTableParams = [ - 'sEcho' => [ - 'name' => 'sEcho', - 'type' => 'Integer', - 'default' => 0, - ], - 'offset' => [ - 'name' => 'iDisplayStart', - 'type' => 'Integer', - 'default' => 0, - ], - 'rowCount' => [ - 'name' => 'iDisplayLength', - 'type' => 'Integer', - 'default' => 25, - ], - 'sort' => [ - 'name' => 'iSortCol_0', - 'type' => 'Integer', - 'default' => 'created_date', - ], - 'sortOrder' => [ - 'name' => 'sSortDir_0', - 'type' => 'String', - 'default' => 'desc', - ], - ]; - foreach ($dataTableParams as $pName => $pValues) { - $$pName = $pValues['default']; - if (!empty($_POST[$pValues['name']])) { - $$pName = CRM_Utils_Type::escape($_POST[$pValues['name']], $pValues['type']); - if ($pName == 'sort') { - $$pName = $selectorCols[$$pName]; - } - } - } - foreach ([ - 'sort', - 'offset', - 'rowCount', - 'sortOrder', - ] as $sortParam) { - $params[$sortParam] = $$sortParam; - } - - $surveys = CRM_Campaign_Page_DashBoard::getSurveySummary($params); - $searchCount = CRM_Campaign_BAO_Survey::getSurveySummary($params, TRUE); - $iTotal = $searchCount; - - if ($searchCount > 0) { - if ($searchCount < $offset) { - $offset = 0; - } - foreach ($surveys as $surveyID => $values) { - foreach ($selectorCols as $col) { - $searchRows[$surveyID][$col] = $values[$col] ?? NULL; - } - } - } - - $selectorElements = $selectorCols; - - $iFilteredTotal = $iTotal; - - CRM_Utils_System::setHttpHeader('Content-Type', 'application/json'); - echo CRM_Utils_JSON::encodeDataTableSelector($searchRows, $sEcho, $iTotal, $iFilteredTotal, $selectorElements); - CRM_Utils_System::civiExit(); - } - - /** - * This function uses the deprecated v1 datatable api and needs updating. See CRM-16353. - * @deprecated - */ - public static function petitionList() { - //get the search criteria params. - $searchCriteria = CRM_Utils_Request::retrieve('searchCriteria', 'String', CRM_Core_DAO::$_nullObject, FALSE, NULL, 'POST'); - $searchParams = explode(',', $searchCriteria); - - $params = $searchRows = []; - foreach ($searchParams as $param) { - if (!empty($_POST[$param])) { - $params[$param] = $_POST[$param]; - } - } - - //this is sequence columns on datatable. - $selectorCols = [ - 'id', - 'title', - 'campaign_id', - 'campaign', - 'activity_type_id', - 'activity_type', - 'is_default', - 'is_active', - 'isActive', - 'action', - ]; - - // get the data table params. - $dataTableParams = [ - 'sEcho' => [ - 'name' => 'sEcho', - 'type' => 'Integer', - 'default' => 0, - ], - 'offset' => [ - 'name' => 'iDisplayStart', - 'type' => 'Integer', - 'default' => 0, - ], - 'rowCount' => [ - 'name' => 'iDisplayLength', - 'type' => 'Integer', - 'default' => 25, - ], - 'sort' => [ - 'name' => 'iSortCol_0', - 'type' => 'Integer', - 'default' => 'created_date', - ], - 'sortOrder' => [ - 'name' => 'sSortDir_0', - 'type' => 'String', - 'default' => 'desc', - ], - ]; - foreach ($dataTableParams as $pName => $pValues) { - $$pName = $pValues['default']; - if (!empty($_POST[$pValues['name']])) { - $$pName = CRM_Utils_Type::escape($_POST[$pValues['name']], $pValues['type']); - if ($pName == 'sort') { - $$pName = $selectorCols[$$pName]; - } - } - } - foreach ([ - 'sort', - 'offset', - 'rowCount', - 'sortOrder', - ] as $sortParam) { - $params[$sortParam] = $$sortParam; - } - - $petitions = CRM_Campaign_Page_DashBoard::getPetitionSummary($params); - $searchCount = CRM_Campaign_BAO_Petition::getPetitionSummary($params, TRUE); - $iTotal = $searchCount; - - if ($searchCount > 0) { - if ($searchCount < $offset) { - $offset = 0; - } - foreach ($petitions as $petitionID => $values) { - foreach ($selectorCols as $col) { - $searchRows[$petitionID][$col] = $values[$col] ?? NULL; - } - } - } - - $selectorElements = $selectorCols; - - $iFilteredTotal = $iTotal; - - CRM_Utils_System::setHttpHeader('Content-Type', 'application/json'); - echo CRM_Utils_JSON::encodeDataTableSelector($searchRows, $sEcho, $iTotal, $iFilteredTotal, $selectorElements); - CRM_Utils_System::civiExit(); - } - } diff --git a/CRM/Campaign/Page/DashBoard.php b/CRM/Campaign/Page/DashBoard.php deleted file mode 100644 index 013ebcec4da8..000000000000 --- a/CRM/Campaign/Page/DashBoard.php +++ /dev/null @@ -1,499 +0,0 @@ - [ - 'name' => ts('Edit'), - 'url' => 'civicrm/campaign/add', - 'qs' => 'reset=1&action=update&id=%%id%%', - 'title' => ts('Update Campaign'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'title' => ts('Disable Campaign'), - 'ref' => 'crm-enable-disable', - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'title' => ts('Enable Campaign'), - 'ref' => 'crm-enable-disable', - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/campaign/add', - 'qs' => 'action=delete&reset=1&id=%%id%%', - 'title' => ts('Delete Campaign'), - ], - ]; - } - - return self::$_campaignActionLinks; - } - - /** - * @return array - */ - public static function surveyActionLinks() { - // check if variable _actionsLinks is populated - if (!isset(self::$_surveyActionLinks)) { - self::$_surveyActionLinks = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/survey/configure/main', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Update Survey'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Survey'), - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Survey'), - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/survey/delete', - 'qs' => 'id=%%id%%&reset=1', - 'title' => ts('Delete Survey'), - ], - ]; - } - - return self::$_surveyActionLinks; - } - - /** - * @return array - */ - public static function petitionActionLinks() { - if (!isset(self::$_petitionActionLinks)) { - self::$_petitionActionLinks = self::surveyActionLinks(); - self::$_petitionActionLinks[CRM_Core_Action::UPDATE] = [ - 'name' => ts('Edit'), - 'url' => 'civicrm/petition/add', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Update Petition'), - ]; - self::$_petitionActionLinks[CRM_Core_Action::DISABLE] = [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Petition'), - ]; - self::$_petitionActionLinks[CRM_Core_Action::ENABLE] = [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Petition'), - ]; - self::$_petitionActionLinks[CRM_Core_Action::DELETE] = [ - 'name' => ts('Delete'), - 'url' => 'civicrm/petition/add', - 'qs' => 'action=delete&id=%%id%%&reset=1', - 'title' => ts('Delete Petition'), - ]; - self::$_petitionActionLinks[CRM_Core_Action::PROFILE] = [ - 'name' => ts('Sign'), - 'url' => 'civicrm/petition/sign', - 'qs' => 'sid=%%id%%&reset=1', - 'title' => ts('Sign Petition'), - 'fe' => TRUE, - //CRM_Core_Action::PROFILE is used because there isn't a specific action for sign - ]; - self::$_petitionActionLinks[CRM_Core_Action::BROWSE] = [ - 'name' => ts('Signatures'), - 'url' => 'civicrm/activity/search', - 'qs' => 'survey=%%id%%&force=1', - 'title' => ts('List the signatures'), - //CRM_Core_Action::PROFILE is used because there isn't a specific action for sign - ]; - } - - return self::$_petitionActionLinks; - } - - /** - * @return mixed - */ - public function browseCampaign() { - // ensure valid javascript (these must have a value set) - $this->assign('searchParams', json_encode(NULL)); - $this->assign('campaignTypes', json_encode(NULL)); - $this->assign('campaignStatus', json_encode(NULL)); - - $this->assign('addCampaignUrl', CRM_Utils_System::url('civicrm/campaign/add', 'reset=1&action=add')); - $campaignCount = CRM_Campaign_BAO_Campaign::getCampaignCount(); - //don't load find interface when no campaigns in db. - if (!$campaignCount) { - $this->assign('hasCampaigns', FALSE); - return; - } - $this->assign('hasCampaigns', TRUE); - - //build the ajaxify campaign search and selector. - $controller = new CRM_Core_Controller_Simple('CRM_Campaign_Form_Search_Campaign', ts('Search Campaigns')); - $controller->set('searchTab', 'campaign'); - $controller->setEmbedded(TRUE); - $controller->process(); - return $controller->run(); - } - - /** - * @param array $params - * - * @return array - */ - public static function getCampaignSummary($params = []) { - $campaignsData = []; - - //get the campaigns. - $campaigns = CRM_Campaign_BAO_Campaign::getCampaignSummary($params); - if (!empty($campaigns)) { - $config = CRM_Core_Config::singleton(); - $campaignType = CRM_Campaign_PseudoConstant::campaignType(); - $campaignStatus = CRM_Campaign_PseudoConstant::campaignStatus(); - $properties = [ - 'id', - 'name', - 'title', - 'status_id', - 'description', - 'campaign_type_id', - 'is_active', - 'start_date', - 'end_date', - ]; - foreach ($campaigns as $cmpid => $campaign) { - foreach ($properties as $prop) { - $campaignsData[$cmpid][$prop] = $campaign[$prop] ?? NULL; - } - $statusId = $campaign['status_id'] ?? NULL; - $campaignsData[$cmpid]['status'] = $campaignStatus[$statusId] ?? NULL; - $campaignsData[$cmpid]['campaign_id'] = $campaign['id']; - $campaignsData[$cmpid]['campaign_type'] = $campaignType[$campaign['campaign_type_id']]; - - $action = array_sum(array_keys(self::campaignActionLinks())); - if ($campaign['is_active']) { - $action -= CRM_Core_Action::ENABLE; - } - else { - $action -= CRM_Core_Action::DISABLE; - } - - $isActive = ts('No'); - if ($campaignsData[$cmpid]['is_active']) { - $isActive = ts('Yes'); - } - $campaignsData[$cmpid]['isActive'] = $isActive; - - if (!empty($campaignsData[$cmpid]['start_date'])) { - $campaignsData[$cmpid]['start_date'] = CRM_Utils_Date::customFormat($campaignsData[$cmpid]['start_date'], - $config->dateformatFull - ); - } - if (!empty($campaignsData[$cmpid]['end_date'])) { - $campaignsData[$cmpid]['end_date'] = CRM_Utils_Date::customFormat($campaignsData[$cmpid]['end_date'], - $config->dateformatFull - ); - } - $campaignsData[$cmpid]['action'] = CRM_Core_Action::formLink(self::campaignActionLinks(), - $action, - ['id' => $campaign['id']], - ts('more'), - FALSE, - 'campaign.dashboard.row', - 'Campaign', - $campaign['id'] - ); - } - } - - return $campaignsData; - } - - /** - * @return mixed - */ - public function browseSurvey() { - // ensure valid javascript - this must have a value set - $this->assign('searchParams', json_encode(NULL)); - $this->assign('surveyTypes', json_encode(NULL)); - $this->assign('surveyCampaigns', json_encode(NULL)); - - $this->assign('addSurveyUrl', CRM_Utils_System::url('civicrm/survey/add', 'reset=1&action=add')); - - $surveyCount = CRM_Campaign_BAO_Survey::getSurveyCount(); - //don't load find interface when no survey in db. - if (!$surveyCount) { - $this->assign('hasSurveys', FALSE); - return; - } - $this->assign('hasSurveys', TRUE); - - //build the ajaxify survey search and selector. - $controller = new CRM_Core_Controller_Simple('CRM_Campaign_Form_Search_Survey', ts('Search Survey')); - $controller->set('searchTab', 'survey'); - $controller->setEmbedded(TRUE); - $controller->process(); - return $controller->run(); - } - - /** - * @param array $params - * - * @return array - */ - public static function getSurveySummary($params = []) { - $surveysData = []; - - //get the survey. - $config = CRM_Core_Config::singleton(); - $surveys = CRM_Campaign_BAO_Survey::getSurveySummary($params); - if (!empty($surveys)) { - $campaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE); - $surveyType = CRM_Campaign_BAO_Survey::getSurveyActivityType(); - foreach ($surveys as $sid => $survey) { - $surveysData[$sid] = $survey; - $campaignId = $survey['campaign_id'] ?? NULL; - $surveysData[$sid]['campaign'] = $campaigns[$campaignId] ?? NULL; - $surveysData[$sid]['activity_type'] = $surveyType[$survey['activity_type_id']]; - if (!empty($survey['release_frequency'])) { - $surveysData[$sid]['release_frequency'] = ts('1 Day', ['plural' => '%count Days', 'count' => $survey['release_frequency']]); - } - - $action = array_sum(array_keys(self::surveyActionLinks($surveysData[$sid]['activity_type']))); - if ($survey['is_active']) { - $action -= CRM_Core_Action::ENABLE; - } - else { - $action -= CRM_Core_Action::DISABLE; - } - - $isActive = ts('No'); - if ($surveysData[$sid]['is_active']) { - $isActive = ts('Yes'); - } - $surveysData[$sid]['isActive'] = $isActive; - - // For some reason, 'is_default' is coming as a string. - $surveysData[$sid]['is_default'] = boolval($surveysData[$sid]['is_default']); - - if ($surveysData[$sid]['result_id']) { - $resultSet = '' . ts('Result Set') . ''; - $surveysData[$sid]['result_id'] = $resultSet; - } - else { - $resultUrl = CRM_Utils_System::url("civicrm/survey/configure/results", "action=update&id={$sid}&reset=1"); - $surveysData[$sid]['result_id'] = "(" . ts('Incomplete. Click to configure result set.') . ')'; - } - $surveysData[$sid]['action'] = CRM_Core_Action::formLink(self::surveyActionLinks($surveysData[$sid]['activity_type']), - $action, - ['id' => $sid], - ts('more'), - FALSE, - 'survey.dashboard.row', - 'Survey', - $sid - ); - - if (($surveysData[$sid]['activity_type'] ?? NULL) != 'Petition') { - $surveysData[$sid]['voterLinks'] = CRM_Campaign_BAO_Survey::buildPermissionLinks($sid, - TRUE, - ts('more') - ); - } - - if ($reportID = CRM_Campaign_BAO_Survey::getReportID($sid)) { - $url = CRM_Utils_System::url("civicrm/report/instance/{$reportID}", 'reset=1'); - $surveysData[$sid]['title'] = "{$surveysData[$sid]['title']}"; - } - } - } - - return $surveysData; - } - - /** - * Browse petitions. - * - * @return mixed|null - */ - public function browsePetition() { - // Ensure valid javascript - this must have a value set - $this->assign('searchParams', json_encode(NULL)); - $this->assign('petitionCampaigns', json_encode(NULL)); - - $this->assign('addPetitionUrl', CRM_Utils_System::url('civicrm/petition/add', 'reset=1&action=add')); - - $petitionCount = CRM_Campaign_BAO_Petition::getPetitionCount(); - //don't load find interface when no petition in db. - if (!$petitionCount) { - $this->assign('hasPetitions', FALSE); - return NULL; - } - $this->assign('hasPetitions', TRUE); - - // Build the ajax petition search and selector. - $controller = new CRM_Core_Controller_Simple('CRM_Campaign_Form_Search_Petition', ts('Search Petition')); - $controller->set('searchTab', 'petition'); - $controller->setEmbedded(TRUE); - $controller->process(); - return $controller->run(); - } - - /** - * @param array $params - * - * @return array - */ - public static function getPetitionSummary($params = []) { - $config = CRM_Core_Config::singleton(); - $petitionsData = []; - - //get the petitions. - $petitions = CRM_Campaign_BAO_Petition::getPetitionSummary($params); - if (!empty($petitions)) { - $campaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE); - $petitionType = CRM_Campaign_BAO_Survey::getSurveyActivityType('label', TRUE); - foreach ($petitions as $pid => $petition) { - $petitionsData[$pid] = $petition; - $camapignId = $petition['campaign_id'] ?? NULL; - $petitionsData[$pid]['campaign'] = $campaigns[$camapignId] ?? NULL; - $petitionsData[$pid]['activity_type'] = $petitionType[$petition['activity_type_id']]; - - $action = array_sum(array_keys(self::petitionActionLinks())); - - if ($petition['is_active']) { - $action -= CRM_Core_Action::ENABLE; - } - else { - $action -= CRM_Core_Action::DISABLE; - } - - $isActive = ts('No'); - if ($petitionsData[$pid]['is_active']) { - $isActive = ts('Yes'); - } - $petitionsData[$pid]['isActive'] = $isActive; - - // For some reason, 'is_default' is coming as a string. - $petitionsData[$pid]['is_default'] = boolval($petitionsData[$pid]['is_default']); - - $petitionsData[$pid]['action'] = CRM_Core_Action::formLink(self::petitionActionLinks(), - $action, - ['id' => $pid], - ts('more'), - FALSE, - 'petition.dashboard.row', - 'Petition', - $pid - ); - } - } - - return $petitionsData; - } - - public function browse() { - $this->_tabs = [ - 'campaign' => ts('Campaigns'), - 'survey' => ts('Surveys'), - 'petition' => ts('Petitions'), - ]; - - $subPageType = CRM_Utils_Request::retrieve('type', 'String', $this); - // Load the data for a specific tab - if ($subPageType) { - if (!isset($this->_tabs[$subPageType])) { - CRM_Utils_System::permissionDenied(); - } - //load the data in tabs. - $this->{'browse' . ucfirst($subPageType)}(); - } - // Initialize tabs - else { - $this->buildTabs(); - } - $this->assign('subPageType', ucfirst($subPageType)); - } - - /** - * @return string - */ - public function run() { - if (!CRM_Campaign_BAO_Campaign::accessCampaign()) { - CRM_Utils_System::permissionDenied(); - } - - $this->browse(); - - return parent::run(); - } - - public function buildTabs() { - $allTabs = []; - foreach ($this->_tabs as $name => $title) { - $allTabs[$name] = [ - 'title' => $title, - 'valid' => TRUE, - 'active' => TRUE, - 'link' => CRM_Utils_System::url('civicrm/campaign', "reset=1&type=$name"), - 'extra' => NULL, - 'template' => NULL, - 'count' => NULL, - 'icon' => NULL, - 'class' => NULL, - ]; - } - $allTabs['campaign']['class'] = 'livePage'; - $this->assign('tabHeader', $allTabs); - CRM_Core_Resources::singleton() - ->addScriptFile('civicrm', 'templates/CRM/common/TabHeader.js', 1, 'html-header') - ->addSetting([ - 'tabSettings' => [ - // Tabs should use selectedChild, but Campaign has many legacy links - 'active' => strtolower($_GET['subPage'] ?? $_GET['selectedChild'] ?? 'campaign'), - ], - ]); - } - -} diff --git a/CRM/Campaign/Page/SurveyType.php b/CRM/Campaign/Page/SurveyType.php index d1e972df52a7..b72daac2d8f5 100644 --- a/CRM/Campaign/Page/SurveyType.php +++ b/CRM/Campaign/Page/SurveyType.php @@ -92,22 +92,26 @@ public function &links() { 'url' => 'civicrm/admin/campaign/surveyType', 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit %1', [1 => $this->_gName]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable %1', [1 => $this->_gName]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable %1', [1 => $this->_gName]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/campaign/surveyType', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete %1 Type', [1 => $this->_gName]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/CRM/Campaign/xml/Menu/Campaign.xml b/CRM/Campaign/xml/Menu/Campaign.xml index 5d051df2493b..9e4be74c218b 100644 --- a/CRM/Campaign/xml/Menu/Campaign.xml +++ b/CRM/Campaign/xml/Menu/Campaign.xml @@ -1,13 +1,6 @@ - - civicrm/campaign - Campaign Dashboard - CRM_Campaign_Page_DashBoard - administer CiviCampaign;manage campaign - CiviCampaign - civicrm/campaign/add New Campaign diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index d8aa69d2e82b..d6d3c55cd9d4 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -3019,33 +3019,47 @@ public static function buildOptions($fieldName, $context = NULL, $props = []) { * @inheritDoc */ public function addSelectWhereClause(string $entityName = NULL, int $userId = NULL, array $conditions = []): array { + $administerCases = CRM_Core_Permission::check('administer CiviCase', $userId); + $viewMyCases = CRM_Core_Permission::check('access my cases and activities', $userId); + $viewAllCases = CRM_Core_Permission::check('access all cases and activities', $userId); + // We always return an array with these keys, even if they are empty, // because this tells the query builder that we have considered these fields for acls $clauses = [ 'id' => [], // Only case admins can view deleted cases - 'is_deleted' => CRM_Core_Permission::check('administer CiviCase') ? [] : ["= 0"], + 'is_deleted' => $administerCases ? [] : ['= 0'], ]; - // Ensure the user has permission to view the case client - $contactClause = CRM_Utils_SQL::mergeSubquery('Contact'); - if ($contactClause) { - $contactClause = implode(' AND contact_id ', $contactClause); - $clauses['id'][] = "IN (SELECT case_id FROM civicrm_case_contact WHERE contact_id $contactClause)"; - } - // The api gatekeeper ensures the user has at least "access my cases and activities" - // so if they do not have permission to see all cases we'll assume they can only access their own - if (!CRM_Core_Permission::check('access all cases and activities')) { - $user = (int) CRM_Core_Session::getLoggedInContactID(); - $clauses['id'][] = "IN ( - SELECT r.case_id FROM civicrm_relationship r, civicrm_case_contact cc WHERE r.is_active = 1 AND cc.case_id = r.case_id AND ( - (r.contact_id_a = cc.contact_id AND r.contact_id_b = $user) OR (r.contact_id_b = cc.contact_id AND r.contact_id_a = $user) - ) - )"; + + // No CiviCase access + if (!$viewAllCases && !$viewMyCases) { + $clauses['id'][] = 'IS NULL'; + } + else { + // Enforce permission to view the case client + $contactClause = CRM_Utils_SQL::mergeSubquery('Contact'); + if ($contactClause) { + $contactClause = implode(' AND contact_id ', $contactClause); + $clauses['id'][] = "IN (SELECT case_id FROM civicrm_case_contact WHERE contact_id $contactClause)"; + } + // User can only access their own cases + if (!$viewAllCases) { + $clauses['id'][] = self::getAccessMyCasesClause($userId); + } } CRM_Utils_Hook::selectWhereClause($this, $clauses, $userId, $conditions); return $clauses; } + private static function getAccessMyCasesClause(int $userId = NULL): string { + $user = $userId ?? (int) CRM_Core_Session::getLoggedInContactID(); + return "IN ( + SELECT r.case_id FROM civicrm_relationship r, civicrm_case_contact cc WHERE r.is_active = 1 AND cc.case_id = r.case_id AND ( + (r.contact_id_a = cc.contact_id AND r.contact_id_b = $user) OR (r.contact_id_b = cc.contact_id AND r.contact_id_a = $user) + ) + )"; + } + /** * CRM-20308: Method to get the contact id to use as from contact for email copy * 1. Activity Added by Contact's email address diff --git a/CRM/Case/DAO/Case.php b/CRM/Case/DAO/Case.php index 08d048818b67..cc6544671c1e 100644 --- a/CRM/Case/DAO/Case.php +++ b/CRM/Case/DAO/Case.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Case/Case.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:83be6db09d4f5220f74ccc72149dcab6) + * (GenCodeChecksum:b5dbbb96b15e9ff288890017d324b984) */ /** @@ -45,6 +45,15 @@ class CRM_Case_DAO_Case extends CRM_Core_DAO { */ public static $_log = TRUE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'view' => 'civicrm/contact/view/case?action=view&reset=1&id=[id]', + ]; + /** * Unique Case ID * diff --git a/CRM/Case/Form/Activity.php b/CRM/Case/Form/Activity.php index e959a9423291..6a82870900c9 100644 --- a/CRM/Case/Form/Activity.php +++ b/CRM/Case/Form/Activity.php @@ -203,10 +203,7 @@ public function setDefaultValues() { } $this->assign('targetContactValues', empty($targetContactValues) ? FALSE : $targetContactValues); - if (isset($this->_encounterMedium)) { - $this->_defaults['medium_id'] = $this->_encounterMedium; - } - elseif (empty($this->_defaults['medium_id'])) { + if (empty($this->_defaults['medium_id'])) { // set default encounter medium CRM-4816 $medium = CRM_Core_OptionGroup::values('encounter_medium', FALSE, FALSE, FALSE, 'AND is_default = 1'); if (count($medium) == 1) { @@ -266,22 +263,13 @@ public function buildQuickForm() { $this->assign('urlPath', 'civicrm/case/activity'); - $encounterMediums = CRM_Case_PseudoConstant::encounterMedium(); - if ($this->_activityTypeFile == 'OpenCase' && $this->_action == CRM_Core_Action::UPDATE) { $this->getElement('activity_date_time')->freeze(); - - if ($this->_activityId) { - // Fixme: what's the justification for this? It seems like it is just re-adding an option in case it is the default and disabled. - // Is that really a big problem? - $this->_encounterMedium = CRM_Core_DAO::getFieldValue('CRM_Activity_DAO_Activity', $this->_activityId, 'medium_id'); - if (!array_key_exists($this->_encounterMedium, $encounterMediums)) { - $encounterMediums[$this->_encounterMedium] = CRM_Core_PseudoConstant::getLabel('CRM_Activity_BAO_Activity', 'medium_id', $this->_encounterMedium); - } - } } - $this->add('select', 'medium_id', ts('Medium'), $encounterMediums, TRUE); + $this->addSelect('medium_id'); + + // Related contacts $i = 0; foreach ($this->_caseId as $key => $val) { $this->_relatedContacts[] = $rgc = CRM_Case_BAO_Case::getRelatedAndGlobalContacts($val); @@ -394,7 +382,7 @@ public function postProcess($params = NULL) { // store the submitted values in an array // Explanation for why we only check the is_unittest element: Prior to adding that check, there was no check and so any $params passed in would have been overwritten. Just in case somebody is passing in some non-null params and that broken code would have inadvertently been working, we can maintain backwards compatibility by only checking for the is_unittest parameter, and so that broken code will still work. At the same time this allows unit tests to pass in a $params without it getting overwritten. See also PR #2077 for some discussion of when the $params parameter was added as a passed in variable. if (empty($params['is_unittest'])) { - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); } //set parent id if its edit mode diff --git a/CRM/Case/Form/CaseView.php b/CRM/Case/Form/CaseView.php index 24c0f4552c7a..6ef33b6d899c 100644 --- a/CRM/Case/Form/CaseView.php +++ b/CRM/Case/Form/CaseView.php @@ -49,6 +49,8 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { */ public $_contactID; + private $_caseClients; + /** * ID of case being viewed * @@ -100,9 +102,21 @@ public function preProcess() { $this->_hasAccessToAllCases = CRM_Core_Permission::check('access all cases and activities'); $this->assign('hasAccessToAllCases', $this->_hasAccessToAllCases); - $this->assign('contactID', $this->_contactID = (int) $this->get('cid')); $this->assign('caseID', $this->_caseID = (int) $this->get('id')); + $this->_caseClients = CRM_Case_BAO_Case::getContactNames($this->_caseID); + + $cid = $this->get('cid'); + + // If no cid supplied, use first case client + if (!$cid) { + $cid = array_keys($this->_caseClients)[0]; + } + elseif (!isset($this->_caseClients[$cid])) { + CRM_Core_Error::statusBounce("Contact $cid not a client of case " . $this->_caseID); + } + $this->assign('contactID', $this->_contactID = (int) $cid); + // Access check. if (!CRM_Case_BAO_Case::accessCase($this->_caseID, FALSE)) { CRM_Core_Error::statusBounce(ts('You do not have permission to access this case.')); @@ -147,7 +161,7 @@ public function preProcess() { "action=view&reset=1&id={$this->_caseID}&cid={$this->_contactID}&context=home" ); - $displayName = CRM_Contact_BAO_Contact::displayName($this->_contactID); + $displayName = $this->_caseClients[$this->_contactID]['display_name']; $this->assign('displayName', $displayName); $this->setTitle($displayName . ' - ' . $caseType); @@ -366,7 +380,7 @@ public function buildQuickForm() { $this->assign('caseRelationships', $caseRelationships); //also add client as role. CRM-4438 - $caseRoles['client'] = CRM_Case_BAO_Case::getContactNames($this->_caseID); + $caseRoles['client'] = $this->_caseClients; $this->assign('caseRoles', $caseRoles); @@ -443,16 +457,16 @@ public function buildQuickForm() { 'entity_table' => 'civicrm_case', 'tag_id.parent_id.is_tagset' => 1, 'options' => ['limit' => 0], - 'return' => ["tag_id.parent_id", "tag_id.parent_id.name", "tag_id.name"], + 'return' => ["tag_id.parent_id", "tag_id.parent_id.label", "tag_id.label"], ]); foreach ($tagSetItems['values'] as $tag) { $tagSetTags += [ $tag['tag_id.parent_id'] => [ - 'name' => $tag['tag_id.parent_id.name'], + 'label' => $tag['tag_id.parent_id.label'], 'items' => [], ], ]; - $tagSetTags[$tag['tag_id.parent_id']]['items'][] = $tag['tag_id.name']; + $tagSetTags[$tag['tag_id.parent_id']]['items'][] = $tag['tag_id.label']; } } $this->assign('tagSetTags', $tagSetTags); diff --git a/CRM/Case/Page/Tab.php b/CRM/Case/Page/Tab.php index 8c91b6ffb5ea..3dc37a7e6bb6 100644 --- a/CRM/Case/Page/Tab.php +++ b/CRM/Case/Page/Tab.php @@ -61,11 +61,6 @@ public function preProcess() { CRM_Contact_Page_View::checkUserPermission($this); } } - else { - if ($this->_action & CRM_Core_Action::VIEW) { - CRM_Core_Error::statusBounce(ts('Contact Id is required for view action.')); - } - } $activityTypes = CRM_Case_PseudoConstant::caseActivityType(); diff --git a/CRM/Contact/BAO/Contact.php b/CRM/Contact/BAO/Contact.php index b9b83e95d819..fc3435e30f4f 100644 --- a/CRM/Contact/BAO/Contact.php +++ b/CRM/Contact/BAO/Contact.php @@ -119,7 +119,10 @@ public static function add(&$params) { // CRM-7925 throw new CRM_Core_Exception(ts('The Contact Sub Type does not match the Contact type for this record')); } - $params['contact_sub_type'] = CRM_Utils_Array::implodePadded($params['contact_sub_type']); + // Ensure value is an array so it can be handled properly by `copyValues()` + if (is_string($params['contact_sub_type'])) { + $params['contact_sub_type'] = CRM_Core_DAO::unSerializeField($params['contact_sub_type'], self::fields()['contact_sub_type']['serialize']); + } } } @@ -2925,8 +2928,8 @@ public static function contextMenu($contactId = NULL) { 'key' => 'note', 'tab' => 'note', 'class' => 'medium-popup', - 'href' => CRM_Utils_System::url('civicrm/contact/view/note', - 'reset=1&action=add' + 'href' => CRM_Utils_System::url('civicrm/note', + 'reset=1&action=add&entity_table=civicrm_contact&entity_id=' . $contactId ), 'permissions' => ['edit all contacts'], ], @@ -3581,6 +3584,7 @@ public static function getEntityRefCreateLinks($appendProfiles = []) { public static function getEntityRefFilters() { return [ ['key' => 'contact_type', 'value' => ts('Contact Type')], + ['key' => 'email', 'value' => ts('Email'), 'entity' => 'Email', 'type' => 'text'], ['key' => 'group', 'value' => ts('Group'), 'entity' => 'GroupContact'], ['key' => 'tag', 'value' => ts('Tag'), 'entity' => 'EntityTag'], ['key' => 'city', 'value' => ts('City'), 'type' => 'text', 'entity' => 'Address'], diff --git a/CRM/Contact/BAO/ContactType.php b/CRM/Contact/BAO/ContactType.php index 477bb09d06f8..de18235c9644 100644 --- a/CRM/Contact/BAO/ContactType.php +++ b/CRM/Contact/BAO/ContactType.php @@ -69,7 +69,7 @@ public static function basicTypeInfo($includeInactive = FALSE) { * @throws \CRM_Core_Exception * @throws \Civi\API\Exception\UnauthorizedException */ - public static function basicTypes($all = FALSE) { + public static function basicTypes($all = FALSE): array { return array_keys(self::basicTypeInfo($all)); } @@ -849,15 +849,26 @@ public static function getAllContactTypes() { $contactTypes[$name]['parent_label'] = $contactType['parent_id'] ? $parents[$contactType['parent_id']]['label'] : NULL; // Cast int/bool types. $contactTypes[$name]['id'] = (int) $contactType['id']; - $contactTypes[$name]['parent_id'] = $contactType['parent_id'] ? (int) $contactType['parent_id'] : NULL; + $contactTypes[$name]['parent_id'] = ((int) $contactType['parent_id']) ?: NULL; $contactTypes[$name]['is_active'] = (bool) $contactType['is_active']; $contactTypes[$name]['is_reserved'] = (bool) $contactType['is_reserved']; + $contactTypes[$name]['icon'] = $contactType['icon'] ?? $parents[$contactType['parent_id']]['icon'] ?? NULL; } $cache->set($cacheKey, $contactTypes); } return $contactTypes; } + /** + * Get contact type by name + * + * @param string $name + * @return array|null + */ + public static function getContactType(string $name): ?array { + return self::getAllContactTypes()[$name] ?? NULL; + } + /** * @param string $entityName * @param string $action diff --git a/CRM/Contact/BAO/Group.php b/CRM/Contact/BAO/Group.php index 3a5b8b7b8196..7c777557d7c5 100644 --- a/CRM/Contact/BAO/Group.php +++ b/CRM/Contact/BAO/Group.php @@ -344,9 +344,11 @@ public static function create(&$params) { 'parents' => NULL, ]; + // Fill title and frontend_title if not supplied + if (empty($params['id']) && empty($params['title'])) { + $params['title'] = $params['frontend_title'] ?? $params['name']; + } if (empty($params['id']) && empty($params['frontend_title'])) { - // If we were calling writeRecord it would handle this, but we need - // to migrate the other bits of magic. $params['frontend_title'] = $params['title']; } $hook = empty($params['id']) ? 'create' : 'edit'; @@ -388,6 +390,8 @@ public static function create(&$params) { // form the name only if missing: CRM-627 $nameParam = $params['name'] ?? NULL; + // If we were calling writeRecord it would handle this, but we need + // to migrate the other bits of magic. if (!$nameParam && empty($params['id'])) { $params['name'] = CRM_Utils_String::titleToVar($params['title']); } diff --git a/CRM/Contact/BAO/GroupNesting.php b/CRM/Contact/BAO/GroupNesting.php index f480e44566e5..4e3f17cee7fa 100644 --- a/CRM/Contact/BAO/GroupNesting.php +++ b/CRM/Contact/BAO/GroupNesting.php @@ -27,7 +27,7 @@ class CRM_Contact_BAO_GroupNesting extends CRM_Contact_DAO_GroupNesting { */ public static function create($params) { $hook = empty($params['id']) ? 'create' : 'edit'; - CRM_Utils_Hook::pre($hook, 'GroupNesting', CRM_Utils_Array::value('id', $params), $params); + CRM_Utils_Hook::pre($hook, 'GroupNesting', $params['id'] ?? NULL, $params); $dao = new CRM_Contact_BAO_GroupNesting(); $dao->copyValues($params); if (empty($params['id'])) { diff --git a/CRM/Contact/BAO/Individual.php b/CRM/Contact/BAO/Individual.php index 7d4ea9875a47..200c7b54d780 100644 --- a/CRM/Contact/BAO/Individual.php +++ b/CRM/Contact/BAO/Individual.php @@ -31,12 +31,12 @@ public function __construct() { * * @param array $params * (reference ) an assoc array of name/value pairs. - * @param CRM_Contact_BAO_Contact $contact + * @param CRM_Contact_DAO_Contact $contact * Contact object. * - * @return CRM_Contact_BAO_Contact + * @return CRM_Contact_DAO_Contact */ - public static function format(&$params, &$contact) { + public static function format(&$params, $contact) { if (!self::dataExists($params)) { return NULL; } @@ -59,13 +59,8 @@ public static function format(&$params, &$contact) { $formalTitle = CRM_Utils_Array::value('formal_title', $params, ''); // get prefix and suffix names - $prefix = $suffix = NULL; - if ($prefix_id) { - $params['individual_prefix'] = $prefix = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'prefix_id', $prefix_id); - } - if ($suffix_id) { - $params['individual_suffix'] = $suffix = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'suffix_id', $suffix_id); - } + $params['prefix_id:label'] = $prefix = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'prefix_id', $prefix_id); + $params['suffix_id:label'] = $suffix = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'suffix_id', $suffix_id); $individual = NULL; if ($contact->id) { @@ -87,12 +82,12 @@ public static function format(&$params, &$contact) { } } - foreach (['prefix', 'suffix'] as $name) { - $dbName = "{$name}_id"; - $value = $individual->$dbName; - if ($value && !empty($params['preserveDBName'])) { - $useDBNames[] = $name; - } + if ($individual->suffix_id && !empty($params['preserveDBName'])) { + $useDBNames[] = 'suffix_id'; + } + + if ($individual->prefix_id && !empty($params['preserveDBName'])) { + $useDBNames[] = 'prefix_id'; } if ($individual->formal_title && !empty($params['preserveDBName'])) { @@ -168,8 +163,8 @@ public static function format(&$params, &$contact) { 'middle_name' => $middleName, 'last_name' => $lastName, 'nick_name' => $nickName, - 'individual_suffix' => $suffix, - 'individual_prefix' => $prefix, + 'suffix_id:label' => $suffix, + 'prefix_id:label' => $prefix, 'prefix_id' => $prefix_id, 'suffix_id' => $suffix_id, 'formal_title' => $formalTitle, diff --git a/CRM/Contact/BAO/Query.php b/CRM/Contact/BAO/Query.php index 23499c9219b4..6fb4936ad15f 100644 --- a/CRM/Contact/BAO/Query.php +++ b/CRM/Contact/BAO/Query.php @@ -583,10 +583,10 @@ public function initialize($apiEntity = NULL) { // Unit test coverage in api_v3_FinancialTypeACLTest::testGetACLContribution. $clauses = []; if ($component === 'contribution') { - $clauses = CRM_Contribute_BAO_Contribution::getSelectWhereClause(); + $clauses = array_filter(CRM_Contribute_BAO_Contribution::getSelectWhereClause()); } if ($component === 'membership') { - $clauses = CRM_Member_BAO_Membership::getSelectWhereClause(); + $clauses = array_filter(CRM_Member_BAO_Membership::getSelectWhereClause()); } if ($clauses) { $this->_whereClause .= ' AND ' . implode(' AND ', $clauses); @@ -4247,7 +4247,7 @@ public function relationship(&$values) { if (!empty($relQill)) { $relQill .= ' OR '; } - $relQill .= CRM_Utils_Array::value($rel, $allRelationshipType); + $relQill .= $allRelationshipType[$rel] ?? ''; } $this->_qill[$grouping][] = 'Relationship Type(s) ' . $relQill . " ( " . implode(", ", $qillNames) . " )"; } @@ -5077,27 +5077,12 @@ public function generatePermissionClause($onlyDeleted = FALSE, $count = FALSE) { } } + // Add ACL permission clause generated by the BAO. This is the same clause used by API::get. + // TODO: Why only activities? if (isset($this->_tables['civicrm_activity'])) { - $bao = new CRM_Activity_BAO_Activity(); - $clauses = $subclauses = []; - foreach ($bao->addSelectWhereClause() as $field => $vals) { - if ($vals && $field !== 'id') { - foreach ($vals as $val) { - $clauses[] = $bao->tableName() . ".$field " . $val; - } - } - elseif ($vals) { - $subclauses[] = "$field " . implode(" AND $field ", (array) $vals); - } - } - if ($subclauses) { - $clauses[] = $bao->tableName() . '.`id` IN (SELECT `id` FROM `' . $bao->tableName() . '` WHERE ' . implode(' AND ', $subclauses) . ')'; - } - if (!empty($clauses) && $this->_permissionWhereClause) { - $this->_permissionWhereClause .= ' AND (' . implode(' AND ', $clauses) . ')'; - } - elseif (!empty($clauses)) { - $this->_permissionWhereClause .= '(' . implode(' AND ', $clauses) . ')'; + $clauses = array_filter(CRM_Activity_BAO_Activity::getSelectWhereClause()); + if ($clauses) { + $this->_permissionWhereClause .= ($this->_permissionWhereClause ? ' AND ' : '') . '(' . implode(' AND ', $clauses) . ')'; } } } @@ -6217,7 +6202,7 @@ public static function buildQillForFieldValue( $pseudoOptions = CRM_Core_PseudoConstant::worldRegion(); } elseif ($daoName == 'CRM_Event_DAO_Event' && $fieldName == 'id') { - $checkPermission = CRM_Utils_Array::value('check_permission', $pseudoExtraParam, TRUE); + $checkPermission = $pseudoExtraParam['check_permission'] ?? TRUE; $pseudoOptions = CRM_Event_BAO_Event::getEvents(0, $fieldValue, TRUE, $checkPermission, TRUE); } elseif ($fieldName == 'contribution_product_id') { @@ -6452,7 +6437,7 @@ protected function prepareOrderBy($sort, $sortOrder) { // is not declared for them. // @todo so far only integer fields are being handled. If we add string fields we need to look at // escaping. - $pseudoConstantMetadata = CRM_Utils_Array::value('pseudoconstant', $fieldSpec, FALSE); + $pseudoConstantMetadata = $fieldSpec['pseudoconstant'] ?? FALSE; if (!empty($pseudoConstantMetadata) ) { if (!empty($pseudoConstantMetadata['optionGroupName']) diff --git a/CRM/Contact/BAO/Relationship.php b/CRM/Contact/BAO/Relationship.php index 6405520474f7..9d231e0fe40e 100644 --- a/CRM/Contact/BAO/Relationship.php +++ b/CRM/Contact/BAO/Relationship.php @@ -1807,14 +1807,9 @@ public static function membershipTypeToRelationshipTypes(&$params, $direction = } /** - * Wrapper for contact relationship selector. + * @deprecated since 5.68. Will be removed around 5.74. * - * @param array $params - * Associated array for params record id. - * - * @return array - * associated array of contact relationships - * @throws \Exception + * Only-used-by-user-dashboard. */ public static function getContactRelationshipSelector(&$params) { // format the params @@ -1957,7 +1952,9 @@ public static function getContactRelationshipSelector(&$params) { } /** - * @return array + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. */ public static function getColumnHeaders() { return [ diff --git a/CRM/Contact/DAO/Contact.php b/CRM/Contact/DAO/Contact.php index edae63298bea..af30aab877b0 100644 --- a/CRM/Contact/DAO/Contact.php +++ b/CRM/Contact/DAO/Contact.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/Contact.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:4066902548c1bc5ba4358b9e0195a3fa) + * (GenCodeChecksum:0470d0df786c3ac33a435555a3d026fb) */ /** @@ -604,7 +604,6 @@ public static function &fields() { ], 'where' => 'civicrm_contact.contact_type', 'export' => TRUE, - 'contactType' => NULL, 'table_name' => 'civicrm_contact', 'entity' => 'Contact', 'bao' => 'CRM_Contact_BAO_Contact', diff --git a/CRM/Contact/DAO/DashboardContact.php b/CRM/Contact/DAO/DashboardContact.php index 3e298084bb58..aff797b875d6 100644 --- a/CRM/Contact/DAO/DashboardContact.php +++ b/CRM/Contact/DAO/DashboardContact.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/DashboardContact.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:73ab6a9a4f5d372c85b888aae2abe826) + * (GenCodeChecksum:2b31333980964ba3394f0c71cc764a9d) */ /** @@ -67,7 +67,7 @@ class CRM_Contact_DAO_DashboardContact extends CRM_Core_DAO { /** * Is this widget active? * - * @var bool|string|null + * @var bool|string * (SQL type: tinyint) * Note that values will be retrieved from the database as a string. */ @@ -219,6 +219,7 @@ public static function &fields() { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Dashlet is Active?'), 'description' => ts('Is this widget active?'), + 'required' => TRUE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, diff --git a/CRM/Contact/DAO/Relationship.php b/CRM/Contact/DAO/Relationship.php index 32b8f3e61be2..ea5624a36f46 100644 --- a/CRM/Contact/DAO/Relationship.php +++ b/CRM/Contact/DAO/Relationship.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/Relationship.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:053ca157abcac8e7f4c8ab55425df5ff) + * (GenCodeChecksum:e6e709da33773d09d7e788d21c64437b) */ /** @@ -423,6 +423,11 @@ public static function &fields() { ], 'pseudoconstant' => [ 'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions', + 'suffixes' => [ + 'name', + 'label', + 'icon', + ], ], 'add' => '2.1', ], @@ -449,6 +454,11 @@ public static function &fields() { ], 'pseudoconstant' => [ 'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions', + 'suffixes' => [ + 'name', + 'label', + 'icon', + ], ], 'add' => '2.1', ], diff --git a/CRM/Contact/DAO/RelationshipCache.php b/CRM/Contact/DAO/RelationshipCache.php index 060f18063798..5486d1c3b90f 100644 --- a/CRM/Contact/DAO/RelationshipCache.php +++ b/CRM/Contact/DAO/RelationshipCache.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/RelationshipCache.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:422520600ff998c1a9203004ae958e8c) + * (GenCodeChecksum:9170513963860f5b9cadce190a68b8bf) */ /** @@ -43,6 +43,7 @@ class CRM_Contact_DAO_RelationshipCache extends CRM_Core_DAO { * @var string[] */ protected static $_paths = [ + 'add' => 'civicrm/contact/view/rel?cid=[near_contact_id]&action=add&reset=1', 'view' => 'civicrm/contact/view/rel?action=view&reset=1&cid=[near_contact_id]&id=[relationship_id]', 'update' => 'civicrm/contact/view/rel?action=update&reset=1&cid=[near_contact_id]&id=[relationship_id]&rtype=[orientation]', 'delete' => 'civicrm/contact/view/rel?action=delete&reset=1&cid=[near_contact_id]&id=[relationship_id]', diff --git a/CRM/Contact/Form/Contact.php b/CRM/Contact/Form/Contact.php index b1395a93c85c..0b0aec7ab16f 100644 --- a/CRM/Contact/Form/Contact.php +++ b/CRM/Contact/Form/Contact.php @@ -501,10 +501,7 @@ public function blockSetDefaults(&$defaults) { // make we require one primary block, CRM-5505 if ($updateMode) { if (!$hasPrimary) { - $hasPrimary = CRM_Utils_Array::value( - 'is_primary', - CRM_Utils_Array::value($instance, $defaults[$name]) - ); + $hasPrimary = !empty($defaults[$name][$instance]['is_primary']); } continue; } @@ -892,7 +889,7 @@ public function buildQuickForm() { 'isDefault' => TRUE, ], ]; - if (CRM_Core_Permission::check('add contacts')) { + if (!$this->_contactId && CRM_Core_Permission::check('add contacts')) { $buttons[] = [ 'type' => 'upload', 'name' => ts('Save and New'), @@ -987,7 +984,7 @@ public function postProcess() { } //get the submitted values in an array - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); if (!isset($params['preferred_communication_method'])) { // If this field is empty QF will trim it so we have to add it in. $params['preferred_communication_method'] = 'null'; @@ -1060,7 +1057,7 @@ public function postProcess() { if (array_key_exists('CommunicationPreferences', $this->_editOptions)) { // this is a chekbox, so mark false if we dont get a POST value - $params['is_opt_out'] = CRM_Utils_Array::value('is_opt_out', $params, FALSE); + $params['is_opt_out'] = $params['is_opt_out'] ?? FALSE; CRM_Utils_Array::formatArrayKeys($params['preferred_communication_method']); } @@ -1294,15 +1291,15 @@ public static function checkDuplicateContacts(&$fields, &$errors, $contactID, $c for ($i = 0; $i < count($contactLinks['rows']); $i++) { $row .= ' '; $row .= ' '; - $row .= CRM_Utils_Array::value('display_name', $contactLinks['rows'][$i]); + $row .= $contactLinks['rows'][$i]['display_name'] ?? ''; $row .= ' '; $row .= ' '; - $row .= CRM_Utils_Array::value('primary_email', $contactLinks['rows'][$i]); + $row .= $contactLinks['rows'][$i]['primary_email'] ?? ''; $row .= ' '; $row .= ' '; - $row .= CRM_Utils_Array::value('view', $contactLinks['rows'][$i]); - $row .= CRM_Utils_Array::value('edit', $contactLinks['rows'][$i]); - $row .= CRM_Utils_Array::value('merge', $contactLinks['rows'][$i]); + $row .= $contactLinks['rows'][$i]['view'] ?? ''; + $row .= $contactLinks['rows'][$i]['edit'] ?? ''; + $row .= $contactLinks['rows'][$i]['merge'] ?? ''; $row .= ' '; $row .= ' '; } @@ -1413,7 +1410,7 @@ public static function parseAddress(&$params) { $streetAddress .= ' '; } } - $streetAddress .= CRM_Utils_Array::value($fld, $address); + $streetAddress .= $address[$fld] ?? ''; } $address['street_address'] = trim($streetAddress); $parseSuccess[$instance] = TRUE; diff --git a/CRM/Contact/Form/Edit/Address.php b/CRM/Contact/Form/Edit/Address.php index 8b88bb49c286..4c82a7ff5134 100644 --- a/CRM/Contact/Form/Edit/Address.php +++ b/CRM/Contact/Form/Edit/Address.php @@ -296,7 +296,7 @@ public static function setDefaultValues(&$defaults, &$form) { $streetAddress .= ' '; } } - $streetAddress .= CRM_Utils_Array::value($fld, $address); + $streetAddress .= $address[$fld] ?? ''; } $streetAddress = trim($streetAddress); if (!empty($streetAddress)) { diff --git a/CRM/Contact/Form/Inline/CommunicationPreferences.php b/CRM/Contact/Form/Inline/CommunicationPreferences.php index 6452b0b02e47..f65942b56ffe 100644 --- a/CRM/Contact/Form/Inline/CommunicationPreferences.php +++ b/CRM/Contact/Form/Inline/CommunicationPreferences.php @@ -65,7 +65,7 @@ public function postProcess() { // Process / save communication preferences // this is a chekbox, so mark false if we dont get a POST value - $params['is_opt_out'] = CRM_Utils_Array::value('is_opt_out', $params, FALSE); + $params['is_opt_out'] = $params['is_opt_out'] ?? FALSE; $params['contact_type'] = $this->_contactType; $params['contact_id'] = $this->_contactId; diff --git a/CRM/Contact/Form/Inline/CustomData.php b/CRM/Contact/Form/Inline/CustomData.php index d8e92f86bbfb..96247fa48459 100644 --- a/CRM/Contact/Form/Inline/CustomData.php +++ b/CRM/Contact/Form/Inline/CustomData.php @@ -72,7 +72,7 @@ public function setDefaultValues() { public function postProcess() { // Process / save custom data // Get the form values and groupTree - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); CRM_Core_BAO_CustomValueTable::postProcess($params, 'civicrm_contact', $this->_contactId, diff --git a/CRM/Contact/Form/Relationship.php b/CRM/Contact/Form/Relationship.php index 47116d7d1759..7001592c6bc0 100644 --- a/CRM/Contact/Form/Relationship.php +++ b/CRM/Contact/Form/Relationship.php @@ -403,10 +403,6 @@ public function postProcess() { // Refresh contact tabs which might have been affected $this->ajaxResponse = [ 'reloadBlocks' => ['#crm-contactinfo-content'], - 'updateTabs' => [ - '#tab_member' => CRM_Contact_BAO_Contact::getCountComponent('membership', $this->_contactId), - '#tab_contribute' => CRM_Contact_BAO_Contact::getCountComponent('contribution', $this->_contactId), - ], ]; } @@ -493,7 +489,7 @@ public static function getRelationshipTypeMetadata($relationshipList) { $jsData[$id] = array_filter(array_intersect_key($allRelationshipNames[$id], $whatWeWant)); // Add user-friendly placeholder foreach (['a', 'b'] as $x) { - $type = !empty($jsData[$id]["contact_sub_type_$x"]) ? $jsData[$id]["contact_sub_type_$x"] : CRM_Utils_Array::value("contact_type_$x", $jsData[$id]); + $type = !empty($jsData[$id]["contact_sub_type_$x"]) ? $jsData[$id]["contact_sub_type_$x"] : (CRM_Utils_Array::value("contact_type_$x", $jsData[$id])); $jsData[$id]["placeholder_$x"] = $type ? ts('- select %1 -', [strtolower($contactTypes[$type]['label'])]) : ts('- select contact -'); } } @@ -579,8 +575,8 @@ private function preparePostProcessParameters($values) { } // If this is a b_a relationship these form elements are flipped - $params['is_permission_a_b'] = CRM_Utils_Array::value("is_permission_{$a}_{$b}", $values, 0); - $params['is_permission_b_a'] = CRM_Utils_Array::value("is_permission_{$b}_{$a}", $values, 0); + $params['is_permission_a_b'] = $values["is_permission_{$a}_{$b}"] ?? 0; + $params['is_permission_b_a'] = $values["is_permission_{$b}_{$a}"] ?? 0; return [$params, $a]; } diff --git a/CRM/Contact/Form/Search.php b/CRM/Contact/Form/Search.php index 575b3d38c25e..ac69d0ce9b15 100644 --- a/CRM/Contact/Form/Search.php +++ b/CRM/Contact/Form/Search.php @@ -530,7 +530,7 @@ public function preProcess() { $this->_amtgID = CRM_Utils_Request::retrieve('amtgID', 'Positive', $this); $this->_ssID = CRM_Utils_Request::retrieve('ssID', 'Positive', $this); $this->_sortByCharacter = CRM_Utils_Request::retrieve('sortByCharacter', 'String', $this); - $this->_ufGroupID = CRM_Utils_Request::retrieve('id', 'Positive', $this); + $ufGroupID = CRM_Utils_Request::retrieve('uf_group_id', 'Positive', $this); $this->_componentMode = CRM_Utils_Request::retrieve('component_mode', 'Positive', $this, FALSE, CRM_Contact_BAO_Query::MODE_CONTACTS, $_REQUEST); $this->_operator = CRM_Utils_Request::retrieve('operator', 'String', $this, FALSE, CRM_Contact_BAO_Query::SEARCH_OPERATOR_AND, 'REQUEST'); @@ -547,10 +547,10 @@ public function preProcess() { // if we dont get this from the url, use default if one exsts $config = CRM_Core_Config::singleton(); - if ($this->_ufGroupID == NULL && + if ($ufGroupID == NULL && $config->defaultSearchProfileID != NULL ) { - $this->_ufGroupID = $config->defaultSearchProfileID; + $ufGroupID = $config->defaultSearchProfileID; } // assign context to drive the template display, make sure context is valid @@ -579,9 +579,9 @@ public function preProcess() { $this->_returnProperties = &$this->returnProperties(); // also get the uf group id directly from the post value - $this->_ufGroupID = CRM_Utils_Array::value('uf_group_id', $_POST, $this->_ufGroupID); - $this->_formValues['uf_group_id'] = $this->_ufGroupID; - $this->set('id', $this->_ufGroupID); + $ufGroupID = $_POST['uf_group_id'] ?? $ufGroupID; + $this->_formValues['uf_group_id'] = $ufGroupID; + $this->set('uf_group_id', $ufGroupID); // also get the object mode directly from the post value $this->_componentMode = CRM_Utils_Array::value('component_mode', $_POST, $this->_componentMode); @@ -595,8 +595,8 @@ public function preProcess() { $this->_formValues = $this->get('formValues'); $this->_params = CRM_Contact_BAO_Query::convertFormValues($this->_formValues, 0, FALSE, NULL, $this->entityReferenceFields); $this->_returnProperties = &$this->returnProperties(); - if (!empty($this->_ufGroupID)) { - $this->set('id', $this->_ufGroupID); + if ($ufGroupID) { + $this->set('uf_group_id', $ufGroupID); } } @@ -623,9 +623,9 @@ public function preProcess() { $this->_returnProperties = &$this->returnProperties(); } else { - if (isset($this->_ufGroupID)) { + if ($ufGroupID) { // also set the uf group id if not already present - $this->_formValues['uf_group_id'] = $this->_ufGroupID; + $this->_formValues['uf_group_id'] = $ufGroupID; } if (isset($this->_componentMode)) { $this->_formValues['component_mode'] = $this->_componentMode; @@ -667,9 +667,7 @@ public function preProcess() { } } } - $this->assign('id', - CRM_Utils_Array::value('uf_group_id', $this->_formValues) - ); + $this->assign('id', $ufGroupID); $operator = CRM_Utils_Array::value('operator', $this->_formValues, CRM_Contact_BAO_Query::SEARCH_OPERATOR_AND); $this->set('queryOperator', $operator); if ($operator == CRM_Contact_BAO_Query::SEARCH_OPERATOR_OR) { @@ -768,10 +766,7 @@ public function postProcess() { //get the button name $buttonName = $this->controller->getButtonName(); - - if (isset($this->_ufGroupID) && empty($this->_formValues['uf_group_id'])) { - $this->_formValues['uf_group_id'] = $this->_ufGroupID; - } + $this->_formValues['uf_group_id'] = $this->_formValues['uf_group_id'] ?? $this->get('uf_group_id'); if (isset($this->_componentMode) && empty($this->_formValues['component_mode'])) { $this->_formValues['component_mode'] = $this->_componentMode; diff --git a/CRM/Contact/Form/Search/Advanced.php b/CRM/Contact/Form/Search/Advanced.php index fb00ab8809a9..7b9d471ef349 100644 --- a/CRM/Contact/Form/Search/Advanced.php +++ b/CRM/Contact/Form/Search/Advanced.php @@ -226,6 +226,10 @@ public function postProcess() { $this->set('isAdvanced', '1'); $this->setFormValues(); + if (is_numeric($_POST['id'] ?? NULL)) { + $this->_formValues['contact_id'] = (int) $_POST['id']; + } + $this->set('formValues', $this->_formValues); // get user submitted values // get it from controller only if form has been submitted, else preProcess has set this if (!empty($_POST)) { @@ -238,13 +242,7 @@ public function postProcess() { } } - // set the group if group is submitted - if (!empty($this->_formValues['uf_group_id'])) { - $this->set('id', $this->_formValues['uf_group_id']); - } - else { - $this->set('id', ''); - } + $this->set('uf_group_id', $this->_formValues['uf_group_id'] ?? ''); } // retrieve ssID values only if formValues is null, i.e. form has never been posted diff --git a/CRM/Contact/Form/Search/Builder.php b/CRM/Contact/Form/Search/Builder.php index c65dc87d0c73..a0a1e70f0f73 100644 --- a/CRM/Contact/Form/Search/Builder.php +++ b/CRM/Contact/Form/Search/Builder.php @@ -365,14 +365,7 @@ public function postProcess() { // get it from controller only if form has been submitted, else preProcess has set this if (!empty($_POST)) { $this->_formValues = $this->controller->exportValues($this->_name); - - // set the group if group is submitted - if (!empty($this->_formValues['uf_group_id'])) { - $this->set('id', $this->_formValues['uf_group_id']); - } - else { - $this->set('id', ''); - } + $this->set('uf_group_id', $this->_formValues['uf_group_id'] ?? ''); } // we dont want to store the sortByCharacter in the formValue, it is more like diff --git a/CRM/Contact/Form/Search/Criteria.php b/CRM/Contact/Form/Search/Criteria.php index ac6b93820377..0a96629033ab 100644 --- a/CRM/Contact/Form/Search/Criteria.php +++ b/CRM/Contact/Form/Search/Criteria.php @@ -98,8 +98,8 @@ public static function basic(&$form) { $form->addElement('text', 'job_title', ts('Job Title'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'job_title')); //added internal ID - $form->add('number', 'contact_id', ts('Contact ID'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'id') + ['min' => 1]); - $form->addRule('contact_id', ts('Please enter valid Contact ID'), 'positiveInteger'); + $form->add('number', 'id', ts('Contact ID'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'id') + ['min' => 1]); + $form->addRule('id', ts('Please enter valid Contact ID'), 'positiveInteger'); //added external ID $form->addElement('text', 'external_identifier', ts('External ID'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'external_identifier')); @@ -461,7 +461,7 @@ public static function location(&$form) { } if ($addressOptions['postal_code']) { - $attr = ['class' => 'six'] + (array) CRM_Utils_Array::value('postal_code', $attributes); + $attr = ['class' => 'six'] + ($attributes['postal_code'] ?? []); $form->addElement('text', 'postal_code_low', NULL, $attr + ['placeholder' => ts('From')]); $form->addElement('text', 'postal_code_high', NULL, $attr + ['placeholder' => ts('To')]); } diff --git a/CRM/Contact/Form/Task.php b/CRM/Contact/Form/Task.php index 6d21f77a261e..f7eb5479687b 100644 --- a/CRM/Contact/Form/Task.php +++ b/CRM/Contact/Form/Task.php @@ -262,7 +262,7 @@ protected static function legacyGetContactIds($form) { $queryOperator = 'AND'; } $dao = $selector->contactIDQuery($params, $sortID, - CRM_Utils_Array::value('display_relationship_type', $fv), + $fv['display_relationship_type'] ?? NULL, $queryOperator ); diff --git a/CRM/Contact/Form/Task/EmailTrait.php b/CRM/Contact/Form/Task/EmailTrait.php index 1755bbc2327f..3a97596024e4 100644 --- a/CRM/Contact/Form/Task/EmailTrait.php +++ b/CRM/Contact/Form/Task/EmailTrait.php @@ -384,7 +384,7 @@ public function submit($formValues): void { $cc, $bcc, $additionalDetails, - CRM_Utils_Array::value('campaign_id', $formValues), + $formValues['campaign_id'] ?? NULL, $this->getCaseID() ); diff --git a/CRM/Contact/Form/Task/Label.php b/CRM/Contact/Form/Task/Label.php index e303d62dd13f..0b8455968456 100644 --- a/CRM/Contact/Form/Task/Label.php +++ b/CRM/Contact/Form/Task/Label.php @@ -250,7 +250,7 @@ public function postProcess($params = NULL) { if (!empty($fv['location_type_id'])) { foreach ($valuesothers as $vals) { if (($vals['location_type_id'] ?? NULL) == - CRM_Utils_Array::value('location_type_id', $fv) + ($fv['location_type_id'] ?? NULL) ) { foreach ($vals as $k => $v) { if (in_array($k, [ diff --git a/CRM/Contact/Form/Task/PDFTrait.php b/CRM/Contact/Form/Task/PDFTrait.php index 521e02664f08..9e8219c27d7a 100644 --- a/CRM/Contact/Form/Task/PDFTrait.php +++ b/CRM/Contact/Form/Task/PDFTrait.php @@ -151,7 +151,6 @@ public function addPDFElementsToForm(): void { $form->assign('totalSelectedContacts', !is_null($form->_contactIds) ? count($form->_contactIds) : 0); $form->add('select', 'document_type', ts('Document Type'), CRM_Core_SelectValues::documentFormat()); - $documentTypes = implode(',', CRM_Core_SelectValues::documentApplicationType()); $form->addElement('file', "document_file", 'Upload Document', 'size=30 maxlength=255 accept="' . $documentTypes . '"'); $form->addUploadElement("document_file"); diff --git a/CRM/Contact/Page/AJAX.php b/CRM/Contact/Page/AJAX.php index 99181e9276a9..9cacb36776d2 100644 --- a/CRM/Contact/Page/AJAX.php +++ b/CRM/Contact/Page/AJAX.php @@ -951,7 +951,7 @@ public static function getAddressDisplay() { public static function toggleDedupeSelect() { $pnid = $_REQUEST['pnid']; $isSelected = CRM_Utils_Type::escape($_REQUEST['is_selected'], 'Boolean'); - $cacheKeyString = CRM_Utils_Request::retrieve('cacheKey', 'Alphanumeric', $null, FALSE); + $cacheKeyString = CRM_Utils_Request::retrieve('cacheKey', 'Alphanumeric', NULL, FALSE); $params = [ 1 => [$isSelected, 'Boolean'], @@ -979,7 +979,9 @@ public static function toggleDedupeSelect() { } /** - * Retrieve contact relationships. + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. */ public static function getContactRelationships() { $contactID = CRM_Utils_Type::escape($_GET['cid'], 'Integer'); diff --git a/CRM/Contact/Page/DedupeMerge.php b/CRM/Contact/Page/DedupeMerge.php index 559ab66764ae..70a7bd91aaab 100644 --- a/CRM/Contact/Page/DedupeMerge.php +++ b/CRM/Contact/Page/DedupeMerge.php @@ -42,7 +42,7 @@ public static function getRunner() { $limit = CRM_Utils_Request::retrieveValue('limit', 'Positive'); $action = CRM_Utils_Request::retrieveValue('action', 'String'); $mode = CRM_Utils_Request::retrieveValue('mode', 'String', 'safe'); - $criteria = CRM_Utils_Request::retrieve('criteria', 'Json', $null, FALSE, '{}'); + $criteria = CRM_Utils_Request::retrieve('criteria', 'Json', NULL, FALSE, '{}'); $urlQry = [ 'reset' => 1, diff --git a/CRM/Contact/Page/DedupeRules.php b/CRM/Contact/Page/DedupeRules.php index 84461909a3c2..d0a345fde389 100644 --- a/CRM/Contact/Page/DedupeRules.php +++ b/CRM/Contact/Page/DedupeRules.php @@ -52,6 +52,7 @@ public function &links() { 'url' => 'civicrm/contact/dedupefind', 'qs' => 'reset=1&rgid=%%id%%&action=preview', 'title' => ts('Use DedupeRule'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ]; } if (CRM_Core_Permission::check('administer dedupe rules')) { @@ -60,6 +61,7 @@ public function &links() { 'url' => 'civicrm/contact/deduperules', 'qs' => 'action=update&id=%%id%%', 'title' => ts('Edit DedupeRule'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ]; $links[CRM_Core_Action::DELETE] = [ 'name' => ts('Delete'), @@ -67,6 +69,7 @@ public function &links() { 'qs' => 'action=delete&id=%%id%%', 'extra' => 'onclick = "return confirm(\'' . $deleteExtra . '\');"', 'title' => ts('Delete DedupeRule'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ]; } @@ -129,7 +132,7 @@ public function browse() { // form all action links $action = array_sum(array_keys($this->links())); - $links = self::links(); + $links = $this->links(); if ($dao->is_reserved) { unset($links[CRM_Core_Action::DELETE]); diff --git a/CRM/Contact/Page/View/Note.php b/CRM/Contact/Page/View/Note.php deleted file mode 100644 index 8375a2760601..000000000000 --- a/CRM/Contact/Page/View/Note.php +++ /dev/null @@ -1,311 +0,0 @@ -addSelect('*', 'privacy:label') - ->addWhere('id', '=', $this->_id) - ->execute() - ->single(); - $note['privacy'] = $note['privacy:label']; - $this->assign('note', $note); - - $comments = CRM_Core_BAO_Note::getNoteTree($this->_id, 1); - $this->assign('comments', $comments); - - // add attachments part - $currentAttachmentInfo = CRM_Core_BAO_File::getEntityFile('civicrm_note', $this->_id); - $this->assign('currentAttachmentInfo', $currentAttachmentInfo); - - } - - /** - * called when action is browse. - */ - public function browse(): void { - $note = new CRM_Core_DAO_Note(); - $note->entity_table = 'civicrm_contact'; - $note->entity_id = $this->getContactID(); - - $note->orderBy('modified_date desc'); - - //CRM-4418, handling edit and delete separately. - $permissions = [$this->_permission]; - if ($this->_permission == CRM_Core_Permission::EDIT) { - //previously delete was subset of edit - //so for consistency lets grant delete also. - $permissions[] = CRM_Core_Permission::DELETE; - } - $mask = CRM_Core_Action::mask($permissions); - - $this->assign('canAddNotes', CRM_Core_Permission::check('add contact notes')); - - $links = self::links(); - $action = array_sum(array_keys($links)) & $mask; - - $note->find(); - while ($note->fetch()) { - if (!CRM_Core_BAO_Note::getNotePrivacyHidden($note)) { - CRM_Core_DAO::storeValues($note, $this->values[$note->id]); - - $this->values[$note->id]['action'] = CRM_Core_Action::formLink($links, - $action, - [ - 'id' => $note->id, - 'cid' => $this->getContactID(), - ], - ts('more'), - FALSE, - 'note.selector.row', - 'Note', - $note->id - ); - if (!empty($note->contact_id)) { - $contact = new CRM_Contact_DAO_Contact(); - $contact->id = $note->contact_id; - $contact->find(); - $contact->fetch(); - $this->values[$note->id]['createdBy'] = $contact->display_name; - } - $this->values[$note->id]['comment_count'] = CRM_Core_BAO_Note::getChildCount($note->id); - - // paper icon view for attachments part - $paperIconAttachmentInfo = CRM_Core_BAO_File::paperIconAttachment('civicrm_note', $note->id); - $this->values[$note->id]['attachment'] = $paperIconAttachmentInfo; - } - } - $this->assign('notes', $this->values); - - $commentLinks = self::commentLinks(); - - $action = array_sum(array_keys($commentLinks)) & $mask; - - $commentAction = CRM_Core_Action::formLink($commentLinks, - $action, - [ - 'id' => $note->id, - 'pid' => $note->entity_id, - 'cid' => $note->entity_id, - ], - ts('more'), - FALSE, - 'note.comment.action', - 'Note', - $note->id - ); - $this->assign('commentAction', $commentAction); - - $this->ajaxResponse['tabCount'] = CRM_Contact_BAO_Contact::getCountComponent('note', $this->getContactID()); - } - - /** - * called when action is update or new. - */ - public function edit() { - $controller = new CRM_Core_Controller_Simple('CRM_Note_Form_Note', ts('Contact Notes'), $this->_action); - $controller->setEmbedded(TRUE); - - // set the userContext stack - $session = CRM_Core_Session::singleton(); - $contactID = $this->getContactID(); - $url = CRM_Utils_System::url('civicrm/contact/view', - 'action=browse&selectedChild=note&cid=' . $contactID - ); - $session->pushUserContext($url); - - if (CRM_Utils_Request::retrieve('confirmed', 'Boolean')) { - $this->delete(); - CRM_Utils_System::redirect($url); - } - - $controller->reset(); - $controller->set('entityTable', 'civicrm_contact'); - $controller->set('entityId', $this->_contactId); - $controller->set('id', $this->_id); - - $controller->process(); - $controller->run(); - } - - public function preProcess() { - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); - - if ($this->_id && CRM_Core_BAO_Note::getNotePrivacyHidden($this->_id)) { - CRM_Core_Error::statusBounce(ts('You do not have access to this note.')); - } - - $this->_contactId = CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE); - $this->assign('contactId', $this->_contactId); - - // check logged in url permission - CRM_Contact_Page_View::checkUserPermission($this); - - $displayName = CRM_Contact_BAO_Contact::displayName($this->_contactId); - CRM_Utils_System::setTitle(ts('Notes for') . ' ' . $displayName); - - $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'browse'); - $this->assign('action', $this->_action); - } - - /** - * the main function that is called when the page loads, - * it decides the which action has to be taken for the page. - * - * @return null - */ - public function run() { - $this->preProcess(); - - if ($this->_action & CRM_Core_Action::VIEW) { - $this->view(); - } - elseif ($this->_action & CRM_Core_Action::ADD) { - if ( - $this->_permission != CRM_Core_Permission::EDIT && - !CRM_Core_Permission::check('add contact notes') - ) { - CRM_Core_Error::statusBounce(ts('You do not have access to add notes.')); - } - - $this->edit(); - } - elseif ($this->_action & CRM_Core_Action::UPDATE) { - if ($this->_permission != CRM_Core_Permission::EDIT) { - CRM_Core_Error::statusBounce(ts('You do not have access to edit this note.')); - } - - $this->edit(); - } - elseif ($this->_action & CRM_Core_Action::DELETE) { - if ($this->_permission != CRM_Core_Permission::EDIT) { - CRM_Core_Error::statusBounce(ts('You do not have access to delete this note.')); - } - // we use the edit screen the confirm the delete - $this->edit(); - } - - $this->browse(); - return parent::run(); - } - - /** - * Delete the note object from the db and set a status msg. - */ - public function delete() { - CRM_Core_BAO_Note::deleteRecord(['id' => $this->_id]); - $status = ts('Selected Note has been deleted successfully.'); - CRM_Core_Session::setStatus($status, ts('Deleted'), 'success'); - } - - /** - * Get action links. - * - * @return array[] - */ - public static function links() { - return [ - CRM_Core_Action::VIEW => [ - 'name' => ts('View'), - 'url' => 'civicrm/contact/view/note', - 'qs' => 'action=view&reset=1&cid=%%cid%%&id=%%id%%&selectedChild=note', - 'title' => ts('View Note'), - 'weight' => -20, - ], - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/contact/view/note', - 'qs' => 'action=update&reset=1&cid=%%cid%%&id=%%id%%&selectedChild=note', - 'title' => ts('Edit Note'), - 'weight' => -10, - ], - CRM_Core_Action::ADD => [ - 'name' => ts('Comment'), - 'url' => 'civicrm/contact/view/note', - 'qs' => 'action=add&reset=1&cid=%%cid%%&parentId=%%id%%&selectedChild=note', - 'title' => ts('Add Comment'), - 'weight' => -5, - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/contact/view/note', - 'qs' => 'action=delete&reset=1&cid=%%cid%%&id=%%id%%&selectedChild=note', - 'title' => ts('Delete Note'), - 'weight' => 100, - ], - ]; - } - - /** - * Get action links for comments. - * - * @return array[] - */ - public static function commentLinks(): array { - return [ - CRM_Core_Action::VIEW => [ - 'name' => ts('View'), - 'url' => 'civicrm/contact/view/note', - 'qs' => 'action=view&reset=1&cid=%%cid%%&id={id}&selectedChild=note', - 'title' => ts('View Comment'), - 'weight' => -20, - ], - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/contact/view/note', - 'qs' => 'action=update&reset=1&cid=%%cid%%&id={id}&parentId=%%pid%%&selectedChild=note', - 'title' => ts('Edit Comment'), - 'weight' => -10, - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/contact/view/note', - 'qs' => 'action=delete&reset=1&cid=%%cid%%&id={id}&selectedChild=note', - 'title' => ts('Delete Comment'), - 'weight' => 100, - ], - ]; - } - - /** - * Get the relevant contact ID. - * - * @api supported to be accessed from outside of core. - * - * @return int - * - * @noinspection PhpUnhandledExceptionInspection - * @noinspection PhpDocMissingThrowsInspection - */ - public function getContactID(): int { - return (int) CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE); - } - -} diff --git a/CRM/Contact/Page/View/Relationship.php b/CRM/Contact/Page/View/Relationship.php index f0d6e4d804f3..ec6ad2f88de7 100644 --- a/CRM/Contact/Page/View/Relationship.php +++ b/CRM/Contact/Page/View/Relationship.php @@ -139,19 +139,6 @@ public function view() { ); } - /** - * called when action is browse. - * - */ - public function browse() { - // do nothing :) we are using datatable for rendering relationship selectors - $columnHeaders = CRM_Contact_BAO_Relationship::getColumnHeaders(); - $selector = NULL; - $contactRelationships = []; - CRM_Utils_Hook::searchColumns('relationship.columns', $columnHeaders, $contactRelationships, $selector); - $this->assign('columnHeaders', $columnHeaders); - } - /** * called when action is update or new. * @@ -215,11 +202,6 @@ public function run() { $this->edit(); } - // if this is called from case view, suppress browse relationships form - else { - $this->browse(); - } - return parent::run(); } @@ -245,7 +227,9 @@ public function delete() { } /** - * Get action links. + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. * * @return array * (reference) of action links diff --git a/CRM/Contact/Page/View/Summary.php b/CRM/Contact/Page/View/Summary.php index 585bf193fcb8..f1387457232c 100644 --- a/CRM/Contact/Page/View/Summary.php +++ b/CRM/Contact/Page/View/Summary.php @@ -304,13 +304,6 @@ public static function basicTabs() { 'weight' => 70, 'icon' => 'crm-i fa-tasks', ], - [ - 'id' => 'rel', - 'title' => ts('Relationships'), - 'class' => 'livePage', - 'weight' => 80, - 'icon' => 'crm-i fa-handshake-o', - ], [ 'id' => 'group', 'title' => ts('Groups'), @@ -318,13 +311,6 @@ public static function basicTabs() { 'weight' => 90, 'icon' => 'crm-i fa-users', ], - [ - 'id' => 'note', - 'title' => ts('Notes'), - 'class' => 'livePage', - 'weight' => 100, - 'icon' => 'crm-i fa-sticky-note-o', - ], [ 'id' => 'tag', 'title' => ts('Tags'), diff --git a/CRM/Contact/Page/View/UserDashBoard.php b/CRM/Contact/Page/View/UserDashBoard.php index c93b161213f3..5eee298b7536 100644 --- a/CRM/Contact/Page/View/UserDashBoard.php +++ b/CRM/Contact/Page/View/UserDashBoard.php @@ -126,7 +126,10 @@ public function buildUserDashBoard() { } } - // CRM-16512 - Hide related contact table if user lacks permission to view self + // Relationship section + // FIXME - this used to share code with the contact summary "Relationships" tab + // now that tab has been switched to use SearchKit, and this ought to be switched as well; + // then remove all code commented with "only-used-by-user-dashboard" if (!empty($dashboardOptions['Permissioned Orgs']) && CRM_Core_Permission::check('view my contact')) { $columnHeaders = CRM_Contact_BAO_Relationship::getColumnHeaders(); $contactRelationships = $selector = NULL; diff --git a/CRM/Contact/Page/View/Vcard.php b/CRM/Contact/Page/View/Vcard.php index 9d98552cf35c..29ff266df677 100644 --- a/CRM/Contact/Page/View/Vcard.php +++ b/CRM/Contact/Page/View/Vcard.php @@ -45,10 +45,10 @@ public function run() { if ($defaults['contact_type'] == 'Individual') { $vcard->setName(CRM_Utils_Array::value('last_name', $defaults), - CRM_Utils_Array::value('first_name', $defaults), - CRM_Utils_Array::value('middle_name', $defaults), - CRM_Utils_Array::value('prefix', $defaults), - CRM_Utils_Array::value('suffix', $defaults) + $defaults['first_name'] ?? NULL, + $defaults['middle_name'] ?? NULL, + $defaults['prefix'] ?? NULL, + $defaults['suffix'] ?? NULL ); $organizationName = $defaults['organization_name'] ?? NULL; if ($organizationName !== NULL) { diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 2a9eaccc6e7d..a04da212f21c 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -409,6 +409,8 @@ protected static function getBillingAddressParams($params, $billingLocationTypeI $billingFirstName = $params['billing_first_name'] ?? NULL; $billingMiddleName = $params['billing_middle_name'] ?? NULL; $billingLastName = $params['billing_last_name'] ?? NULL; + // Note this is NOT used when creating a billing address. It is probably passed + // the the payment processor - which is horrible & could maybe change. $addressParams['address_name'] = "{$billingFirstName}" . CRM_Core_DAO::VALUE_SEPARATOR . "{$billingMiddleName}" . CRM_Core_DAO::VALUE_SEPARATOR . "{$billingLastName}"; foreach ($billingFields as $value) { @@ -1029,6 +1031,7 @@ protected static function getContributionTransactionInformation($contributionId, 'class' => 'medium-popup', 'qs' => "reset=1&id=%%id%%&contribution_id=%%contribution_id%%", 'title' => ts('Edit Payment'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], ]; $paymentEditLink = CRM_Core_Action::formLink( @@ -1655,16 +1658,21 @@ public static function getContributionDetails($exportMode, $componentIds) { * thought). * * @param array $params - * @param int $billingLocationTypeID * * @return int * address id */ - public static function createAddress($params, $billingLocationTypeID) { + public static function createAddress($params) { + $billingLocationTypeID = CRM_Core_BAO_LocationType::getBilling(); [$hasBillingField, $addressParams] = self::getBillingAddressParams($params, $billingLocationTypeID); if ($hasBillingField) { - $address = CRM_Core_BAO_Address::writeRecord($addressParams); - return $address->id; + $nameFields = [ + $params['billing_first_name'] ?? NULL, + $params['billing_middle_name'] ?? NULL, + $params['billing_last_name'] ?? NULL, + ]; + $addressParams['name'] = implode(' ', array_filter($nameFields)); + return (int) CRM_Core_BAO_Address::writeRecord($addressParams)->id; } return NULL; @@ -1714,35 +1722,18 @@ public static function deleteAddress($contributionId = NULL, $contactId = NULL) * Online Event Registration or Online Membership signup. * * @param int $componentId - * Participant/membership id. - * @param string $componentName - * Event/Membership. + * Participant id. * * @return int * pending contribution id. */ - public static function checkOnlinePendingContribution($componentId, $componentName) { + public static function checkOnlinePendingContribution($componentId) { $contributionId = NULL; - if (!$componentId || - !in_array($componentName, ['Event', 'Membership']) - ) { - return $contributionId; - } - - if ($componentName === 'Event') { - $idName = 'participant_id'; - $componentTable = 'civicrm_participant'; - $paymentTable = 'civicrm_participant_payment'; - $source = ts('Online Event Registration'); - } - - if ($componentName === 'Membership') { - $idName = 'membership_id'; - $componentTable = 'civicrm_membership'; - $paymentTable = 'civicrm_membership_payment'; - $source = ts('Online Contribution'); - } + $idName = 'participant_id'; + $componentTable = 'civicrm_participant'; + $paymentTable = 'civicrm_participant_payment'; + $source = ts('Online Event Registration'); $pendingStatusId = array_search('Pending', CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name')); $query = " @@ -3375,7 +3366,7 @@ public static function recordFinancialAccounts(&$params, CRM_Contribute_DAO_Cont } // record line items and financial items if (empty($params['skipLineItem'])) { - CRM_Price_BAO_LineItem::processPriceSet($entityId, CRM_Utils_Array::value('line_item', $params), $params['contribution'], $entityTable, $isUpdate); + CRM_Price_BAO_LineItem::processPriceSet($entityId, $params['line_item'] ?? NULL, $params['contribution'], $entityTable, $isUpdate); } // create batch entry if batch_id is passed and @@ -3499,7 +3490,7 @@ public static function buildOptions($fieldName, $context = NULL, $props = []) { 'version' => 3, 'id' => ($props['contribution_page_id']), ]); - $types = (array) CRM_Utils_Array::value('payment_processor', $page, 0); + $types = (array) $page['payment_processor'] ?? 0; $params['condition'] = 'id IN (' . implode(',', $types) . ')'; } break; @@ -3963,7 +3954,7 @@ public static function generateFromEmailAndName($input, $contribution) { // if we are still empty see if we can use anything from a contribution page. if (!empty($pageValues['receipt_from_email'])) { return [ - CRM_Utils_Array::value('receipt_from_name', $pageValues), + $pageValues['receipt_from_name'] ?? NULL, $pageValues['receipt_from_email'], ]; } @@ -4308,6 +4299,7 @@ public static function getContributionPaymentLinks(int $id, string $contribution 'is_refund' => 0, ], 'extra' => '', + 'weight' => 0, ]; if (CRM_Core_Config::isEnabledBackOfficeCreditCardPayments()) { @@ -4325,6 +4317,7 @@ public static function getContributionPaymentLinks(int $id, string $contribution 'mode' => 'live', ], 'extra' => '', + 'weight' => 0, ]; } if ($contributionStatus !== 'Pending') { @@ -4341,6 +4334,7 @@ public static function getContributionPaymentLinks(int $id, string $contribution 'is_refund' => 1, ], 'extra' => '', + 'weight' => 0, ]; } diff --git a/CRM/Contribute/BAO/ContributionPage.php b/CRM/Contribute/BAO/ContributionPage.php index 72fec24e8437..a2a5ce289d62 100644 --- a/CRM/Contribute/BAO/ContributionPage.php +++ b/CRM/Contribute/BAO/ContributionPage.php @@ -261,7 +261,7 @@ public static function sendMail($contactID, $values, $isTest = FALSE, $returnMes if ($gId) { $email = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $gId, 'notify'); if ($email) { - $val = CRM_Core_BAO_UFGroup::checkFieldsEmptyValues($gId, $contactID, CRM_Utils_Array::value($key, $params), TRUE); + $val = CRM_Core_BAO_UFGroup::checkFieldsEmptyValues($gId, $contactID, $params[$key] ?? NULL, TRUE); CRM_Core_BAO_UFGroup::commonSendMail($contactID, $val); } } diff --git a/CRM/Contribute/BAO/ContributionSoft.php b/CRM/Contribute/BAO/ContributionSoft.php index 797d3dce9bf5..2a2885c95f34 100644 --- a/CRM/Contribute/BAO/ContributionSoft.php +++ b/CRM/Contribute/BAO/ContributionSoft.php @@ -30,7 +30,7 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio */ public static function add(&$params) { $hook = empty($params['id']) ? 'create' : 'edit'; - CRM_Utils_Hook::pre($hook, 'ContributionSoft', CRM_Utils_Array::value('id', $params), $params); + CRM_Utils_Hook::pre($hook, 'ContributionSoft', $params['id'] ?? NULL, $params); $contributionSoft = new CRM_Contribute_DAO_ContributionSoft(); $contributionSoft->copyValues($params); diff --git a/CRM/Contribute/BAO/FinancialProcessor.php b/CRM/Contribute/BAO/FinancialProcessor.php index 475caa8165cc..73056b55dafe 100644 --- a/CRM/Contribute/BAO/FinancialProcessor.php +++ b/CRM/Contribute/BAO/FinancialProcessor.php @@ -81,7 +81,7 @@ private static function createFinancialItemsForLine($params, $context, $fields, if ($params['contribution']->currency) { $currency = $params['contribution']->currency; } - $previousLineItemTotal = CRM_Utils_Array::value('line_total', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0); + $previousLineItemTotal = CRM_Utils_Array::value('line_total', $previousLineItems[$fieldValueId] ?? NULL, 0); $itemParams = [ 'transaction_date' => $receiveDate, 'contact_id' => $params['prevContribution']->contact_id, @@ -101,10 +101,10 @@ private static function createFinancialItemsForLine($params, $context, $fields, $taxAmount = (float) $lineItemDetails['tax_amount']; if ($context === 'changeFinancialType' && $lineItemDetails['tax_amount'] === 'null') { // reverse the Sale Tax amount if there is no tax rate associated with new Financial Type - $taxAmount = CRM_Utils_Array::value('tax_amount', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0); + $taxAmount = CRM_Utils_Array::value('tax_amount', $previousLineItems[$fieldValueId] ?? NULL, 0); } elseif ($previousLineItemTotal != $lineItemDetails['line_total']) { - $taxAmount -= CRM_Utils_Array::value('tax_amount', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0); + $taxAmount -= CRM_Utils_Array::value('tax_amount', $previousLineItems[$fieldValueId] ?? NULL, 0); } if ($taxAmount != 0) { $itemParams['amount'] = CRM_Contribute_BAO_FinancialProcessor::getMultiplier($params['contribution']->contribution_status_id, $context) * $taxAmount; diff --git a/CRM/Contribute/BAO/Premium.php b/CRM/Contribute/BAO/Premium.php index 2f648474de4b..f79715f40a2f 100644 --- a/CRM/Contribute/BAO/Premium.php +++ b/CRM/Contribute/BAO/Premium.php @@ -114,6 +114,7 @@ public static function buildPremiumBlock(&$form, $pageID, $formItems = FALSE, $s else { CRM_Core_DAO::storeValues($productDAO, $products[$productDAO->id]); } + $products[$productDAO->id] += ['thumbnail' => '', 'image' => '']; } $options = $temp = []; $temp = explode(',', $productDAO->options); @@ -127,10 +128,10 @@ public static function buildPremiumBlock(&$form, $pageID, $formItems = FALSE, $s if (count($products)) { $form->assign('showPremium', $formItems); $form->assign('showSelectOptions', $formItems); - $form->assign('products', $products); $form->assign('premiumBlock', $premiumBlock); } } + $form->assign('products', $products ?? NULL); } /** diff --git a/CRM/Contribute/Form/AbstractEditPayment.php b/CRM/Contribute/Form/AbstractEditPayment.php index 68e86322e4a1..6b9b5472ef3c 100644 --- a/CRM/Contribute/Form/AbstractEditPayment.php +++ b/CRM/Contribute/Form/AbstractEditPayment.php @@ -529,7 +529,7 @@ public static function formatCreditCardDetails(&$params) { } $tplParams['credit_card_exp_date'] = isset($params['credit_card_exp_date']) ? CRM_Utils_Date::mysqlToIso(CRM_Utils_Date::format($params['credit_card_exp_date'])) : NULL; - $tplParams['credit_card_type'] = CRM_Utils_Array::value('credit_card_type', $params); + $tplParams['credit_card_type'] = $params['credit_card_type'] ?? NULL; $tplParams['credit_card_number'] = CRM_Utils_System::mungeCreditCard(CRM_Utils_Array::value('credit_card_number', $params)); return $tplParams; } diff --git a/CRM/Contribute/Form/AdditionalInfo.php b/CRM/Contribute/Form/AdditionalInfo.php index 86b0e9457265..7f1d5e393fd0 100644 --- a/CRM/Contribute/Form/AdditionalInfo.php +++ b/CRM/Contribute/Form/AdditionalInfo.php @@ -147,9 +147,11 @@ public static function buildAdditionalDetail(&$form) { * * Build the form object for PaymentReminders Information. * + * @deprecated since 5.68 will be removed around 5.78. * @param CRM_Core_Form $form */ public static function buildPaymentReminders(&$form) { + CRM_Core_Error::deprecatedFunctionWarning('no alternative, will be removed around 5.78'); //PaymentReminders section $form->add('hidden', 'hidden_PaymentReminders', 1); $form->add('text', 'initial_reminder_day', ts('Send Initial Reminder'), ['size' => 3]); diff --git a/CRM/Contribute/Form/ContributeFormTrait.php b/CRM/Contribute/Form/ContributeFormTrait.php new file mode 100644 index 000000000000..b5f23429e9fe --- /dev/null +++ b/CRM/Contribute/Form/ContributeFormTrait.php @@ -0,0 +1,91 @@ +isDefined('Contribution')) { + return $this->lookup('Contribution', $fieldName); + } + $id = $this->getContributionID(); + if ($id) { + $this->define('Contribution', 'Contribution', ['id' => $id]); + return $this->lookup('Contribution', $fieldName); + } + return NULL; + } + + /** + * Get the selected Contribution ID. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionID(): ?int { + throw new CRM_Core_Exception('`getContributionID` must be implemented'); + } + + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionPageID(): ?int { + throw new CRM_Core_Exception('`ContributionPageID` must be implemented'); + } + + /** + * Get a value from the contribution being acted on. + * + * All values returned in apiv4 format. Escaping may be required. + * + * @param string $fieldName + * + * @return mixed + * @noinspection PhpUnhandledExceptionInspection + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + */ + public function getContributionPageValue(string $fieldName) { + if ($this->isDefined('ContributionPage')) { + return $this->lookup('ContributionPage', $fieldName); + } + $id = $this->getContributionPageID(); + if ($id) { + $this->define('ContributionPage', 'ContributionPage', ['id' => $id]); + return $this->lookup('ContributionPage', $fieldName); + } + return NULL; + } + +} diff --git a/CRM/Contribute/Form/Contribution.php b/CRM/Contribute/Form/Contribution.php index bfad7aa6ae19..8227fb63af04 100644 --- a/CRM/Contribute/Form/Contribution.php +++ b/CRM/Contribute/Form/Contribution.php @@ -18,6 +18,7 @@ */ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditPayment { use CRM_Contact_Form_ContactFormTrait; + use CRM_Contribute_Form_ContributeFormTrait; /** * The id of the contribution that we are processing. @@ -208,6 +209,11 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP */ public $payment_instrument_id; + /** + * @var bool + */ + private $_payNow; + /** * Explicitly declare the form context. */ @@ -215,6 +221,14 @@ public function getDefaultContext() { return 'create'; } + public function __get($name) { + if ($name === '_contributionID') { + CRM_Core_Error::deprecatedWarning('_contributionID is not a form property - use getContributionID()'); + return $this->getContributionID(); + } + return NULL; + } + /** * Set variables up before form is built. * @@ -240,8 +254,7 @@ public function preProcess(): void { $this->assign('action', $this->_action); // Get the contribution id if update - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive'); - $this->assign('isUsePaymentBlock', !empty($this->_id)); + $this->assign('isUsePaymentBlock', (bool) $this->getContributionID()); if (!empty($this->_id)) { $this->assignPaymentInfoBlock(); $this->assign('contribID', $this->_id); @@ -306,7 +319,6 @@ public function preProcess(): void { // Set title if ($this->_mode && $this->_id) { $this->_payNow = TRUE; - $this->assign('payNow', $this->_payNow); $this->setTitle(ts('Pay with Credit Card')); } elseif ($this->_values['is_template']) { @@ -318,6 +330,7 @@ public function preProcess(): void { else { $this->setPageTitle($this->_ppID ? ts('Pledge Payment') : ts('Contribution')); } + $this->assign('payNow', $this->_payNow); } private function preProcessPledge(): void { @@ -605,8 +618,7 @@ public function buildQuickForm() { $getOnlyPriceSetElements = FALSE; } - $this->set('priceSetId', $this->_priceSetId); - CRM_Price_BAO_PriceSet::buildPriceSet($this, 'contribution', FALSE); + $this->buildPriceSet(); // get only price set form elements. if ($getOnlyPriceSetElements) { @@ -670,7 +682,7 @@ public function buildQuickForm() { } } if ($buildRecurBlock) { - CRM_Contribute_Form_Contribution_Main::buildRecur($this); + $this->buildRecur(); $this->setDefaults(['is_recur' => 0]); $this->assign('buildRecurBlock', TRUE); } @@ -872,24 +884,27 @@ public function buildQuickForm() { $mailingInfo = Civi::settings()->get('mailing_backend'); $this->assign('outBound_option', $mailingInfo['outBound_option']); - $this->addButtons([ + $buttons = [ [ 'type' => 'upload', 'name' => ts('Save'), 'js' => $js, 'isDefault' => TRUE, ], - [ + ]; + if (!$this->_id) { + $buttons[] = [ 'type' => 'upload', 'name' => ts('Save and New'), 'js' => $js, 'subName' => 'new', - ], - [ - 'type' => 'cancel', - 'name' => ts('Cancel'), - ], - ]); + ]; + } + $buttons[] = [ + 'type' => 'cancel', + 'name' => ts('Cancel'), + ]; + $this->addButtons($buttons); // if contribution is related to membership or participant freeze Financial Type, Amount if ($this->_id) { @@ -922,6 +937,49 @@ public function buildQuickForm() { } } + /** + * Build the price set form. + */ + private function buildPriceSet(): void { + $priceSetId = $this->getPriceSetID(); + $form = $this; + $component = 'contribution'; + $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId, TRUE, FALSE); + $form->_priceSet = $priceSet[$priceSetId] ?? NULL; + $validPriceFieldIds = array_keys($form->_priceSet['fields']); + + $form->_priceSet['id'] = $form->_priceSet['id'] ?? $priceSetId; + $form->assign('priceSet', $form->_priceSet); + + $feeBlock = &$form->_priceSet['fields']; + + // Call the buildAmount hook. + CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock); + + $hideAdminValues = !CRM_Core_Permission::check('edit contributions'); + // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions + $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); + $checklifetime = FALSE; + foreach ($feeBlock as $id => $field) { + $options = $field['options'] ?? NULL; + + if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { + continue; + } + + if (!empty($options)) { + CRM_Price_BAO_PriceField::addQuickFormElement($form, + 'price_' . $field['id'], + $field['id'], + FALSE, + $field['is_required'] ?? FALSE, + NULL, + $options + ); + } + } + } + /** * Global form rule. * @@ -1028,7 +1086,7 @@ public function postProcess() { return; } // Get the submitted form values. - $submittedValues = $this->controller->exportValues($this->_name); + $submittedValues = $this->getSubmittedValues(); if ($this->_values['is_template']) { // If we are a template contribution we don't allow the contribution_status_id to be set // on the form but we need it for the submit function. @@ -1207,7 +1265,7 @@ protected function processCreditCard($submittedValues, $lineItem, $contactID) { $contributionParams, $financialType, $this->_bltID, - CRM_Utils_Array::value('is_recur', $this->_params) + $this->_params['is_recur'] ?? NULL ); $paymentParams['contributionID'] = $contribution->id; @@ -1332,7 +1390,7 @@ private function processFormContribution( // add these values for the recurringContrib function ,CRM-10188 $params['financial_type_id'] = $financialType->id; - $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $billingLocationID); + $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); //@todo - this is being set from the form to resolve CRM-10188 - an // eNotice caused by it not being set @ the front end @@ -1346,7 +1404,7 @@ private function processFormContribution( // We may no longer need to set params['is_recur'] - it used to be used in processRecurringContribution $params['is_recur'] = $isRecur; $params['payment_instrument_id'] = $contributionParams['payment_instrument_id'] ?? NULL; - $recurringContributionID = !$isRecur ? NULL : CRM_Contribute_Form_Contribution_Confirm::processRecurringContribution($form, $params, [ + $recurringContributionID = !$isRecur ? NULL : $this->processRecurringContribution($form, $params, [ 'contact_id' => $contactID, 'financial_type_id' => $financialType->id, ]); @@ -1391,9 +1449,6 @@ private function processFormContribution( $smarty->assign('dataArray', $dataArray); $smarty->assign('totalTaxAmount', $params['tax_amount'] ?? NULL); } - - // lets store it in the form variable so postProcess hook can get to this and use it - $form->_contributionID = $contribution->id; } // process soft credit / pcp params first @@ -1429,6 +1484,51 @@ private function processFormContribution( return $contribution; } + /** + * Create the recurring contribution record. + * + * @param self $form + * @param array $params + * @param array $recurParams + * + * @return int|null + */ + private function processRecurringContribution($form, $params, $recurParams) { + // @todo - previously shared code - many items may be irrelevant. + $recurParams['amount'] = $params['amount'] ?? NULL; + $recurParams['auto_renew'] = $params['auto_renew'] ?? NULL; + $recurParams['frequency_unit'] = $params['frequency_unit'] ?? NULL; + $recurParams['frequency_interval'] = $params['frequency_interval'] ?? NULL; + $recurParams['installments'] = $params['installments'] ?? NULL; + $recurParams['currency'] = $params['currency'] ?? NULL; + $recurParams['payment_instrument_id'] = $params['payment_instrument_id']; + + $recurParams['is_test'] = 0; + if (($form->_action & CRM_Core_Action::PREVIEW) || + (isset($form->_mode) && ($form->_mode == 'test')) + ) { + $recurParams['is_test'] = 1; + } + + $recurParams['start_date'] = $recurParams['create_date'] = $recurParams['modified_date'] = date('YmdHis'); + if (!empty($params['receive_date'])) { + $recurParams['start_date'] = date('YmdHis', strtotime($params['receive_date'])); + } + $recurParams['invoice_id'] = $params['invoiceID'] ?? NULL; + $recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Pending'); + $recurParams['payment_processor_id'] = $params['payment_processor_id'] ?? NULL; + $recurParams['is_email_receipt'] = (bool) ($params['is_email_receipt'] ?? FALSE); + // We set trxn_id=invoiceID specifically for paypal IPN. It is reset this when paypal sends us the real trxn id, CRM-2991 + $recurParams['processor_id'] = $recurParams['trxn_id'] = ($params['trxn_id'] ?? $params['invoiceID']); + + $campaignId = $params['campaign_id'] ?? $form->_values['campaign_id'] ?? NULL; + $recurParams['campaign_id'] = $campaignId; + $recurring = CRM_Contribute_BAO_ContributionRecur::add($recurParams); + $form->_params['contributionRecurID'] = $recurring->id; + + return $recurring->id; + } + /** * Generate the data to construct a snippet based pane. * @@ -1481,8 +1581,20 @@ protected function generatePane($type, $defaults) { * * @throws \CRM_Core_Exception * @throws \Civi\Payment\Exception\PaymentProcessorException + * + * @deprecated since 5.68 will be removed around 5.80. + * + * Try something like + * use use \Civi\Test\FormTrait; + * $form = $this->getTestForm('CRM_Contribute_Form_Contribution', $submittedValues, [ + * 'id' => 4; + * 'action' => 'update', + * ]); + * $form->processForm(); */ public function testSubmit($params, $action, $creditCardMode = NULL) { + // Note that this is really used from tests - so adding noisy deprecations would make them + // fail straight away. $defaults = [ 'soft_credit_contact_id' => [], 'receive_date' => date('Y-m-d H:i:s'), @@ -1528,7 +1640,6 @@ public function testSubmit($params, $action, $creditCardMode = NULL) { $this->_fields = []; return $this->submit(array_merge($defaults, $params), $action, CRM_Utils_Array::value('pledge_payment_id', $params)); - } /** @@ -1555,7 +1666,7 @@ protected function submit($submittedValues, $action, $pledgePaymentID) { if ($this->getPriceSetID() && $action & CRM_Core_Action::UPDATE) { $line = CRM_Price_BAO_LineItem::getLineItems($this->_id, 'contribution'); $lineID = key($line); - $priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', CRM_Utils_Array::value('price_field_id', $line[$lineID]), 'price_set_id'); + $priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', $line[$lineID]['price_field_id'] ?? NULL, 'price_set_id'); $quickConfig = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config'); // Why do we do this? Seems like a like a wrapper for old functionality - but single line price sets & quick // config should be treated the same. @@ -1658,7 +1769,7 @@ protected function submit($submittedValues, $action, $pledgePaymentID) { $componentDetails = CRM_Contribute_BAO_Contribution::getComponentDetails($this->_id); if (empty($componentDetails['membership']) && empty($componentDetails['participant'])) { if (!($this->_action & CRM_Core_Action::UPDATE && (($this->_defaults['contribution_status_id'] != $submittedValues['contribution_status_id'])))) { - $lineItems[$itemId]['unit_price'] = $lineItems[$itemId]['line_total'] = CRM_Utils_Rule::cleanMoney(CRM_Utils_Array::value('total_amount', $submittedValues)); + $lineItems[$itemId]['unit_price'] = $lineItems[$itemId]['line_total'] = $this->getSubmittedValue('total_amount'); } } @@ -1704,7 +1815,7 @@ protected function submit($submittedValues, $action, $pledgePaymentID) { $submittedValues['total_amount'] = $this->_values['total_amount'] ?? NULL; // Avoid tax amount deduction on edit form and keep it original, because this will lead to error described in CRM-20676 if (!$this->_id) { - $submittedValues['total_amount'] -= CRM_Utils_Array::value('tax_amount', $this->_values, 0); + $submittedValues['total_amount'] -= $this->_values['tax_amount'] ?? 0; } } $this->assign('lineItem', !empty($lineItem) && !$isQuickConfig ? $lineItem : FALSE); @@ -1892,9 +2003,9 @@ protected function submit($submittedValues, $action, $pledgePaymentID) { $contribution->id, ($formValues['option_type'] ?? 0) == 2, $formValues['total_amount'], - CRM_Utils_Array::value('total_amount', $this->_defaults), + $this->_defaults['total_amount'] ?? NULL, $formValues['contribution_status_id'], - CRM_Utils_Array::value('contribution_status_id', $this->_defaults) + $this->_defaults['contribution_status_id'] ?? NULL ); return $contribution; } @@ -1916,7 +2027,7 @@ protected function invoicingPostProcessHook($submittedValues, $action, $lineItem foreach ($lineItem as $key => $value) { foreach ($value as $v) { if (isset($taxRate[(string) CRM_Utils_Array::value('tax_rate', $v)])) { - $taxRate[(string) $v['tax_rate']] = $taxRate[(string) $v['tax_rate']] + CRM_Utils_Array::value('tax_amount', $v); + $taxRate[(string) $v['tax_rate']] = $taxRate[(string) $v['tax_rate']] + ($v['tax_amount'] ?? 0); } else { if (isset($v['tax_rate'])) { @@ -2055,12 +2166,32 @@ public function setUserContext(): void { } /** - * Get the contribution ID. + * Get the selected Contribution ID. * - * @return int|null + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection */ - protected function getContributionID(): ?int { - return $this->_id; + public function getContributionID(): ?int { + if (!$this->_id) { + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive'); + } + return $this->_id ? (int) $this->_id : NULL; + } + + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionPageID(): ?int { + return $this->getContributionID() ? $this->getContributionValue('contribution_page_id') : NULL; } /** @@ -2220,4 +2351,91 @@ public function getPledgePaymentID(): ?int { return $this->_ppID ? (int) $this->_ppID : NULL; } + /** + * Build elements to collect information for recurring contributions. + * + * Previously shared function. + */ + private function buildRecur(): void { + $form = $this; + $attributes = CRM_Core_DAO::getAttribute('CRM_Contribute_DAO_ContributionRecur'); + $className = 'CRM_Contribute_Form_Contribution'; + + $form->assign('is_recur_interval', $form->_values['is_recur_interval'] ?? NULL); + $form->assign('is_recur_installments', $form->_values['is_recur_installments'] ?? NULL); + $paymentObject = $form->getVar('_paymentObject'); + if ($paymentObject) { + $form->assign('recurringHelpText', $paymentObject->getText('contributionPageRecurringHelp', [ + 'is_recur_installments' => !empty($form->_values['is_recur_installments']), + 'is_email_receipt' => !empty($form->_values['is_email_receipt']), + ])); + } + + $frUnits = $form->_values['recur_frequency_unit'] ?? NULL; + $frequencyUnits = CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, TRUE); + if (empty($frUnits) && + $className == 'CRM_Contribute_Form_Contribution' + ) { + $frUnits = implode(CRM_Core_DAO::VALUE_SEPARATOR, + CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, FALSE, NULL, 'value') + ); + } + + $unitVals = explode(CRM_Core_DAO::VALUE_SEPARATOR, $frUnits); + + // FIXME: Ideally we should freeze select box if there is only + // one option but looks there is some problem /w QF freeze. + //if ( count( $units ) == 1 ) { + //$frequencyUnit->freeze( ); + //} + + $form->add('text', 'installments', ts('installments'), + $attributes['installments'] + ['class' => 'two'] + ); + $form->addRule('installments', ts('Number of installments must be a whole number.'), 'integer'); + + $is_recur_label = ts('I want to contribute this amount every'); + + // CRM 10860, display text instead of a dropdown if there's only 1 frequency unit + if (count($unitVals) == 1) { + $form->assign('one_frequency_unit', TRUE); + $form->add('hidden', 'frequency_unit', $unitVals[0]); + if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + $unit = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($unitVals[0]); + $form->assign('frequency_unit', $unit); + } + else { + $is_recur_label = ts('I want to contribute this amount every %1', + [1 => $frequencyUnits[$unitVals[0]]] + ); + $form->assign('all_text_recur', TRUE); + } + } + else { + $form->assign('one_frequency_unit', FALSE); + $units = []; + foreach ($unitVals as $key => $val) { + if (array_key_exists($val, $frequencyUnits)) { + $units[$val] = $frequencyUnits[$val]; + if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + $units[$val] = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($val); + $unit = ts('Every'); + } + } + } + $frequencyUnit = &$form->add('select', 'frequency_unit', NULL, $units, FALSE, ['aria-label' => ts('Frequency Unit'), 'class' => 'crm-select2 eight']); + } + + if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + $form->add('text', 'frequency_interval', $unit, $attributes['frequency_interval'] + ['aria-label' => ts('Every'), 'class' => 'two']); + $form->addRule('frequency_interval', ts('Frequency must be a whole number (EXAMPLE: Every 3 months).'), 'integer'); + } + else { + // make sure frequency_interval is submitted as 1 if given no choice to user. + $form->add('hidden', 'frequency_interval', 1); + } + + $form->add('checkbox', 'is_recur', $is_recur_label, NULL); + } + } diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index e43d107f1c7f..daf64aa0f6c7 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -328,7 +328,7 @@ public function preProcess() { [$field, $locType] = explode('-', $loc); } - if (in_array($field, $addressBlocks)) { + if (in_array($field, $addressBlocks) && !empty($value)) { if ($locType === 'Primary') { $defaultLocationType = CRM_Core_BAO_LocationType::getDefault(); $locType = $defaultLocationType->id; @@ -565,20 +565,11 @@ public function buildQuickForm() { $this->assign('is_separate_payment', $this->isSeparateMembershipPayment()); $this->assign('priceSetID', $this->_priceSetId); - - // The concept of contributeMode is deprecated. - if ($this->_contributeMode === 'notify' || - $this->_amount <= 0.0 || $this->_params['is_pay_later'] - ) { - $contribButton = ts('Continue'); - } - elseif (!empty($this->_ccid)) { - $contribButton = ts('Make Payment'); - } - else { - $contribButton = ts('Make Contribution'); - } - $this->assign('button', $contribButton); + $contributionButtonText = $this->getPaymentProcessorObject()->getText('contributionPageButtonText', [ + 'is_payment_to_existing' => !empty($this->_ccid), + 'amount' => $this->_amount, + ]); + $this->assign('button', $contributionButtonText); $this->assign('continueText', $this->getPaymentProcessorObject()->getText('contributionPageContinueText', [ @@ -586,11 +577,17 @@ public function buildQuickForm() { 'amount' => $this->_amount, ]) ); + $this->assign('confirmText', + $this->getPaymentProcessorObject()->getText('contributionPageConfirmText', [ + 'is_payment_to_existing' => !empty($this->_ccid), + 'amount' => $this->_amount, + ]) + ); $this->addButtons([ [ 'type' => 'next', - 'name' => $contribButton, + 'name' => $contributionButtonText, 'spacing' => '         ', 'isDefault' => TRUE, ], @@ -802,22 +799,6 @@ private function buildMembershipBlock($cid, $selectedMembershipTypeID = NULL, $i return $separateMembershipPayment; } - /** - * Overwrite action. - * - * Since we are only showing elements in frozen mode no help display needed. - * - * @return int - */ - public function getAction() { - if ($this->_action & CRM_Core_Action::PREVIEW) { - return CRM_Core_Action::VIEW | CRM_Core_Action::PREVIEW; - } - else { - return CRM_Core_Action::VIEW; - } - } - /** * Set default values for the form. * @@ -1047,7 +1028,7 @@ protected function processFormContribution( // add these values for the recurringContrib function ,CRM-10188 $params['financial_type_id'] = $financialType->id; - $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $billingLocationID); + $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); //@todo - this is being set from the form to resolve CRM-10188 - an // eNotice caused by it not being set @ the front end @@ -1061,7 +1042,7 @@ protected function processFormContribution( // We may no longer need to set params['is_recur'] - it used to be used in processRecurringContribution $params['is_recur'] = $isRecur; $params['payment_instrument_id'] = $contributionParams['payment_instrument_id'] ?? NULL; - $recurringContributionID = !$isRecur ? NULL : self::processRecurringContribution($form, $params, [ + $recurringContributionID = !$isRecur ? NULL : $this->processRecurringContribution($params, [ 'contact_id' => $contactID, 'financial_type_id' => $financialType->id, ]); @@ -1167,13 +1148,12 @@ protected function processFormContribution( /** * Create the recurring contribution record. * - * @param CRM_Core_Form $form * @param array $params * @param array $recurParams * * @return int|null */ - public static function processRecurringContribution($form, $params, $recurParams) { + private function processRecurringContribution(array $params, array $recurParams) { $recurParams['amount'] = $params['amount'] ?? NULL; $recurParams['auto_renew'] = $params['auto_renew'] ?? NULL; @@ -1185,20 +1165,20 @@ public static function processRecurringContribution($form, $params, $recurParams // CRM-14354: For an auto-renewing membership with an additional contribution, // if separate payments is not enabled, make sure only the membership fee recurs - if (!empty($form->_membershipBlock) - && $form->_membershipBlock['is_separate_payment'] === '0' + if (!empty($this->_membershipBlock) + && $this->_membershipBlock['is_separate_payment'] === '0' && isset($params['selectMembership']) - && $form->_values['is_allow_other_amount'] == '1' + && $this->_values['is_allow_other_amount'] == '1' // CRM-16331 - && !empty($form->_membershipTypeValues) - && !empty($form->_membershipTypeValues[$params['selectMembership']]['minimum_fee']) + && !empty($this->_membershipTypeValues) + && !empty($this->_membershipTypeValues[$params['selectMembership']]['minimum_fee']) ) { - $recurParams['amount'] = $form->_membershipTypeValues[$params['selectMembership']]['minimum_fee']; + $recurParams['amount'] = $this->_membershipTypeValues[$params['selectMembership']]['minimum_fee']; } $recurParams['is_test'] = 0; - if (($form->_action & CRM_Core_Action::PREVIEW) || - (isset($form->_mode) && ($form->_mode == 'test')) + if (($this->_action & CRM_Core_Action::PREVIEW) || + (isset($this->_mode) && ($this->_mode === 'test')) ) { $recurParams['is_test'] = 1; } @@ -1208,29 +1188,16 @@ public static function processRecurringContribution($form, $params, $recurParams $recurParams['start_date'] = date('YmdHis', strtotime($params['receive_date'])); } $recurParams['invoice_id'] = $params['invoiceID'] ?? NULL; - $recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending'); + $recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Pending'); $recurParams['payment_processor_id'] = $params['payment_processor_id'] ?? NULL; $recurParams['is_email_receipt'] = (bool) ($params['is_email_receipt'] ?? FALSE); // We set trxn_id=invoiceID specifically for paypal IPN. It is reset this when paypal sends us the real trxn id, CRM-2991 $recurParams['processor_id'] = $recurParams['trxn_id'] = ($params['trxn_id'] ?? $params['invoiceID']); - $campaignId = $params['campaign_id'] ?? $form->_values['campaign_id'] ?? NULL; + $campaignId = $params['campaign_id'] ?? $this->_values['campaign_id'] ?? NULL; $recurParams['campaign_id'] = $campaignId; $recurring = CRM_Contribute_BAO_ContributionRecur::add($recurParams); - if (is_a($recurring, 'CRM_Core_Error')) { - CRM_Core_Error::displaySessionError($recurring); - $urlString = 'civicrm/contribute/transact'; - $urlParams = '_qf_Main_display=true'; - if (get_class($form) == 'CRM_Contribute_Form_Contribution') { - $urlString = 'civicrm/contact/view/contribution'; - $urlParams = "action=add&cid={$form->_contactID}"; - if ($form->_mode) { - $urlParams .= "&mode={$form->_mode}"; - } - } - CRM_Utils_System::redirect(CRM_Utils_System::url($urlString, $urlParams)); - } - $form->_params['contributionRecurID'] = $recurring->id; + $this->_params['contributionRecurID'] = $recurring->id; return $recurring->id; } @@ -1471,13 +1438,11 @@ protected function postProcessMembership( $membershipParams, $contactID, $premiumParams, $customFieldsFormatted, $membershipDetails, $membershipTypeIDs, $isPaidMembership, $membershipID, $isProcessSeparateMembershipTransaction, $financialTypeID, $unprocessedLineItems) { - // Assign $this to $form while we eliminate it. - $form = $this; $membershipContribution = NULL; $isTest = $membershipParams['is_test'] ?? FALSE; $errors = $paymentResults = []; - $form->_values['isMembership'] = TRUE; - $isRecurForFirstTransaction = $form->_params['is_recur'] ?? $membershipParams['is_recur'] ?? NULL; + $this->_values['isMembership'] = TRUE; + $isRecurForFirstTransaction = $this->_params['is_recur'] ?? $membershipParams['is_recur'] ?? NULL; $totalAmount = $membershipParams['amount']; @@ -1515,14 +1480,14 @@ protected function postProcessMembership( $membershipContribution = $paymentResult['contribution']; // Save the contribution ID so that I can be used in email receipts // For example, if you need to generate a tax receipt for the donation only. - $form->_values['contribution_other_id'] = $membershipContribution->id; + $this->_values['contribution_other_id'] = $membershipContribution->id; } } if ($isProcessSeparateMembershipTransaction) { try { - $form->_lineItem = $unprocessedLineItems; - if (empty($form->_params['auto_renew']) && !empty($membershipParams['is_recur'])) { + $this->_lineItem = $unprocessedLineItems; + if (empty($this->_params['auto_renew']) && !empty($membershipParams['is_recur'])) { unset($membershipParams['is_recur']); } [$membershipContribution, $secondPaymentResult] = $this->processSecondaryFinancialTransaction($contactID, array_merge($membershipParams, ['skipLineItem' => 1]), @@ -1543,7 +1508,7 @@ protected function postProcessMembership( //@todo - why is this nested so deep? it seems like it could be just set on the calling function on the form layer if (isset($membershipParams['onbehalf']) && !empty($membershipParams['onbehalf']['member_campaign_id'])) { - $form->_params['campaign_id'] = $membershipParams['onbehalf']['member_campaign_id']; + $this->_params['campaign_id'] = $membershipParams['onbehalf']['member_campaign_id']; } //@todo it should no longer be possible for it to get to this point & membership to not be an array if (is_array($membershipTypeIDs) && !empty($membershipContributionID)) { @@ -1559,7 +1524,7 @@ protected function postProcessMembership( } $i = 1; - $form->_params['createdMembershipIDs'] = []; + $this->_params['createdMembershipIDs'] = []; foreach ($membershipTypeIDs as $memType) { $membershipLineItems = []; if ($i < count($membershipTypeIDs)) { @@ -1571,22 +1536,22 @@ protected function postProcessMembership( } $i++; $numTerms = $typesTerms[$memType] ?? 1; - $contributionRecurID = $form->_params['contributionRecurID'] ?? NULL; + $contributionRecurID = $this->_params['contributionRecurID'] ?? NULL; $membershipSource = NULL; - if (!empty($form->_params['membership_source'])) { - $membershipSource = $form->_params['membership_source']; + if (!empty($this->_params['membership_source'])) { + $membershipSource = $this->_params['membership_source']; } - elseif ((isset($form->_values['title']) && !empty($form->_values['title'])) || (isset($form->_values['frontend_title']) && !empty($form->_values['frontend_title']))) { - $title = $form->_values['frontend_title']; + elseif ((isset($this->_values['title']) && !empty($this->_values['title'])) || (isset($this->_values['frontend_title']) && !empty($this->_values['frontend_title']))) { + $title = $this->_values['frontend_title']; $membershipSource = ts('Online Contribution:') . ' ' . $title; } $isPayLater = NULL; - if (isset($form->_params)) { - $isPayLater = $form->_params['is_pay_later'] ?? NULL; + if (isset($this->_params)) { + $isPayLater = $this->_params['is_pay_later'] ?? NULL; } $memParams = [ - 'campaign_id' => $form->_params['campaign_id'] ?? ($form->_values['campaign_id'] ?? NULL), + 'campaign_id' => $this->_params['campaign_id'] ?? ($this->_values['campaign_id'] ?? NULL), ]; // @todo Move this into CRM_Member_BAO_Membership::processMembership @@ -1594,15 +1559,6 @@ protected function postProcessMembership( $pending = $membershipContribution->contribution_status_id == CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending'); } else { - // The concept of contributeMode is deprecated. - // the is_monetary concept probably should be too as it can be calculated from - // the existence of 'amount' & seems fragile. - if (((isset($this->_contributeMode)) || !empty($this->_params['is_pay_later']) - ) && - (($this->_values['is_monetary'] && $this->_amount > 0.0)) - ) { - $pending = TRUE; - } $pending = FALSE; } @@ -1615,10 +1571,10 @@ protected function postProcessMembership( $membershipLineItems ); - $form->set('renewal_mode', $renewalMode); + $this->set('renewal_mode', $renewalMode); if (!empty($dates)) { - $form->assign('mem_start_date', CRM_Utils_Date::customFormat($dates['start_date'], '%Y%m%d')); - $form->assign('mem_end_date', CRM_Utils_Date::customFormat($dates['end_date'], '%Y%m%d')); + $this->assign('mem_start_date', CRM_Utils_Date::customFormat($dates['start_date'], '%Y%m%d')); + $this->assign('mem_end_date', CRM_Utils_Date::customFormat($dates['end_date'], '%Y%m%d')); } if (!empty($membershipContribution)) { @@ -1631,17 +1587,17 @@ protected function postProcessMembership( civicrm_api3('MembershipPayment', 'create', $membershipPaymentParams); } if ($membership) { - CRM_Core_BAO_CustomValueTable::postProcess($form->_params, 'civicrm_membership', $membership->id, 'Membership'); - $form->_params['createdMembershipIDs'][] = $membership->id; - $form->_params['membershipID'] = $membership->id; + CRM_Core_BAO_CustomValueTable::postProcess($this->_params, 'civicrm_membership', $membership->id, 'Membership'); + $this->_params['createdMembershipIDs'][] = $membership->id; + $this->_params['membershipID'] = $membership->id; //CRM-15232: Check if membership is created and on the basis of it use //membership receipt template to send payment receipt - $form->_values['isMembership'] = TRUE; + $this->_values['isMembership'] = TRUE; } } - if ($form->_priceSetId && !empty($form->_useForMember) && !empty($form->_lineItem)) { - foreach ($form->_lineItem[$form->_priceSetId] as & $priceFieldOp) { + if ($this->_priceSetId && !empty($this->_useForMember) && !empty($this->_lineItem)) { + foreach ($this->_lineItem[$this->_priceSetId] as & $priceFieldOp) { if (!empty($priceFieldOp['membership_type_id']) && $membership->membership_type_id == $priceFieldOp['membership_type_id']) { $membershipOb = $membership; $priceFieldOp['start_date'] = $membershipOb->start_date ? CRM_Utils_Date::formatDateOnlyLong($membershipOb->start_date) : '-'; @@ -1651,8 +1607,8 @@ protected function postProcessMembership( $priceFieldOp['start_date'] = $priceFieldOp['end_date'] = 'N/A'; } } - $form->_values['lineItem'] = $form->_lineItem; - $form->assign('lineItem', $form->_lineItem); + $this->_values['lineItem'] = $this->_lineItem; + $this->assign('lineItem', $this->_lineItem); } } @@ -1662,25 +1618,25 @@ protected function postProcessMembership( } if (isset($membershipContributionID)) { - $form->_values['contribution_id'] = $membershipContributionID; + $this->_values['contribution_id'] = $membershipContributionID; } - if (empty($form->_params['is_pay_later']) && $form->_paymentProcessor) { + if (empty($this->_params['is_pay_later']) && $this->_paymentProcessor) { // the is_monetary concept probably should be deprecated as it can be calculated from // the existence of 'amount' & seems fragile. - if ($form->_values['is_monetary'] && $form->_amount > 0.0 && !$form->_params['is_pay_later']) { + if ($this->_values['is_monetary'] && $this->_amount > 0.0 && !$this->_params['is_pay_later']) { // call postProcess hook before leaving - $form->postProcessHook(); + $this->postProcessHook(); } - $payment = Civi\Payment\System::singleton()->getByProcessor($form->_paymentProcessor); + $payment = Civi\Payment\System::singleton()->getByProcessor($this->_paymentProcessor); // The contribution_other_id is effectively the ID for the only contribution or the non-membership contribution. // Since we have called the membership contribution (in a 2 contribution scenario) this is out // primary-contribution compared to that - but let's face it - it's all just too hard & confusing at the moment! - $paymentParams = array_merge($form->_params, ['contributionID' => $form->_values['contribution_other_id']]); + $paymentParams = array_merge($this->_params, ['contributionID' => $this->_values['contribution_other_id']]); // CRM-19792 : set necessary fields for payment processor - CRM_Core_Payment_Form::mapParams($form->_bltID, $paymentParams, $paymentParams, TRUE); + CRM_Core_Payment_Form::mapParams($this->_bltID, $paymentParams, $paymentParams, TRUE); // If this is a single membership-related contribution, it won't have // be performed yet, so do it now. @@ -1718,9 +1674,9 @@ protected function postProcessMembership( return; } - $emailValues = array_merge($membershipParams, $form->_values); + $emailValues = array_merge($membershipParams, $this->_values); $emailValues['membership_assign'] = 1; - $emailValues['useForMember'] = !empty($form->_useForMember); + $emailValues['useForMember'] = !empty($this->_useForMember); // Finally send an email receipt for pay-later scenario (although it might sometimes be caught above!) if ($totalAmount == 0) { @@ -1732,7 +1688,7 @@ protected function postProcessMembership( // also it reset any payment processor selection result into pending free membership // so its a kind of hack to complete free membership at this point since there is no $form->_paymentProcessor info if (!empty($membershipContribution) && !is_a($membershipContribution, 'CRM_Core_Error')) { - if (empty($form->_paymentProcessor)) { + if (empty($this->_paymentProcessor)) { // @todo this can maybe go now we are setting payment_processor_id = 0 more reliably. $paymentProcessorIDs = explode(CRM_Core_DAO::VALUE_SEPARATOR, $this->_values['payment_processor'] ?? NULL); $this->_paymentProcessor['id'] = $paymentProcessorIDs[0]; diff --git a/CRM/Contribute/Form/Contribution/Main.php b/CRM/Contribute/Form/Contribution/Main.php index 0c4c36bef11e..5f7d9aa04ab0 100644 --- a/CRM/Contribute/Form/Contribution/Main.php +++ b/CRM/Contribute/Form/Contribution/Main.php @@ -126,14 +126,14 @@ public function setDefaultValues() { // remove component related fields foreach ($this->_fields as $name => $fieldInfo) { //don't set custom data Used for Contribution (CRM-1344) - if (substr($name, 0, 7) == 'custom_') { + if (substr($name, 0, 7) === 'custom_') { $id = substr($name, 7); if (!CRM_Core_BAO_CustomGroup::checkCustomField($id, ['Contribution', 'Membership'])) { continue; } // ignore component fields } - elseif (array_key_exists($name, $contribFields) || (substr($name, 0, 11) == 'membership_') || (substr($name, 0, 13) == 'contribution_')) { + elseif (array_key_exists($name, $contribFields) || (substr($name, 0, 11) === 'membership_') || (substr($name, 0, 13) == 'contribution_')) { continue; } $fields[$name] = $fieldInfo; @@ -146,8 +146,9 @@ public function setDefaultValues() { $billingDefaults = $this->getProfileDefaults('Billing', $contactID); $this->_defaults = array_merge($this->_defaults, $billingDefaults); } - if (!empty($this->_ccid) && !empty($this->_pendingAmount)) { - $this->_defaults['total_amount'] = CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($this->_pendingAmount); + $balance = $this->getContributionBalance(); + if ($balance) { + $this->_defaults['total_amount'] = CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($balance); } /* @@ -254,7 +255,11 @@ public function setDefaultValues() { //set custom field defaults foreach ($this->_fields as $name => $field) { if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($name)) { - if (!isset($this->_defaults[$name])) { + // check if the custom field is on a membership, we only want to load + // defaults for membership custom fields here, not contact fields + if (!isset($this->_defaults[$name]) + && !CRM_Core_BAO_CustomGroup::checkCustomField($customFieldID, ['Membership']) + ) { CRM_Core_BAO_CustomField::setProfileDefaults($customFieldID, $name, $this->_defaults, $entityId, CRM_Profile_Form::MODE_REGISTER ); @@ -287,7 +292,7 @@ public function buildQuickForm() { // CRM-18399: used by template to pass pre profile id as a url arg $this->assign('custom_pre_id', $this->_values['custom_pre_id']); - $this->buildComponentForm($this->_id, $this); + $this->buildComponentForm(); } // Build payment processor form @@ -345,12 +350,12 @@ public function buildQuickForm() { // build price set form. $this->set('priceSetId', $this->_priceSetId); if (empty($this->_ccid)) { - CRM_Price_BAO_PriceSet::buildPriceSet($this, $this->getFormContext()); + $this->buildPriceSet($this, $this->getFormContext()); } if ($this->_values['is_monetary'] && $this->_values['is_recur'] && empty($this->_values['pledge_id']) ) { - self::buildRecur($this); + $this->buildRecur(); } } @@ -362,7 +367,7 @@ public function buildQuickForm() { //don't build pledge block when mid is passed if (!$this->getRenewalMembershipID() && empty($this->_ccid)) { if (CRM_Core_Component::isEnabled('CiviPledge') && !empty($this->_values['pledge_block_id'])) { - CRM_Pledge_BAO_PledgeBlock::buildPledgeBlock($this); + $this->buildPledgeBlock(); } } @@ -397,10 +402,9 @@ public function buildQuickForm() { CRM_Core_BAO_CMSUser::buildForm($this, $profileID, TRUE); } } - if ($this->_pcpId && empty($this->_ccid)) { + if ($this->getPcpID() && empty($this->_ccid)) { if (CRM_PCP_BAO_PCP::displayName($this->_pcpId)) { $pcp_supporter_text = CRM_PCP_BAO_PCP::getPcpSupporterText($this->_pcpId, $this->_id, 'contribute'); - $this->assign('pcpSupporterText', $pcp_supporter_text); } $prms = ['id' => $this->_pcpId]; CRM_Core_DAO::commonRetrieve('CRM_PCP_DAO_PCP', $prms, $pcpInfo); @@ -416,6 +420,7 @@ public function buildQuickForm() { $this->addField('pcp_personal_note', ['entity' => 'ContributionSoft', 'context' => 'create', 'style' => 'height: 3em; width: 40em;']); } } + $this->assign('pcpSupporterText', $pcp_supporter_text ?? NULL); if (empty($this->_values['fee']) && empty($this->_ccid)) { throw new CRM_Core_Exception(ts('This page does not have any price fields configured or you may not have permission for them. Please contact the site administrator for more details.')); } @@ -464,6 +469,122 @@ public function buildQuickForm() { $this->addFormRule(['CRM_Contribute_Form_Contribution_Main', 'formRule'], $this); } + /** + * Build the price set form. + * + * @param CRM_Core_Form $form + * @param string|null $component + * + * @return void + * @throws \CRM_Core_Exception + */ + private function buildPriceSet(&$form, $component = NULL) { + $validPriceFieldIds = array_keys($this->getPriceFieldMetaData()); + $form->assign('priceSet', $form->_priceSet); + + // @todo - this hook wrangling can be done earlier if we set the form on $this->>order. + $feeBlock = &$form->_values['fee']; + // Call the buildAmount hook. + CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock); + + // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions + $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); + $checklifetime = FALSE; + foreach ($this->getPriceFieldMetaData() as $id => $field) { + if ($field['visibility_id:name'] === 'public' || + ($field['visibility_id:name'] === 'admin' && $adminFieldVisible) + ) { + $options = $field['options'] ?? NULL; + if ($this->_membershipContactID && $options) { + $contactsLifetimeMemberships = CRM_Member_BAO_Membership::getAllContactMembership($this->_membershipContactID, FALSE, TRUE); + $contactsLifetimeMembershipTypes = array_column($contactsLifetimeMemberships, 'membership_type_id'); + $memTypeIdsInPriceField = array_column($options, 'membership_type_id'); + $isCurrentMember = (bool) array_intersect($memTypeIdsInPriceField, $contactsLifetimeMembershipTypes); + $checklifetime = $checklifetime ?: $isCurrentMember; + } + + if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { + continue; + } + if (!CRM_Core_Permission::check('edit contributions')) { + foreach ($options as $key => $currentOption) { + if ($currentOption['visibility_id:name'] === 'admin') { + unset($options[$key]); + } + } + } + if (!empty($options)) { + $label = (!empty($this->_membershipBlock) && $field['name'] === 'contribution_amount') ? ts('Additional Contribution') : $field['label']; + $extra = []; + $fieldID = (int) $field['id']; + if ($fieldID === $this->getPriceFieldOtherID()) { + $extra = [ + 'onclick' => 'useAmountOther("price_' . $this->getPriceFieldMainID() . '");', + 'autocomplete' => 'off', + ]; + } + if ($fieldID === $this->getPriceFieldMainID()) { + $extra = [ + 'onclick' => 'clearAmountOther("price_' . $this->getPriceFieldOtherID() . '");', + ]; + } + + CRM_Price_BAO_PriceField::addQuickFormElement($form, + 'price_' . $fieldID, + $field['id'], + FALSE, + $field['is_required'] ?? FALSE, + $label, + $options, + [], + $extra + ); + } + } + } + $form->assign('hasExistingLifetimeMembership', $checklifetime); + } + + /** + * Get the idea of the other amount field if the form is configured to offer it. + * + * The other amount field is an alternative to the configured radio options, + * specific to this form. + * + * @return int|null + */ + private function getPriceFieldOtherID(): ?int { + if (!$this->isQuickConfig()) { + return NULL; + } + foreach ($this->order->getPriceFieldsMetadata() as $field) { + if ($field['name'] === 'other_amount') { + return (int) $field['id']; + } + } + return NULL; + } + + /** + * Get the idea of the other amount field if the form is configured to offer an other amount. + * + * The other amount field is an alternative to the configured radio options, + * specific to this form. + * + * @return int|null + */ + private function getPriceFieldMainID(): ?int { + if (!$this->isQuickConfig() || !$this->getPriceFieldOtherID()) { + return NULL; + } + foreach ($this->order->getPriceFieldsMetadata() as $field) { + if ($field['name'] !== 'other_amount') { + return (int) $field['id']; + } + } + return NULL; + } + /** * Build Membership Block in Contribution Pages. * @todo this was shared on CRM_Contribute_Form_ContributionBase but we are refactoring and simplifying for each @@ -476,7 +597,7 @@ public function buildQuickForm() { */ private function buildMembershipBlock() { $cid = $this->_membershipContactID; - $isTest = (bool) ($this->_action & CRM_Core_Action::PREVIEW); + $isTest = (bool) ($this->getAction() & CRM_Core_Action::PREVIEW); $separateMembershipPayment = FALSE; $this->addOptionalQuickFormElement('auto_renew'); if ($this->_membershipBlock) { @@ -491,7 +612,7 @@ private function buildMembershipBlock() { $separateMembershipPayment = $this->_membershipBlock['is_separate_payment'] ?? NULL; - foreach ($this->_priceSet['fields'] as $pField) { + foreach ($this->getPriceFieldMetaData() as $pField) { if (empty($pField['options'])) { continue; } @@ -567,7 +688,7 @@ private function buildMembershipBlock() { if ($membership["membership_type_id.duration_unit:name"] === 'lifetime') { unset($radio[$memType['id']]); unset($radioOptAttrs[$memType['id']]); - $this->assign('islifetime', TRUE); + $this->assign('hasExistingLifetimeMembership', TRUE); continue; } $this->assign('renewal_mode', TRUE); @@ -618,15 +739,14 @@ private function buildMembershipBlock() { /** * Build elements to collect information for recurring contributions. * - * - * @param CRM_Core_Form $form + * Previously shared function. */ - public static function buildRecur(&$form) { + private function buildRecur(): void { + $form = $this; $attributes = CRM_Core_DAO::getAttribute('CRM_Contribute_DAO_ContributionRecur'); - $className = get_class($form); - $form->assign('is_recur_interval', CRM_Utils_Array::value('is_recur_interval', $form->_values)); - $form->assign('is_recur_installments', CRM_Utils_Array::value('is_recur_installments', $form->_values)); + $form->assign('is_recur_interval', $this->getContributionPageValue('is_recur_interval')); + $form->assign('is_recur_installments', $this->getContributionPageValue('is_recur_installments')); $paymentObject = $form->getVar('_paymentObject'); if ($paymentObject) { $form->assign('recurringHelpText', $paymentObject->getText('contributionPageRecurringHelp', [ @@ -637,13 +757,6 @@ public static function buildRecur(&$form) { $frUnits = $form->_values['recur_frequency_unit'] ?? NULL; $frequencyUnits = CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, TRUE); - if (empty($frUnits) && - $className == 'CRM_Contribute_Form_Contribution' - ) { - $frUnits = implode(CRM_Core_DAO::VALUE_SEPARATOR, - CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, FALSE, NULL, 'value') - ); - } $unitVals = explode(CRM_Core_DAO::VALUE_SEPARATOR, $frUnits); @@ -664,7 +777,7 @@ public static function buildRecur(&$form) { if (count($unitVals) == 1) { $form->assign('one_frequency_unit', TRUE); $form->add('hidden', 'frequency_unit', $unitVals[0]); - if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + if (!empty($form->_values['is_recur_interval'])) { $unit = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($unitVals[0]); $form->assign('frequency_unit', $unit); } @@ -681,7 +794,7 @@ public static function buildRecur(&$form) { foreach ($unitVals as $key => $val) { if (array_key_exists($val, $frequencyUnits)) { $units[$val] = $frequencyUnits[$val]; - if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + if (!empty($form->_values['is_recur_interval'])) { $units[$val] = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($val); $unit = ts('Every'); } @@ -690,7 +803,7 @@ public static function buildRecur(&$form) { $frequencyUnit = &$form->add('select', 'frequency_unit', NULL, $units, FALSE, ['aria-label' => ts('Frequency Unit'), 'class' => 'crm-select2 eight']); } - if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + if (!empty($form->_values['is_recur_interval'])) { $form->add('text', 'frequency_interval', $unit, $attributes['frequency_interval'] + ['aria-label' => ts('Every'), 'class' => 'two']); $form->addRule('frequency_interval', ts('Frequency must be a whole number (EXAMPLE: Every 3 months).'), 'integer'); } @@ -716,7 +829,7 @@ public static function buildRecur(&$form) { */ public static function formRule($fields, $files, $self) { $errors = []; - $amount = self::computeAmount($fields, $self->_values); + $amount = $self->computeAmount($fields, $self->_values); if (!empty($fields['auto_renew']) && empty($fields['payment_processor_id'])) { $errors['auto_renew'] = ts('You cannot have auto-renewal on if you are paying later.'); } @@ -908,7 +1021,7 @@ public static function formRule($fields, $files, $self) { } if (isset($fields['selectProduct']) && - $fields['selectProduct'] != 'no_thanks' + $fields['selectProduct'] !== 'no_thanks' ) { $productDAO = new CRM_Contribute_DAO_Product(); $productDAO->id = $fields['selectProduct']; @@ -1028,7 +1141,7 @@ public static function formRule($fields, $files, $self) { * * @return int|mixed|null|string */ - public static function computeAmount($params, $formValues) { + private function computeAmount($params, $formValues) { $amount = 0; // First clean up the other amount field if present. if (isset($params['amount_other'])) { @@ -1131,13 +1244,13 @@ public function submit($params) { } } } - - if (!empty($this->_ccid) && !empty($this->_pendingAmount)) { - $params['amount'] = $this->_pendingAmount; + $balance = $this->getContributionBalance(); + if ($balance) { + $params['amount'] = $balance; } else { // from here on down, $params['amount'] holds a monetary value (or null) rather than an option ID - $params['amount'] = self::computeAmount($params, $this->_values); + $params['amount'] = $this->computeAmount($params, $this->_values); } $params['separate_amount'] = $params['amount']; @@ -1177,11 +1290,11 @@ public function submit($params) { $this->set('amount_level', CRM_Utils_Array::value('amount_level', $params)); } - $priceSetId = $params['priceSetId'] ?? NULL; + $priceSetID = $this->getPriceSetID(); if (!empty($this->_ccid)) { $this->set('lineItem', [$this->getPriceSetID() => $this->getExistingContributionLineItems()]); } - elseif ($priceSetId) { + elseif ($priceSetID) { $lineItem = []; if ($this->isQuickConfig()) { foreach ($this->_values['fee'] as $key => & $val) { @@ -1201,17 +1314,17 @@ public function submit($params) { } if ($this->_membershipBlock) { - $this->processAmountAndGetAutoRenew($this->_values['fee'], $params, $lineItem[$priceSetId], $priceSetId); + $this->processAmountAndGetAutoRenew($this->_values['fee'], $params, $lineItem[$priceSetID]); } else { - CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetId], $priceSetId); + CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetID], $priceSetID); } if ($proceFieldAmount) { - $lineItem[$params['priceSetId']][$fieldOption]['unit_price'] = $proceFieldAmount; - $lineItem[$params['priceSetId']][$fieldOption]['line_total'] = $proceFieldAmount; - if (isset($lineItem[$params['priceSetId']][$fieldOption]['tax_amount'])) { - $proceFieldAmount += $lineItem[$params['priceSetId']][$fieldOption]['tax_amount']; + $lineItem[$priceSetID][$fieldOption]['unit_price'] = $proceFieldAmount; + $lineItem[$priceSetID][$fieldOption]['line_total'] = $proceFieldAmount; + if (isset($lineItem[$priceSetID][$fieldOption]['tax_amount'])) { + $proceFieldAmount += $lineItem[$priceSetID][$fieldOption]['tax_amount']; } if (!$this->_membershipBlock['is_separate_payment']) { //require when separate membership not used @@ -1333,24 +1446,11 @@ public function assignFormVariablesByContributionID(): void { } } $this->assign('dummyTitle', $dummyTitle); - + $this->assign('pendingAmount', $this->getContributionBalance()); if (empty($this->getExistingContributionID())) { return; } - if (!$this->getContactID()) { - CRM_Core_Error::statusBounce(ts("Returning since there is no contact attached to this contribution id.")); - } - - $paymentBalance = CRM_Contribute_BAO_Contribution::getContributionBalance($this->_ccid); - //bounce if the contribution is not pending. - if ((float) $paymentBalance <= 0) { - CRM_Core_Error::statusBounce(ts("Returning since contribution has already been handled.")); - } - if (!empty($paymentBalance)) { - $this->_pendingAmount = $paymentBalance; - $this->assign('pendingAmount', $this->_pendingAmount); - } - + // @todo - all this stuff is likely obsolete. if ($taxAmount = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Contribution', $this->_ccid, 'tax_amount')) { $this->assign('taxAmount', $taxAmount); } @@ -1361,6 +1461,29 @@ public function assignFormVariablesByContributionID(): void { $this->assign('priceSetID', $this->getPriceSetID()); } + /** + * Get the balance amount if an existing contribution is being paid. + * + * @return float|null + * + * @throws \CRM_Core_Exception + */ + private function getContributionBalance(): ?float { + if (empty($this->getExistingContributionID())) { + return NULL; + } + if (!$this->getContactID()) { + CRM_Core_Error::statusBounce(ts('Returning since there is no contact attached to this contribution id.')); + } + + $paymentBalance = CRM_Contribute_BAO_Contribution::getContributionBalance($this->_ccid); + //bounce if the contribution is not pending. + if ((float) $paymentBalance <= 0) { + CRM_Core_Error::statusBounce(ts('Returning since contribution has already been handled.')); + } + return $paymentBalance; + } + /** * Function for unit tests on the postProcess function. * @@ -1382,7 +1505,7 @@ public function testSubmit($params) { * * @param array $params * - * @return mixed + * @return bool * @throws \CRM_Core_Exception */ protected function hasSeparateMembershipPaymentAmount($params) { @@ -1407,4 +1530,354 @@ protected function getCurrentPaymentProcessor(): ?int { return NULL; } + /** + * Add onbehalf/honoree profile fields and native module fields. + * + * @throws \CRM_Core_Exception + */ + private function buildComponentForm(): void { + + foreach (['soft_credit', 'on_behalf'] as $module) { + if ($module === 'soft_credit') { + $this->addSoftCreditFields(); + } + else { + $this->addOnBehalfFields(); + } + } + + } + + /** + * Add soft credit fields. + * + * @throws \CRM_Core_Exception + */ + private function addSoftCreditFields(): void { + if (!empty($this->_values['honoree_profile_id'])) { + if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $this->_values['honoree_profile_id'], 'is_active')) { + CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the selected honoree profile is either disabled or not found.')); + } + + $profileContactType = CRM_Core_BAO_UFGroup::getContactType($this->_values['honoree_profile_id']); + $requiredProfileFields = [ + 'Individual' => ['first_name', 'last_name'], + 'Organization' => ['organization_name', 'email'], + 'Household' => ['household_name', 'email'], + ]; + $validProfile = CRM_Core_BAO_UFGroup::checkValidProfile($this->_values['honoree_profile_id'], $requiredProfileFields[$profileContactType]); + if (!$validProfile) { + CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the required fields of the selected honoree profile are disabled or doesn\'t exist.')); + } + + $softCreditTypes = CRM_Core_OptionGroup::values("soft_credit_type", FALSE); + + // radio button for Honor Type + foreach ($this->_values['soft_credit_types'] as $value) { + $honorTypes[$value] = $softCreditTypes[$value]; + } + $this->addRadio('soft_credit_type_id', NULL, $honorTypes, ['allowClear' => TRUE]); + + $honoreeProfileFields = CRM_Core_BAO_UFGroup::getFields( + $this->_values['honoree_profile_id'], FALSE, + NULL, NULL, + NULL, FALSE, + NULL, TRUE, + NULL, CRM_Core_Permission::CREATE + ); + + // add the form elements + foreach ($honoreeProfileFields as $name => $field) { + // If soft credit type is not chosen then make omit requiredness from honoree profile fields + if (count($this->_submitValues) && + empty($this->_submitValues['soft_credit_type_id']) && + !empty($field['is_required']) + ) { + $field['is_required'] = FALSE; + } + CRM_Core_BAO_UFGroup::buildProfile($this, $field, CRM_Profile_Form::MODE_CREATE, NULL, FALSE, FALSE, NULL, 'honor'); + } + } + $this->assign('honoreeProfileFields', $honoreeProfileFields ?? NULL); + $this->assign('honor_block_title', $this->_values['honor_block_title'] ?? NULL); + $this->assign('honor_block_text', $this->_values['honor_block_text'] ?? NULL); + } + + /** + * Add the on behalf fields. + * + * @throws \CRM_Core_Exception + */ + private function addOnBehalfFields(): void { + $contactID = $this->getContactID(); + if (!empty($this->_values['onbehalf_profile_id'])) { + + if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $this->_values['onbehalf_profile_id'], 'is_active')) { + CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of an organization and the selected onbehalf profile is either disabled or not found.')); + } + + $member = CRM_Member_BAO_Membership::getMembershipBlock($this->getContributionPageID()); + if (empty($member['is_active'])) { + $msg = ts('Mixed profile not allowed for on behalf of registration/sign up.'); + $onBehalfProfile = CRM_Core_BAO_UFGroup::profileGroups($this->_values['onbehalf_profile_id']); + foreach ( + [ + 'Individual', + 'Organization', + 'Household', + ] as $contactType + ) { + if (in_array($contactType, $onBehalfProfile) && + (in_array('Membership', $onBehalfProfile) || + in_array('Contribution', $onBehalfProfile) + ) + ) { + CRM_Core_Error::statusBounce($msg); + } + } + } + + if ($contactID) { + // retrieve all permissioned organizations of contact $contactID + $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($contactID, NULL, NULL, 'Organization'); + + if (count($organizations)) { + // Related org url - pass checksum if needed + $args = [ + 'ufID' => $this->_values['onbehalf_profile_id'], + 'cid' => '', + ]; + if (!empty($_GET['cs'])) { + $args = [ + 'ufID' => $this->_values['onbehalf_profile_id'], + 'uid' => $this->_contactID, + 'cs' => $_GET['cs'], + 'cid' => '', + ]; + } + $locDataURL = CRM_Utils_System::url('civicrm/ajax/permlocation', $args, FALSE, NULL, FALSE); + } + if (count($organizations) > 0) { + $this->add('select', 'onbehalfof_id', '', CRM_Utils_Array::collect('name', $organizations)); + + $orgOptions = [ + 0 => ts('Select an existing organization'), + 1 => ts('Enter a new organization'), + ]; + $this->addRadio('org_option', ts('options'), $orgOptions); + $this->setDefaults(['org_option' => 0]); + } + } + + if (!empty($this->_values['is_for_organization'])) { + if ((int) $this->_values['is_for_organization'] !== 2) { + $this->addElement('checkbox', 'is_for_organization', + $this->_values['for_organization'], + NULL + ); + } + } + + $profileFields = CRM_Core_BAO_UFGroup::getFields( + $this->_values['onbehalf_profile_id'], + FALSE, CRM_Core_Action::VIEW, NULL, + NULL, FALSE, NULL, FALSE, NULL, + CRM_Core_Permission::CREATE, NULL + ); + + $fieldTypes = ['Contact', 'Organization']; + if (!empty($this->_membershipBlock)) { + $fieldTypes = array_merge($fieldTypes, ['Membership']); + } + $contactSubType = CRM_Contact_BAO_ContactType::subTypes('Organization'); + $fieldTypes = array_merge($fieldTypes, $contactSubType); + + foreach ($profileFields as $name => $field) { + if (in_array($field['field_type'], $fieldTypes)) { + [$prefixName, $index] = CRM_Utils_System::explode('-', $name, 2); + if (in_array($prefixName, ['organization_name', 'email']) && empty($field['is_required'])) { + $field['is_required'] = 1; + } + if (count($this->_submitValues) && + empty($this->_submitValues['is_for_organization']) && + $this->_values['is_for_organization'] == 1 && + !empty($field['is_required']) + ) { + $field['is_required'] = FALSE; + } + CRM_Core_BAO_UFGroup::buildProfile($this, $field, NULL, NULL, FALSE, 'onbehalf', NULL, 'onbehalf'); + } + } + } + $this->assign('onBehalfRequired', (int) ($this->_values['is_for_organization'] ?? 0) === 2); + $this->assign('locDataURL', $locDataURL ?? NULL); + $this->assign('onBehalfOfFields', $profileFields ?? NULL); + $this->assign('fieldSetTitle', empty($this->_values['onbehalf_profile_id']) ? NULL : CRM_Core_BAO_UFGroup::getFrontEndTitle($this->_values['onbehalf_profile_id'])); + // @todo - this is horrible - we are accessing a value in the POST rather than via QF. _submitValues is 'raw' + $this->assign('submittedOnBehalf', $this->_submitValues['onbehalfof_id'] ?? NULL); + $this->assign('submittedOnBehalfInfo', empty($this->_submitValues['onbehalf']) ? NULL : json_encode(str_replace('"', '\"', $this->_submitValues['onbehalf']), JSON_HEX_APOS)); + } + + /** + * Build Pledge Block in Contribution Pages. + * + * @throws \CRM_Core_Exception + */ + private function buildPledgeBlock() { + //build pledge payment fields. + if (!empty($this->_values['pledge_id'])) { + //get all payments required details. + $allPayments = []; + $returnProperties = [ + 'status_id', + 'scheduled_date', + 'scheduled_amount', + 'currency', + ]; + CRM_Core_DAO::commonRetrieveAll('CRM_Pledge_DAO_PledgePayment', 'pledge_id', + $this->_values['pledge_id'], $allPayments, $returnProperties + ); + // get all status + $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); + + $nextPayment = []; + $isNextPayment = FALSE; + $overduePayments = []; + foreach ($allPayments as $payID => $value) { + if ($allStatus[$value['status_id']] == 'Overdue') { + $overduePayments[$payID] = [ + 'id' => $payID, + 'scheduled_amount' => CRM_Utils_Rule::cleanMoney($value['scheduled_amount']), + 'scheduled_amount_currency' => $value['currency'], + 'scheduled_date' => CRM_Utils_Date::customFormat($value['scheduled_date'], + '%B %d' + ), + ]; + } + elseif (!$isNextPayment && + $allStatus[$value['status_id']] == 'Pending' + ) { + // get the next payment. + $nextPayment = [ + 'id' => $payID, + 'scheduled_amount' => CRM_Utils_Rule::cleanMoney($value['scheduled_amount']), + 'scheduled_amount_currency' => $value['currency'], + 'scheduled_date' => CRM_Utils_Date::customFormat($value['scheduled_date'], + '%B %d' + ), + ]; + $isNextPayment = TRUE; + } + } + + // build check box array for payments. + $payments = []; + if (!empty($overduePayments)) { + foreach ($overduePayments as $id => $payment) { + $label = ts("%1 - due on %2 (overdue)", [ + 1 => CRM_Utils_Money::format(CRM_Utils_Array::value('scheduled_amount', $payment), CRM_Utils_Array::value('scheduled_amount_currency', $payment)), + 2 => $payment['scheduled_date'] ?? NULL, + ]); + $paymentID = $payment['id'] ?? NULL; + $payments[] = $this->createElement('checkbox', $paymentID, NULL, $label, ['amount' => CRM_Utils_Array::value('scheduled_amount', $payment)]); + } + } + + if (!empty($nextPayment)) { + $label = ts("%1 - due on %2", [ + 1 => CRM_Utils_Money::format(CRM_Utils_Array::value('scheduled_amount', $nextPayment), CRM_Utils_Array::value('scheduled_amount_currency', $nextPayment)), + 2 => $nextPayment['scheduled_date'] ?? NULL, + ]); + $paymentID = $nextPayment['id'] ?? NULL; + $payments[] = $this->createElement('checkbox', $paymentID, NULL, $label, ['amount' => CRM_Utils_Array::value('scheduled_amount', $nextPayment)]); + } + // give error if empty or build form for payment. + if (empty($payments)) { + throw new CRM_Core_Exception(ts('Oops. It looks like there is no valid payment status for online payment.')); + } + $this->addGroup($payments, 'pledge_amount', ts('Make Pledge Payment(s):'), '
'); + } + else { + $pledgeBlock = []; + + $dao = new CRM_Pledge_DAO_PledgeBlock(); + $dao->entity_table = 'civicrm_contribution_page'; + $dao->entity_id = $pageID; + if ($dao->find(TRUE)) { + CRM_Core_DAO::storeValues($dao, $pledgeBlock); + } + // build form for pledge creation. + $pledgeOptions = [ + '0' => ts('I want to make a one-time contribution'), + '1' => ts('I pledge to contribute this amount every'), + ]; + $this->addRadio('is_pledge', ts('Pledge Frequency Interval'), $pledgeOptions, + NULL, ['
'] + ); + $this->addElement('text', 'pledge_installments', ts('Installments'), ['size' => 3, 'aria-label' => ts('Installments')]); + + if (!empty($pledgeBlock['is_pledge_interval'])) { + $this->addElement('text', 'pledge_frequency_interval', NULL, ['size' => 3, 'aria-label' => ts('Frequency Intervals')]); + } + else { + $this->add('hidden', 'pledge_frequency_interval', 1); + } + // Frequency unit drop-down label suffixes switch from *ly to *(s) + $freqUnitVals = explode(CRM_Core_DAO::VALUE_SEPARATOR, $pledgeBlock['pledge_frequency_unit']); + $freqUnits = []; + $frequencyUnits = CRM_Core_OptionGroup::values('recur_frequency_units'); + foreach ($freqUnitVals as $key => $val) { + if (array_key_exists($val, $frequencyUnits)) { + $freqUnits[$val] = !empty($pledgeBlock['is_pledge_interval']) ? "{$frequencyUnits[$val]}(s)" : $frequencyUnits[$val]; + } + } + $this->addElement('select', 'pledge_frequency_unit', NULL, $freqUnits, ['aria-label' => ts('Frequency Units')]); + // CRM-18854 + if (!empty($pledgeBlock['is_pledge_start_date_visible'])) { + if (!empty($pledgeBlock['pledge_start_date'])) { + $defaults = []; + $date = (array) json_decode($pledgeBlock['pledge_start_date']); + foreach ($date as $field => $value) { + switch ($field) { + case 'contribution_date': + $this->add('datepicker', 'start_date', ts('First installment payment'), [], FALSE, ['time' => FALSE]); + $paymentDate = $value = date('Y-m-d'); + $defaults['start_date'] = $value; + $this->assign('is_date', TRUE); + break; + + case 'calendar_date': + $this->add('datepicker', 'start_date', ts('First installment payment'), [], FALSE, ['time' => FALSE]); + $defaults['start_date'] = $value; + $this->assign('is_date', TRUE); + $paymentDate = $value; + break; + + case 'calendar_month': + $month = CRM_Utils_Date::getCalendarDayOfMonth(); + $this->add('select', 'start_date', ts('Day of month installments paid'), $month); + $paymentDate = CRM_Pledge_BAO_Pledge::getPaymentDate($value); + $defaults['start_date'] = $paymentDate; + break; + + default: + break; + + } + $this->setDefaults($defaults); + $this->assign('start_date_display', $paymentDate); + $this->assign('start_date_editable', FALSE); + if (!empty($pledgeBlock['is_pledge_start_date_editable'])) { + $this->assign('start_date_editable', TRUE); + if ($field == 'calendar_month') { + $this->assign('is_date', FALSE); + $this->setDefaults(['start_date' => $value]); + } + } + } + } + } + } + } + } diff --git a/CRM/Contribute/Form/ContributionBase.php b/CRM/Contribute/Form/ContributionBase.php index ac9a967edbc3..46fb52bf9d64 100644 --- a/CRM/Contribute/Form/ContributionBase.php +++ b/CRM/Contribute/Form/ContributionBase.php @@ -15,11 +15,14 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ +use Civi\Api4\PriceSet; + /** * This class generates form components for processing a contribution. */ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { use CRM_Financial_Form_FrontEndPaymentFormTrait; + use CRM_Contribute_Form_ContributeFormTrait; /** * The id of the contribution page that we are processing. @@ -114,6 +117,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { * Pcp id * * @var int + * + * @internal use getPcpID(). */ public $_pcpId; @@ -268,11 +273,41 @@ public function getPriceSetID(): ?int { else { $this->_priceSetId = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->_id); } + if (!$this->_priceSetId) { + if ($this->isShowMembershipBlock()) { + $this->_priceSetId = PriceSet::get(FALSE) + ->addWhere('name', '=', 'default_membership_type_amount') + ->execute() + ->first()['id']; + } + } $this->set('priceSetId', $this->_priceSetId); } return $this->_priceSetId ?: NULL; } + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @return int + */ + public function getContributionPageID(): int { + if (!$this->_id) { + /** @noinspection PhpUnhandledExceptionInspection */ + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); + if (!$this->_id) { + // seems like the session is corrupted and/or we lost the id trail + // lets just bump this to a regular session error and redirect user to main page + $this->controller->invalidKeyRedirect(); + } + } + return $this->_id; + } + /** * Set variables up before form is built. * @@ -282,13 +317,8 @@ public function getPriceSetID(): ?int { public function preProcess() { // current contribution page id - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); + $this->getContributionPageID(); $this->_ccid = CRM_Utils_Request::retrieve('ccid', 'Positive', $this); - if (!$this->_id) { - // seems like the session is corrupted and/or we lost the id trail - // lets just bump this to a regular session error and redirect user to main page - $this->controller->invalidKeyRedirect(); - } $this->_emailExists = $this->get('emailExists'); $this->_contactID = $this->_membershipContactID = $this->getContactID(); @@ -354,6 +384,7 @@ public function preProcess() { if ($this->getPriceSetID()) { $this->order = new CRM_Financial_BAO_Order(); $this->order->setPriceSetID($this->getPriceSetID()); + $this->order->setIsExcludeExpiredFields(TRUE); } else { CRM_Core_Error::deprecatedFunctionWarning('forms require a price set ID'); @@ -366,11 +397,6 @@ public function preProcess() { $this->_fields = []; CRM_Contribute_BAO_ContributionPage::setValues($this->_id, $this->_values); - if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() - && !CRM_Core_Permission::check('add contributions of type ' . CRM_Contribute_PseudoConstant::financialType($this->_values['financial_type_id'])) - ) { - CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.')); - } if (empty($this->_values['is_active'])) { throw new CRM_Contribute_Exception_InactiveContributionPageException(ts('The page you requested is currently unavailable.'), $this->_id); } @@ -455,10 +481,9 @@ public function preProcess() { $this->set('membershipBlock', $this->getMembershipBlock()); // Handle PCP - $pcpId = CRM_Utils_Request::retrieve('pcpId', 'Positive', $this); - if ($pcpId) { + $pcpId = $this->getPcpID(); + if ($this->getPcpID()) { $pcp = CRM_PCP_BAO_PCP::handlePcp($pcpId, 'contribute', $this->_values); - $this->_pcpId = $pcp['pcpId']; $this->_pcpBlock = $pcp['pcpBlock']; $this->_pcpInfo = $pcp['pcpInfo']; } @@ -473,10 +498,7 @@ public function preProcess() { $this->assign('linkText', $linkText); } - //set pledge block if block id is set - if (!empty($this->_values['pledge_block_id'])) { - $this->assign('pledgeBlock', TRUE); - } + $this->assign('pledgeBlock', !empty($this->_values['pledge_block_id'])); // @todo - move this check to `getMembershipBlock` if (!$this->isFormSupportsNonMembershipContributions() && @@ -490,7 +512,6 @@ public function preProcess() { $this->set('amount_block_is_active', $this->isFormSupportsNonMembershipContributions()); $this->_contributeMode = $this->get('contributeMode'); - $this->assign('contributeMode', $this->_contributeMode); //assigning is_monetary and is_email_receipt to template $this->assign('is_monetary', $this->_values['is_monetary']); @@ -499,7 +520,7 @@ public function preProcess() { //assign cancelSubscription URL to templates $this->assign('cancelSubscriptionUrl', - CRM_Utils_Array::value('cancelSubscriptionUrl', $this->_values) + $this->_values['cancelSubscriptionUrl'] ?? NULL ); $title = $this->_values['frontend_title']; @@ -543,19 +564,45 @@ private function initSet($form) { if ($priceSetId) { if ($form->_action & CRM_Core_Action::UPDATE) { $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_id, 'contribution'); - $required = FALSE; - } - else { - $required = TRUE; } - - $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId, $required); - $form->_priceSet = $priceSet[$priceSetId] ?? NULL; - $form->_values['fee'] = $form->_priceSet['fields'] ?? NULL; + $form->_priceSet = $this->order->getPriceSetMetadata(); + $this->setPriceFieldMetaData($this->order->getPriceFieldsMetadata()); $form->set('priceSet', $form->_priceSet); } } + /** + * Set price field metadata. + * + * @param array $metadata + */ + public function setPriceFieldMetaData(array $metadata): void { + $this->_values['fee'] = $this->_priceSet['fields'] = $metadata; + } + + /** + * Get price field metadata. + * + * The returned value is an array of arrays where each array + * is an id-keyed price field and an 'options' key has been added to that + * arry for any options. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @return array + */ + public function getPriceFieldMetaData(): array { + if (!empty($this->_values['fee'])) { + return $this->_values['fee']; + } + if (!empty($this->_priceSet['fields'])) { + return $this->_priceSet['fields']; + } + return $this->order->getPriceFieldsMetadata(); + } + /** * Set the default values. */ @@ -791,8 +838,6 @@ public function buildCustom($id, $name, $viewOnly = FALSE, $profileContactType = } } - $this->assign($name, $fields); - if ($profileContactType && count($viewOnlyFileValues[$profileContactType])) { $this->assign('viewOnlyPrefixFileValues', $viewOnlyFileValues); } @@ -801,6 +846,7 @@ public function buildCustom($id, $name, $viewOnly = FALSE, $profileContactType = } } } + $this->assign($name, $fields ?? NULL); } /** @@ -860,195 +906,6 @@ public function assignPaymentFields() { } } - /** - * Add onbehalf/honoree profile fields and native module fields. - * - * @param int $id - * @param CRM_Core_Form $form - * - * @throws \CRM_Core_Exception - */ - public function buildComponentForm($id, $form): void { - if (empty($id)) { - return; - } - - $contactID = $this->getContactID(); - - foreach (['soft_credit', 'on_behalf'] as $module) { - if ($module === 'soft_credit') { - if (empty($form->_values['honoree_profile_id'])) { - continue; - } - - if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $form->_values['honoree_profile_id'], 'is_active')) { - CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the selected honoree profile is either disabled or not found.')); - } - - $profileContactType = CRM_Core_BAO_UFGroup::getContactType($form->_values['honoree_profile_id']); - $requiredProfileFields = [ - 'Individual' => ['first_name', 'last_name'], - 'Organization' => ['organization_name', 'email'], - 'Household' => ['household_name', 'email'], - ]; - $validProfile = CRM_Core_BAO_UFGroup::checkValidProfile($form->_values['honoree_profile_id'], $requiredProfileFields[$profileContactType]); - if (!$validProfile) { - CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the required fields of the selected honoree profile are disabled or doesn\'t exist.')); - } - - foreach (['honor_block_title', 'honor_block_text'] as $name) { - $form->assign($name, $form->_values[$name]); - } - - $softCreditTypes = CRM_Core_OptionGroup::values("soft_credit_type", FALSE); - - // radio button for Honor Type - foreach ($form->_values['soft_credit_types'] as $value) { - $honorTypes[$value] = $softCreditTypes[$value]; - } - $form->addRadio('soft_credit_type_id', NULL, $honorTypes, ['allowClear' => TRUE]); - - $honoreeProfileFields = CRM_Core_BAO_UFGroup::getFields( - $this->_values['honoree_profile_id'], FALSE, - NULL, NULL, - NULL, FALSE, - NULL, TRUE, - NULL, CRM_Core_Permission::CREATE - ); - $form->assign('honoreeProfileFields', $honoreeProfileFields); - - // add the form elements - foreach ($honoreeProfileFields as $name => $field) { - // If soft credit type is not chosen then make omit requiredness from honoree profile fields - if (count($form->_submitValues) && - empty($form->_submitValues['soft_credit_type_id']) && - !empty($field['is_required']) - ) { - $field['is_required'] = FALSE; - } - CRM_Core_BAO_UFGroup::buildProfile($form, $field, CRM_Profile_Form::MODE_CREATE, NULL, FALSE, FALSE, NULL, 'honor'); - } - } - else { - if (empty($form->_values['onbehalf_profile_id'])) { - continue; - } - - if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $form->_values['onbehalf_profile_id'], 'is_active')) { - CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of an organization and the selected onbehalf profile is either disabled or not found.')); - } - - $member = CRM_Member_BAO_Membership::getMembershipBlock($form->_id); - if (empty($member['is_active'])) { - $msg = ts('Mixed profile not allowed for on behalf of registration/sign up.'); - $onBehalfProfile = CRM_Core_BAO_UFGroup::profileGroups($form->_values['onbehalf_profile_id']); - foreach ( - [ - 'Individual', - 'Organization', - 'Household', - ] as $contactType - ) { - if (in_array($contactType, $onBehalfProfile) && - (in_array('Membership', $onBehalfProfile) || - in_array('Contribution', $onBehalfProfile) - ) - ) { - CRM_Core_Error::statusBounce($msg); - } - } - } - - if ($contactID) { - // retrieve all permissioned organizations of contact $contactID - $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($contactID, NULL, NULL, 'Organization'); - - if (count($organizations)) { - // Related org url - pass checksum if needed - $args = [ - 'ufID' => $form->_values['onbehalf_profile_id'], - 'cid' => '', - ]; - if (!empty($_GET['cs'])) { - $args = [ - 'ufID' => $form->_values['onbehalf_profile_id'], - 'uid' => $this->_contactID, - 'cs' => $_GET['cs'], - 'cid' => '', - ]; - } - $locDataURL = CRM_Utils_System::url('civicrm/ajax/permlocation', $args, FALSE, NULL, FALSE); - $form->assign('locDataURL', $locDataURL); - } - if (count($organizations) > 0) { - $form->add('select', 'onbehalfof_id', '', CRM_Utils_Array::collect('name', $organizations)); - - $orgOptions = [ - 0 => ts('Select an existing organization'), - 1 => ts('Enter a new organization'), - ]; - $form->addRadio('org_option', ts('options'), $orgOptions); - $form->setDefaults(['org_option' => 0]); - } - } - - $form->assign('fieldSetTitle', CRM_Core_BAO_UFGroup::getFrontEndTitle($form->_values['onbehalf_profile_id'])); - - if (!empty($form->_values['is_for_organization'])) { - if ($form->_values['is_for_organization'] == 2) { - $form->assign('onBehalfRequired', TRUE); - } - else { - $form->addElement('checkbox', 'is_for_organization', - $form->_values['for_organization'], - NULL - ); - } - } - - $profileFields = CRM_Core_BAO_UFGroup::getFields( - $form->_values['onbehalf_profile_id'], - FALSE, CRM_Core_Action::VIEW, NULL, - NULL, FALSE, NULL, FALSE, NULL, - CRM_Core_Permission::CREATE, NULL - ); - - $form->assign('onBehalfOfFields', $profileFields); - if (!empty($form->_submitValues['onbehalf'])) { - if (!empty($form->_submitValues['onbehalfof_id'])) { - $form->assign('submittedOnBehalf', $form->_submitValues['onbehalfof_id']); - } - $form->assign('submittedOnBehalfInfo', json_encode(str_replace('"', '\"', $form->_submitValues['onbehalf']), JSON_HEX_APOS)); - } - - $fieldTypes = ['Contact', 'Organization']; - if (!empty($form->_membershipBlock)) { - $fieldTypes = array_merge($fieldTypes, ['Membership']); - } - $contactSubType = CRM_Contact_BAO_ContactType::subTypes('Organization'); - $fieldTypes = array_merge($fieldTypes, $contactSubType); - - foreach ($profileFields as $name => $field) { - if (in_array($field['field_type'], $fieldTypes)) { - [$prefixName, $index] = CRM_Utils_System::explode('-', $name, 2); - if (in_array($prefixName, ['organization_name', 'email']) && empty($field['is_required'])) { - $field['is_required'] = 1; - } - if (count($form->_submitValues) && - empty($form->_submitValues['is_for_organization']) && - $form->_values['is_for_organization'] == 1 && - !empty($field['is_required']) - ) { - $field['is_required'] = FALSE; - } - CRM_Core_BAO_UFGroup::buildProfile($form, $field, NULL, NULL, FALSE, 'onbehalf', NULL, 'onbehalf'); - } - } - } - } - - } - /** * Check template file exists. * @@ -1245,10 +1102,9 @@ protected function getMainContributionAmount($params) { * Params reflecting form input e.g with fields 'price_5' => 7, 'price_8' => array(7, 8) * @param $lineItems * Line item array to be altered. - * @param int $priceSetID */ - public function processAmountAndGetAutoRenew($fields, &$params, &$lineItems, $priceSetID = NULL) { - CRM_Price_BAO_PriceSet::processAmount($fields, $params, $lineItems, $priceSetID); + public function processAmountAndGetAutoRenew($fields, &$params, &$lineItems) { + CRM_Price_BAO_PriceSet::processAmount($fields, $params, $lineItems, $this->getPriceSetID()); $autoRenew = []; $autoRenew[0] = $autoRenew[1] = $autoRenew[2] = 0; foreach ($lineItems as $lineItem) { @@ -1397,4 +1253,37 @@ protected function getExistingContributionLineItems(): array { return $lineItems; } + /** + * Get the PCP ID being contributed to. + * + * @return int|null + */ + protected function getPcpID(): ?int { + if ($this->_pcpId === NULL) { + $this->_pcpId = CRM_Utils_Request::retrieve('pcpId', 'Positive', $this); + } + return $this->_pcpId ? (int) $this->_pcpId : NULL; + } + + /** + * Get the selected Contribution ID. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionID(): ?int { + if ($this->getExistingContributionID()) { + return $this->getExistingContributionID(); + } + if (property_exists($this, '_contributionID')) { + // Available on Confirm form (which is tested), so this avoids + // accessing that directly & will work for ThankYou in time. + return $this->_contributionID; + } + return NULL; + } + } diff --git a/CRM/Contribute/Form/ContributionCharts.php b/CRM/Contribute/Form/ContributionCharts.php index 5b2005f74641..666546e0ca81 100644 --- a/CRM/Contribute/Form/ContributionCharts.php +++ b/CRM/Contribute/Form/ContributionCharts.php @@ -97,7 +97,7 @@ public function postProcess() { $abbrMonthNames = CRM_Utils_Date::getAbbrMonthNames(); foreach ($abbrMonthNames as $monthKey => $monthName) { - $val = CRM_Utils_Array::value($monthKey, $chartInfoMonthly['By Month'], 0); + $val = $chartInfoMonthly['By Month'][$monthKey] ?? 0; // don't include zero value month. if (!$val && ($chartType != 'bvg')) { diff --git a/CRM/Contribute/Form/ContributionPage.php b/CRM/Contribute/Form/ContributionPage.php index f09086dfd020..3b8f5a1d6fc0 100644 --- a/CRM/Contribute/Form/ContributionPage.php +++ b/CRM/Contribute/Form/ContributionPage.php @@ -34,13 +34,6 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { */ protected $_pledgeBlockID; - /** - * Are we in single form mode or wizard mode? - * - * @var bool - */ - protected $_single; - /** * Is this the first page? * @@ -48,19 +41,12 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { */ protected $_first = FALSE; - /** - * Is this the last page? - * - * @var bool - */ - protected $_last = FALSE; - /** * Store price set id. * * @var int */ - protected $_priceSetID = NULL; + protected $_priceSetID; protected $_values; @@ -82,11 +68,7 @@ public function getDefaultContext() { * Set variables up before form is built. */ public function preProcess() { - // current contribution page id - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', - $this, FALSE, NULL, 'REQUEST' - ); - $this->assign('contributionPageID', $this->_id); + $this->assign('contributionPageID', $this->getContributionPageID()); // get the requested action $this->_action = CRM_Utils_Request::retrieve('action', 'String', @@ -97,16 +79,9 @@ public function preProcess() { // setting title and 3rd level breadcrumb for html page if contrib page exists if ($this->_id) { $title = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_ContributionPage', $this->_id, 'title'); - - if ($this->_action == CRM_Core_Action::UPDATE) { - $this->_single = TRUE; - } } - // CRM-16776 - show edit/copy/create buttons on Profiles Tab if user has required permission. - if (CRM_Core_Permission::check('administer CiviCRM')) { - $this->assign('perm', TRUE); - } + $this->assign('perm', (bool) CRM_Core_Permission::check('administer CiviCRM')); // set up tabs CRM_Contribute_Form_ContributionPage_TabHeader::build($this); @@ -166,57 +141,18 @@ public function buildQuickForm() { $this->addElement('hidden', 'cancelURL', $this->_cancelURL); } - if ($this->_single) { - $buttons = [ - [ - 'type' => 'next', - 'name' => ts('Save'), - 'spacing' => '         ', - 'isDefault' => TRUE, - ], - [ - 'type' => 'upload', - 'name' => ts('Save and Done'), - 'spacing' => '         ', - 'subName' => 'done', - ], - ]; - if (!$this->_last) { - $buttons[] = [ - 'type' => 'submit', - 'name' => ts('Save and Next'), - 'spacing' => '                 ', - 'subName' => 'savenext', - ]; - } - $buttons[] = [ - 'type' => 'cancel', - 'name' => ts('Cancel'), - ]; - $this->addButtons($buttons); - } - else { - $buttons = []; - if (!$this->_first) { - $buttons[] = [ - 'type' => 'back', - 'name' => ts('Previous'), - 'spacing' => '     ', - ]; - } - $buttons[] = [ + $buttons = [ + [ 'type' => 'next', - 'name' => ts('Continue'), - 'spacing' => '         ', + 'name' => ts('Save'), 'isDefault' => TRUE, - ]; - $buttons[] = [ + ], + [ 'type' => 'cancel', 'name' => ts('Cancel'), - ]; - - $this->addButtons($buttons); - } + ], + ]; + $this->addButtons($buttons); $session->replaceUserContext($this->_cancelURL); @@ -315,10 +251,8 @@ public function setDefaultValues() { // get price set of type contributions //this is the value for stored in db if price set extends contribution - $usedFor = 2; - $this->_priceSetID = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->_id, $usedFor, 1); - if ($this->_priceSetID) { - $defaults['price_set_id'] = $this->_priceSetID; + if ($this->getPriceSetID()) { + $defaults['price_set_id'] = $this->getPriceSetID(); } } else { @@ -463,4 +397,36 @@ public function getTemplateFileName() { } } + /** + * Get the price set ID for the event. + * + * @return int|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + */ + public function getContributionPageID(): ?int { + if (!$this->_id) { + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); + } + return $this->_id ? (int) $this->_id : NULL; + } + + /** + * Get the price set ID for the contribution page. + * + * @return int|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + */ + public function getPriceSetID(): ?int { + if (!$this->_priceSetID && $this->getContributionPageID()) { + $this->_priceSetID = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->getContributionPageID()); + } + return $this->_priceSetID ? (int) $this->_priceSetID : NULL; + } + } diff --git a/CRM/Contribute/Form/ContributionPage/Amount.php b/CRM/Contribute/Form/ContributionPage/Amount.php index 910d57e1a9e0..03df84064ade 100644 --- a/CRM/Contribute/Form/ContributionPage/Amount.php +++ b/CRM/Contribute/Form/ContributionPage/Amount.php @@ -98,9 +98,7 @@ public function buildQuickForm() { if (count($recurringPaymentProcessor)) { $this->assign('recurringPaymentProcessor', $recurringPaymentProcessor); } - if (count($futurePaymentProcessor)) { - $this->assign('futurePaymentProcessor', $futurePaymentProcessor); - } + $this->assign('futurePaymentProcessor', json_encode($futurePaymentProcessor ?? [], TRUE)); if (count($paymentProcessor)) { $this->assign('paymentProcessor', $paymentProcessor); } @@ -144,7 +142,7 @@ public function buildQuickForm() { else { $this->assign('price', TRUE); } - + $this->assign('isQuick', $this->isQuickConfig()); $this->addSelect('price_set_id', [ 'entity' => 'PriceSet', 'option_url' => 'civicrm/admin/price', @@ -208,12 +206,10 @@ public function setDefaultValues() { if (empty($defaults['pay_later_text'])) { $defaults['pay_later_text'] = ts('I will send payment by check'); } - if (!empty($defaults['amount_block_is_active'])) { if ($priceSetId = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->_id, NULL)) { - if ($isQuick = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config')) { - $this->assign('isQuick', $isQuick); + if ($this->isQuickConfig()) { //$priceField = CRM_Core_DAO::getFieldValue( 'CRM_Price_DAO_PriceField', $priceSetId, 'id', 'price_set_id' ); $options = $pFIDs = []; $priceFieldParams = ['price_set_id' => $priceSetId]; @@ -447,7 +443,7 @@ public function postProcess() { if (array_key_exists(CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessor', 'AuthNet', 'id', 'payment_processor_type_id' ), - CRM_Utils_Array::value('payment_processor', $params) + ($params['payment_processor'] ?? NULL) )) { CRM_Core_Session::setStatus(ts(' Please note that the Authorize.net payment processor only allows recurring contributions and auto-renew memberships with payment intervals from 7-365 days or 1-12 months (i.e. not greater than 1 year).'), '', 'alert'); } @@ -501,8 +497,8 @@ public function postProcess() { $params['recur_frequency_unit'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, array_keys($params['recur_frequency_unit']) ); - $params['is_recur_interval'] = CRM_Utils_Array::value('is_recur_interval', $params, FALSE); - $params['is_recur_installments'] = CRM_Utils_Array::value('is_recur_installments', $params, FALSE); + $params['is_recur_interval'] = $params['is_recur_interval'] ?? FALSE; + $params['is_recur_installments'] = $params['is_recur_installments'] ?? FALSE; } if (!empty($params['adjust_recur_start_date'])) { @@ -818,7 +814,7 @@ public function postProcess() { } if ($deleteAmountBlk) { - $priceField = !empty($params['price_field_id']) ? $params['price_field_id'] : CRM_Utils_Array::value('price_field_other', $params); + $priceField = !empty($params['price_field_id']) ? $params['price_field_id'] : $params['price_field_other'] ?? NULL; if ($priceField) { $priceSetID = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', $priceField, 'price_set_id'); CRM_Price_BAO_PriceSet::setIsQuickConfig($priceSetID, 0); @@ -828,6 +824,15 @@ public function postProcess() { parent::endPostProcess(); } + /** + * Is the price set quick config. + * + * @return bool + */ + private function isQuickConfig(): bool { + return $this->getPriceSetID() && CRM_Price_BAO_PriceSet::isQuickConfig($this->getPriceSetID()); + } + /** * Return a descriptive name for the page, used in wizard header * diff --git a/CRM/Contribute/Form/ContributionPage/Premium.php b/CRM/Contribute/Form/ContributionPage/Premium.php index 7683f3d90015..258c4e1cbafe 100644 --- a/CRM/Contribute/Form/ContributionPage/Premium.php +++ b/CRM/Contribute/Form/ContributionPage/Premium.php @@ -127,8 +127,8 @@ public function postProcess() { $params['id'] = $premiumID; } - $params['premiums_active'] = CRM_Utils_Array::value('premiums_active', $params, FALSE); - $params['premiums_display_min_contribution'] = CRM_Utils_Array::value('premiums_display_min_contribution', $params, FALSE); + $params['premiums_active'] = $params['premiums_active'] ?? FALSE; + $params['premiums_display_min_contribution'] = $params['premiums_display_min_contribution'] ?? FALSE; $params['entity_table'] = 'civicrm_contribution_page'; $params['entity_id'] = $this->_id; diff --git a/CRM/Contribute/Form/ContributionPage/Settings.php b/CRM/Contribute/Form/ContributionPage/Settings.php index ebf7b9cc7828..a91499ab6a5f 100644 --- a/CRM/Contribute/Form/ContributionPage/Settings.php +++ b/CRM/Contribute/Form/ContributionPage/Settings.php @@ -69,8 +69,8 @@ public function setDefaultValues() { $defaults['honoree_profile'] = $ufGroupDAO->id; } $defaults['soft_credit_types'] = [ - CRM_Utils_Array::value('in_honor_of', $soft_credit_types), - CRM_Utils_Array::value('in_memory_of', $soft_credit_types), + $soft_credit_types['in_honor_of'] ?? NULL, + $soft_credit_types['in_memory_of'] ?? NULL, ]; } else { @@ -92,8 +92,8 @@ public function setDefaultValues() { $defaults['honoree_profile'] = $ufGroupDAO->id; } $defaults['soft_credit_types'] = [ - CRM_Utils_Array::value('in_honor_of', $soft_credit_types), - CRM_Utils_Array::value('in_memory_of', $soft_credit_types), + $soft_credit_types['in_honor_of'] ?? NULL, + $soft_credit_types['in_memory_of'] ?? NULL, ]; } @@ -311,11 +311,11 @@ public function postProcess() { $params['currency'] = $config->defaultCurrency; } - $params['is_confirm_enabled'] = CRM_Utils_Array::value('is_confirm_enabled', $params, FALSE); - $params['is_share'] = CRM_Utils_Array::value('is_share', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['is_credit_card_only'] = CRM_Utils_Array::value('is_credit_card_only', $params, FALSE); - $params['honor_block_is_active'] = CRM_Utils_Array::value('honor_block_is_active', $params, FALSE); + $params['is_confirm_enabled'] = $params['is_confirm_enabled'] ?? FALSE; + $params['is_share'] = $params['is_share'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['is_credit_card_only'] = $params['is_credit_card_only'] ?? FALSE; + $params['honor_block_is_active'] = $params['honor_block_is_active'] ?? FALSE; $params['is_for_organization'] = !empty($params['is_organization']) ? CRM_Utils_Array::value('is_for_organization', $params, FALSE) : 0; $params['goal_amount'] = CRM_Utils_Rule::cleanMoney($params['goal_amount']); @@ -389,15 +389,6 @@ public function postProcess() { if ($this->_action & CRM_Core_Action::ADD) { $url = 'civicrm/admin/contribute/amount'; $urlParams = "action=update&reset=1&id={$dao->id}"; - // special case for 'Save and Done' consistency. - if ($this->controller->getButtonName('submit') == '_qf_Amount_upload_done') { - $url = 'civicrm/admin/contribute'; - $urlParams = 'reset=1'; - CRM_Core_Session::setStatus(ts("'%1' information has been saved.", - [1 => $this->getTitle()] - ), ts('Saved'), 'success'); - } - CRM_Utils_System::redirect(CRM_Utils_System::url($url, $urlParams)); } parent::endPostProcess(); diff --git a/CRM/Contribute/Form/ContributionPage/ThankYou.php b/CRM/Contribute/Form/ContributionPage/ThankYou.php index f8cc668f0701..2b325bc60b61 100644 --- a/CRM/Contribute/Form/ContributionPage/ThankYou.php +++ b/CRM/Contribute/Form/ContributionPage/ThankYou.php @@ -100,7 +100,7 @@ public function postProcess() { $params = $this->controller->exportValues($this->_name); $params['id'] = $this->_id; - $params['is_email_receipt'] = CRM_Utils_Array::value('is_email_receipt', $params, FALSE); + $params['is_email_receipt'] = $params['is_email_receipt'] ?? FALSE; if (!$params['is_email_receipt']) { $params['receipt_from_name'] = NULL; $params['receipt_from_email'] = NULL; diff --git a/CRM/Contribute/Form/ContributionPage/Widget.php b/CRM/Contribute/Form/ContributionPage/Widget.php index 937d7457c35a..a8b838cbb4bc 100644 --- a/CRM/Contribute/Form/ContributionPage/Widget.php +++ b/CRM/Contribute/Form/ContributionPage/Widget.php @@ -241,7 +241,7 @@ public function postProcess() { $params['id'] = $this->_widget->id; } $params['contribution_page_id'] = $this->_id; - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; $params['url_homepage'] = 'null'; $widget = new CRM_Contribute_DAO_Widget(); diff --git a/CRM/Contribute/Form/ContributionView.php b/CRM/Contribute/Form/ContributionView.php index e3fa74ea259d..d68c4d30876d 100644 --- a/CRM/Contribute/Form/ContributionView.php +++ b/CRM/Contribute/Form/ContributionView.php @@ -21,6 +21,7 @@ * This class generates form components for Payment-Instrument. */ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { + use CRM_Contribute_Form_ContributeFormTrait; /** * Set variables up before form is built. @@ -28,7 +29,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { * @throws \CRM_Core_Exception */ public function preProcess() { - $id = $this->getID(); + $id = $this->getContributionID(); // Check permission for action. $actionMapping = [ @@ -82,11 +83,11 @@ public function preProcess() { $values['contribution_page_title'] = ''; if (!empty($values['contribution_page_id'])) { $contribPages = CRM_Contribute_PseudoConstant::contributionPage(NULL, TRUE); - $values['contribution_page_title'] = CRM_Utils_Array::value(CRM_Utils_Array::value('contribution_page_id', $values), $contribPages); + $values['contribution_page_title'] = $contribPages[$values['contribution_page_id']] ?? ''; } // get received into i.e to_financial_account_id from last trxn - $financialTrxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($this->getID(), 'DESC'); + $financialTrxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($this->getContributionID(), 'DESC'); $values['to_financial_account'] = ''; $values['payment_processor_name'] = ''; if (!empty($financialTrxnId['financialTrxnId'])) { @@ -176,7 +177,7 @@ public function preProcess() { } //assign soft credit record if exists. - $SCRecords = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($this->getID(), TRUE); + $SCRecords = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($this->getContributionID(), TRUE); $this->assign('softContributions', empty($SCRecords['soft_credit']) ? NULL : $SCRecords['soft_credit']); // unset doesn't complain if array member missing unset($SCRecords['soft_credit']); @@ -266,7 +267,7 @@ public function preProcess() { $urlParams = "reset=1&id={$id}&cid={$values['contact_id']}&action=update&context={$context}&key={$searchKey}"; } if (!$contribution['is_template']) { - foreach (CRM_Contribute_BAO_Contribution::getContributionPaymentLinks($this->getID(), $contributionStatus) as $paymentButton) { + foreach (CRM_Contribute_BAO_Contribution::getContributionPaymentLinks($this->getContributionID(), $contributionStatus) as $paymentButton) { $paymentButton['icon'] = 'fa-plus-circle'; $linkButtons[] = $paymentButton; } @@ -378,7 +379,7 @@ private function isHasAccess(string $action): bool { try { return Contribution::checkAccess() ->setAction($action) - ->addValue('id', $this->getID()) + ->addValue('id', $this->getContributionID()) ->execute()->first()['access']; } catch (CRM_Core_Exception $e) { @@ -387,16 +388,33 @@ private function isHasAccess(string $action): bool { } /** - * Get the contribution ID. + * Get the selected Contribution ID. * - * @return int + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection */ - private function getID(): int { + public function getContributionID(): ?int { $id = $this->get('id'); - if (empty($id)) { - CRM_Core_Error::statusBounce('Contribution ID is required'); + if (!$id) { + $id = CRM_Utils_Request::retrieve('id', 'Positive'); } - return $id; + return (int) $id; + } + + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionPageID(): ?int { + return $this->getContributionID() ? $this->getContributionValue('contribution_page_id') : NULL; } } diff --git a/CRM/Contribute/Form/Task/Invoice.php b/CRM/Contribute/Form/Task/Invoice.php index c43a24be99b1..f8b885edcbb6 100644 --- a/CRM/Contribute/Form/Task/Invoice.php +++ b/CRM/Contribute/Form/Task/Invoice.php @@ -287,12 +287,12 @@ public static function printPDF($contribIDs, &$params, $contactIds) { $lineItem = CRM_Price_BAO_LineItem::getLineItemsByContributionID($contributionID); foreach ($lineItem as $taxRate) { if (isset($dataArray[(string) $taxRate['tax_rate']])) { - $dataArray[(string) $taxRate['tax_rate']] = $dataArray[(string) $taxRate['tax_rate']] + CRM_Utils_Array::value('tax_amount', $taxRate); + $dataArray[(string) $taxRate['tax_rate']] = $dataArray[(string) $taxRate['tax_rate']] + ($taxRate['tax_amount'] ?? 0); } else { $dataArray[(string) $taxRate['tax_rate']] = $taxRate['tax_amount'] ?? NULL; } - $subTotal += CRM_Utils_Array::value('subTotal', $taxRate); + $subTotal += $taxRate['subTotal'] ?? 0; } // to email the invoice diff --git a/CRM/Contribute/Form/Task/PDFLetter.php b/CRM/Contribute/Form/Task/PDFLetter.php index 833bc44be9a4..1718cca1a701 100644 --- a/CRM/Contribute/Form/Task/PDFLetter.php +++ b/CRM/Contribute/Form/Task/PDFLetter.php @@ -241,7 +241,7 @@ public function postProcess() { $contactIds = array_keys($contacts); // CRM-16725 Skip creation of activities if user is previewing their PDF letter(s) if ($this->isLiveMode()) { - $this->createActivities($html_message, $contactIds, CRM_Utils_Array::value('subject', $formValues, ts('Thank you letter')), CRM_Utils_Array::value('campaign_id', $formValues), $contactHtml); + $this->createActivities($html_message, $contactIds, CRM_Utils_Array::value('subject', $formValues, ts('Thank you letter')), $formValues['campaign_id'] ?? NULL, $contactHtml); } $html = array_diff_key($html, $emailedHtml); diff --git a/CRM/Contribute/Page/ContributionRecur.php b/CRM/Contribute/Page/ContributionRecur.php index 644c4144b976..4236ae3a582a 100644 --- a/CRM/Contribute/Page/ContributionRecur.php +++ b/CRM/Contribute/Page/ContributionRecur.php @@ -51,7 +51,7 @@ public function view() { } $contributionRecur['payment_processor'] = CRM_Financial_BAO_PaymentProcessor::getPaymentProcessorName( - CRM_Utils_Array::value('payment_processor_id', $contributionRecur) + $contributionRecur['payment_processor_id'] ?? NULL ); $idFields = ['contribution_status_id', 'campaign_id', 'financial_type_id']; foreach ($idFields as $idField) { diff --git a/CRM/Contribute/Page/DashBoard.php b/CRM/Contribute/Page/DashBoard.php index b7df27e2f79d..aa8cdbbc413d 100644 --- a/CRM/Contribute/Page/DashBoard.php +++ b/CRM/Contribute/Page/DashBoard.php @@ -68,7 +68,7 @@ public function preProcess() { } //for contribution tabular View - $buildTabularView = CRM_Utils_Array::value('showtable', $_GET, FALSE); + $buildTabularView = $_GET['showtable'] ?? FALSE; $this->assign('buildTabularView', $buildTabularView); if ($buildTabularView) { return; diff --git a/CRM/Contribute/Page/ManagePremiums.php b/CRM/Contribute/Page/ManagePremiums.php index f1b2b7c86ae6..0c08a37687d2 100644 --- a/CRM/Contribute/Page/ManagePremiums.php +++ b/CRM/Contribute/Page/ManagePremiums.php @@ -53,28 +53,33 @@ public function &links() { 'url' => 'civicrm/admin/contribute/managePremiums', 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Preview'), 'url' => 'civicrm/admin/contribute/managePremiums', 'qs' => 'action=preview&id=%%id%%', 'title' => ts('Preview Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/contribute/managePremiums', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } @@ -125,7 +130,7 @@ public function browse() { $action -= CRM_Core_Action::DISABLE; } - $premiums[$dao->id]['action'] = CRM_Core_Action::formLink(self::links(), + $premiums[$dao->id]['action'] = CRM_Core_Action::formLink($this->links(), $action, ['id' => $dao->id], ts('more'), diff --git a/CRM/Contribute/Page/Tab.php b/CRM/Contribute/Page/Tab.php index 641bb6ee4f01..b9ed69a9ba76 100644 --- a/CRM/Contribute/Page/Tab.php +++ b/CRM/Contribute/Page/Tab.php @@ -428,7 +428,7 @@ public function preProcess() { $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'browse'); $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); - if ($context == 'standalone') { + if ($context === 'standalone') { $this->_action = CRM_Core_Action::ADD; } else { @@ -439,11 +439,11 @@ public function preProcess() { 'return' => 'contact_id', ]); } - $this->assign('contactId', $this->_contactId); // check logged in url permission CRM_Contact_Page_View::checkUserPermission($this); } + $this->assign('contactId', $this->_contactId); $this->assign('action', $this->_action); if ($this->_permission == CRM_Core_Permission::EDIT && !CRM_Core_Permission::check('edit contributions')) { diff --git a/CRM/Contribute/Page/UserDashboard.php b/CRM/Contribute/Page/UserDashboard.php index 96b94a18d73b..cdb2745468a7 100644 --- a/CRM/Contribute/Page/UserDashboard.php +++ b/CRM/Contribute/Page/UserDashboard.php @@ -32,7 +32,9 @@ public function listContribution(): void { // which the tpl can iterate through - this should allow us to cope with competing attempts to add new buttons // and allow extensions to assign new ones through the pageRun hook // We could check for balance_amount > 0 here? It feels more correct but this seems to be working. - if (in_array($row['contribution_status_id:name'], ['Pending', 'Partially paid'], TRUE)) { + if (in_array($row['contribution_status_id:name'], ['Pending', 'Partially paid'], TRUE) + && Civi::settings()->get('default_invoice_page') + ) { $row['buttons']['pay'] = [ 'class' => 'button', 'label' => ts('Pay Now'), diff --git a/CRM/Contribute/Tokens.php b/CRM/Contribute/Tokens.php index 5af208998fcd..625496528f87 100644 --- a/CRM/Contribute/Tokens.php +++ b/CRM/Contribute/Tokens.php @@ -10,8 +10,8 @@ +--------------------------------------------------------------------+ */ -use Civi\Api4\ContributionPage; -use Civi\Api4\ContributionRecur; +use Civi\Api4\Address; +use Civi\Token\TokenRow; /** * Class CRM_Contribute_Tokens @@ -61,35 +61,61 @@ protected function getRelatedTokens(): array { if (!array_key_exists('Contribution', \Civi::service('action_object_provider')->getEntities())) { return $tokens; } + $tokens += $this->getRelatedTokensForEntity('Address', 'address_id', ['name', 'id']); + + $tokens['address_id.name']['title'] = ts('Billing Address Name'); + $tokens['address_id.display'] = [ + 'title' => ts('Billing Address'), + 'name' => 'address_id.display', + 'type' => 'mapped', + 'input_type' => 'Text', + 'audience' => 'user', + 'data_type' => 'String', + ]; + // Ideally we would derive this from 'usage' - but it looks like adding the usage data // was quite a bit of work & didn't leave the energy to implement - esp expose for // where clauses (also, it feels like 'hidden+token' would be a good usage. - $tokenList = ['frontend_title', 'pay_later_text', 'pay_later_receipt', 'is_share', 'receipt_text']; - $contributionPageTokens = ContributionPage::getFields(FALSE)->addWhere('name', 'IN', $tokenList)->execute(); - foreach ($contributionPageTokens as $contributionPageToken) { - $tokens['contribution_page_id.' . $contributionPageToken['name']] = [ - 'title' => $contributionPageToken['title'], - 'name' => 'contribution_page_id.' . $contributionPageToken['name'], - 'type' => 'mapped', - 'data_type' => $contributionPageToken['data_type'], - 'input_type' => $contributionPageToken['input_type'], - 'audience' => $contributionPageToken['name'] === 'is_share' ? 'hidden' : 'user', - ]; - } + $contributionPageTokens = ['frontend_title', 'pay_later_text', 'pay_later_receipt', 'is_share', 'receipt_text']; + $tokens += $this->getRelatedTokensForEntity('ContributionPage', 'contribution_page_id', $contributionPageTokens, ['is_share']); + $hiddenTokens = ['modified_date', 'create_date', 'trxn_id', 'invoice_id', 'is_test', 'payment_token_id', 'payment_processor_id', 'payment_instrument_id', 'cycle_day', 'installments', 'processor_id', 'next_sched_contribution_date', 'failure_count', 'failure_retry_date', 'auto_renew', 'is_email_receipt', 'contribution_status_id']; - $contributionRecurFields = ContributionRecur::getFields(FALSE)->setLoadOptions(TRUE)->execute(); - foreach ($contributionRecurFields as $contributionRecurField) { - $tokens['contribution_recur_id.' . $contributionRecurField['name']] = [ - 'title' => $contributionRecurField['title'], - 'name' => 'contribution_recur_id.' . $contributionRecurField['name'], - 'type' => 'mapped', - 'options' => $contributionRecurField['options'] ?? NULL, - 'data_type' => $contributionRecurField['data_type'], - 'input_type' => $contributionRecurField['input_type'], - 'audience' => in_array($contributionRecurField['name'], $hiddenTokens) ? 'hidden' : 'user', - ]; - } + $tokens += $this->getRelatedTokensForEntity('ContributionRecur', 'contribution_recur_id', ['*'], $hiddenTokens); return $tokens; } + /** + * @param \Civi\Token\TokenRow $row + * @param string $field + * @return string|int + */ + protected function getFieldValue(TokenRow $row, string $field) { + $entityName = $this->getEntityName(); + if (isset($row->context[$entityName][$field])) { + return $row->context[$entityName][$field]; + } + if ($field === 'address_id.display') { + $addressID = $this->getFieldValue($row, 'address_id.id'); + // We possibly could figure out how to load in a cleverer way + // or as part of apiv4 but this is tested so that can easily happen later... + $address = Address::get(FALSE) + ->addWhere('id', '=', $addressID) + ->addSelect('*', 'state_province_id:label', 'country_id:label') + ->execute()->first(); + // We have name in the address_id.name token. + unset($address['name']); + return \CRM_Utils_Address::format($address); + } + return parent::getFieldValue($row, $field); + } + + /** + * Get fields which need to be returned to render another token. + * + * @return array + */ + public function getDependencies(): array { + return ['address_id.display' => 'address_id.id']; + } + } diff --git a/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php b/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php index d3477bb3da10..4c5bdc364fca 100644 --- a/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php +++ b/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php @@ -143,6 +143,10 @@ private function addExampleData(GenericWorkflowMessage $messageTemplate, $exampl $this->setLineItem($mockOrder, $priceField, $priceFieldValue, $index); } + $contribution['address_id.name'] = 'Barbara Johnson'; + $contribution['address_id.display'] = '790L Lincoln St S +Baltimore, New York 10545 +United States'; $contribution['total_amount'] = $mockOrder->getTotalAmount(); $contribution['tax_amount'] = $mockOrder->getTotalTaxAmount() ? round($mockOrder->getTotalTaxAmount(), 2) : 0; $messageTemplate->setContribution($contribution); diff --git a/CRM/Contribute/WorkflowMessage/ContributionTrait.php b/CRM/Contribute/WorkflowMessage/ContributionTrait.php index 81e32f49b423..b7baed4edb37 100644 --- a/CRM/Contribute/WorkflowMessage/ContributionTrait.php +++ b/CRM/Contribute/WorkflowMessage/ContributionTrait.php @@ -30,6 +30,18 @@ trait CRM_Contribute_WorkflowMessage_ContributionTrait { */ public $isShowTax; + /** + * Is it a good idea to show the line item subtotal. + * + * This would be true if at least one line has a quantity > 1. + * Otherwise it is very repetitive. + * + * @var bool + * + * @scope tplParams + */ + public $isShowLineSubtotal; + /** * Line items associated with the contribution. * @@ -109,6 +121,25 @@ public function getIsShowLineItems(): bool { return FALSE; } return !$this->order->getPriceSetMetadata()['is_quick_config']; + return $this->isShowLineItems; + } + + /** + * Is it a good idea to show the line item subtotal. + * + * This would be true if at least one line has a quantity > 1. + * Otherwise it is very repetitive. + * + * @return bool + * @throws \CRM_Core_Exception + */ + public function getIsShowLineSubtotal(): bool { + foreach ($this->getLineItems() as $lineItem) { + if ((int) $lineItem['qty'] > 1) { + return TRUE; + } + } + return FALSE; } /** diff --git a/CRM/Core/BAO/Address.php b/CRM/Core/BAO/Address.php index d7391167e735..139f0ea6a958 100644 --- a/CRM/Core/BAO/Address.php +++ b/CRM/Core/BAO/Address.php @@ -1283,8 +1283,13 @@ public static function addGeocoderData(&$params) { catch (CRM_Core_Exception $e) { $providerExists = FALSE; } - if ($providerExists) { - $provider::format($params); + try { + if ($providerExists) { + $provider::format($params); + } + } + catch (CRM_Core_Exception $e) { + \Civi::log()->error('Geocoding error:' . $e->getMessage(), ['geocoder' => get_class($provider), 'input' => $params]); } // dev/core#2379 - Limit geocode length to 14 characters to avoid validation error on save in UI. foreach (['geo_code_1', 'geo_code_2'] as $geocode) { @@ -1312,7 +1317,7 @@ public static function legacyCreate(array $params, bool $fixAddress) { } CRM_Core_BAO_Block::sortPrimaryFirst($params['address']); - $updateBlankLocInfo = CRM_Utils_Array::value('updateBlankLocInfo', $params, FALSE); + $updateBlankLocInfo = $params['updateBlankLocInfo'] ?? FALSE; $contactId = $params['contact_id']; //get all the addresses for this contact $addresses = self::allAddress($contactId); diff --git a/CRM/Core/BAO/Block.php b/CRM/Core/BAO/Block.php index bd80441e142d..fe5df456d309 100644 --- a/CRM/Core/BAO/Block.php +++ b/CRM/Core/BAO/Block.php @@ -208,8 +208,8 @@ public static function create($blockName, $params) { $contactId = $params['contact_id']; - $updateBlankLocInfo = CRM_Utils_Array::value('updateBlankLocInfo', $params, FALSE); - $isIdSet = CRM_Utils_Array::value('isIdSet', $params[$blockName], FALSE); + $updateBlankLocInfo = $params['updateBlankLocInfo'] ?? FALSE; + $isIdSet = $params[$blockName]['isIdSet'] ?? FALSE; //get existing block ids. $blockIds = self::getBlockIds($blockName, $contactId, $entityElements); diff --git a/CRM/Core/BAO/CMSUser.php b/CRM/Core/BAO/CMSUser.php index e43a7b499876..c5f01e496a56 100644 --- a/CRM/Core/BAO/CMSUser.php +++ b/CRM/Core/BAO/CMSUser.php @@ -40,9 +40,12 @@ public static function create(&$params, $mailParam) { $ufID = $config->userSystem->createUser($params, $mailParam); - //if contact doesn't already exist create UF Match - if ($ufID !== FALSE && - isset($params['contactID']) + // Create UF Match if we have contactID unless we're Standalone + // since in Standalone uf_match is the same table as User. + if ( + CIVICRM_UF !== 'Standalone' + && $ufID !== FALSE + && isset($params['contactID']) ) { // create the UF Match record $ufmatch['uf_id'] = $ufID; diff --git a/CRM/Core/BAO/CustomField.php b/CRM/Core/BAO/CustomField.php index 79ef2f16f7d3..e6f4b68d31b0 100644 --- a/CRM/Core/BAO/CustomField.php +++ b/CRM/Core/BAO/CustomField.php @@ -856,11 +856,12 @@ public static function getViewableCustomFields(string $extends, array $extendsEn && $field['custom_group_id.is_public'] && ( !empty($entityValueMatches) + || empty($entityFilters) || empty($field['custom_group_id.extends_entity_column_id']) ) && ( $field['custom_group_id.extends'] === $extends - || ($field['extends'] === 'Contact' && in_array($extends, ['Individual', 'Organization', 'Household'])) + || ($field['custom_group_id.extends'] === 'Contact' && in_array($extends, ['Individual', 'Organization', 'Household'])) ) ) { \Civi::$statics[__CLASS__][__FUNCTION__][$cacheKey][(int) $field['id']] = $field; @@ -1132,6 +1133,10 @@ public static function addQuickFormElement( $qf->assign('customUrls', $customUrls); break; + + case 'Hidden': + $element = $qf->add('hidden', $elementName); + break; } switch ($field->data_type) { @@ -1148,21 +1153,21 @@ public static function addQuickFormElement( case 'Float': if ($field->is_search_range && $search) { - $qf->addRule($elementName . '_from', ts('%1 From must be a number (with or without decimal point).', [1 => $label]), 'numeric'); - $qf->addRule($elementName . '_to', ts('%1 To must be a number (with or without decimal point).', [1 => $label]), 'numeric'); + $qf->addRule($elementName . '_from', ts('%1 From must be a number (with or without decimals).', [1 => $label]), 'money'); + $qf->addRule($elementName . '_to', ts('%1 To must be a number (with or without decimals).', [1 => $label]), 'money'); } elseif ($widget == 'Text') { - $qf->addRule($elementName, ts('%1 must be a number (with or without decimal point).', [1 => $label]), 'numeric'); + $qf->addRule($elementName, ts('%1 must be a number (with or without decimals).', [1 => $label]), 'money'); } break; case 'Money': if ($field->is_search_range && $search) { - $qf->addRule($elementName . '_from', ts('%1 From must in proper money format. (decimal point/comma/space is allowed).', [1 => $label]), 'money'); - $qf->addRule($elementName . '_to', ts('%1 To must in proper money format. (decimal point/comma/space is allowed).', [1 => $label]), 'money'); + $qf->addRule($elementName . '_from', ts('%1 From must in money format (a number with or without decimals, ex: %2).', [1 => $label, 2 => Civi::format()->number(123.98)]), 'money'); + $qf->addRule($elementName . '_to', ts('%1 To must in money format (a number with or without decimals, ex: %2).', [1 => $label, 2 => Civi::format()->number(123.98)]), 'money'); } elseif ($widget == 'Text') { - $qf->addRule($elementName, ts('%1 must be in proper money format. (decimal point/comma/space is allowed).', [1 => $label]), 'money'); + $qf->addRule($elementName, ts('%1 must be in money format (a number with or without decimals, ex: %2).', [1 => $label, 2 => Civi::format()->number(123.98)]), 'money'); } break; @@ -1321,7 +1326,7 @@ private static function formatDisplayValue($value, $field, $entityId = NULL) { // In such cases we could just get intval($value) and fetch matching // option again, but this would not work if key is float like 5.6. // So we need to truncate trailing zeros to make it work as expected. - if ($display === '' && strpos(($value ?? ''), '.') !== FALSE) { + if ($display === '' && is_numeric($value) && strpos(($value ?? ''), '.') !== FALSE) { // Use round() to truncate trailing zeros, e.g: // 10.00 -> 10, 10.60 -> 10.6, 10.69 -> 10.69. $value = (string) round($value, 5); @@ -2221,7 +2226,7 @@ protected static function prepareCreate($params) { // create any option group & values if required $allowedOptionTypes = ['String', 'Int', 'Float', 'Money']; - if ($htmlType !== 'Text' && in_array($dataType, $allowedOptionTypes, TRUE)) { + if (!in_array($htmlType, ['Text', 'Hidden'], TRUE) && in_array($dataType, $allowedOptionTypes, TRUE)) { //CRM-16659: if option_value then create an option group for this custom field. // An option_type of 2 would be a 'message' from the form layer not to handle // the option_values key. If not set then it is not ignored. @@ -2749,30 +2754,22 @@ public static function validateCustomData($params) { switch ($dataType) { case 'Int': $ruleName = 'integer'; - $errorMsg = ts('%1 must be an integer (whole number).', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be an integer (whole number).', [1 => $fieldTitle]); break; case 'Money': $ruleName = 'money'; - $errorMsg = ts('%1 must in proper money format. (decimal point/comma/space is allowed).', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be in money format (a number with or without decimals, ex: %2).', [1 => $fieldTitle, 2 => Civi::format()->number(123.98)]); break; case 'Float': $ruleName = 'numeric'; - $errorMsg = ts('%1 must be a number (with or without decimal point).', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be a number (with or without decimals).', [1 => $fieldTitle]); break; case 'Link': $ruleName = 'wikiURL'; - $errorMsg = ts('%1 must be valid Website.', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be valid Website.', [1 => $fieldTitle]); break; } diff --git a/CRM/Core/BAO/CustomGroup.php b/CRM/Core/BAO/CustomGroup.php index e7b561a07c8d..69acff737844 100644 --- a/CRM/Core/BAO/CustomGroup.php +++ b/CRM/Core/BAO/CustomGroup.php @@ -550,6 +550,7 @@ public static function getTree( $cacheString .= "_Inline"; } + $multipleFieldGroups = []; $cacheKey = "CRM_Core_DAO_CustomGroup_Query " . md5($cacheString); $multipleFieldGroupCacheKey = "CRM_Core_DAO_CustomGroup_QueryMultipleFields " . md5($cacheString); $cache = CRM_Utils_Cache::singleton(); @@ -837,6 +838,7 @@ public static function buildCustomFieldData($dao, &$groupTree, $table, $groupID, 'qs' => 'reset=1&id=%%id%%&eid=%%eid%%&fid=%%fid%%&action=delete&fcs=%%fcs%%', 'extra' => 'onclick = "if (confirm( \'' . $deleteExtra . '\' ) ) this.href+=\'&confirmed=1\'; else return false;"', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; $customValue['deleteURL'] = CRM_Core_Action::formLink($deleteURL, @@ -2061,7 +2063,7 @@ public static function getExtendedObjectTypes(&$types = []) { * @param array $params * @return array */ - public static function getExtendsEntityColumnValueOptions($context, $params) { + public static function getExtendsEntityColumnValueOptions($context, $params): array { $props = $params['values'] ?? []; // Requesting this option list only makes sense if the value of 'extends' is known or can be looked up if (!empty($props['id']) || !empty($props['name']) || !empty($props['extends']) || !empty($props['extends_entity_column_id'])) { @@ -2397,18 +2399,51 @@ public static function checkGroupAccess($groupId, $operation = CRM_Core_Permissi return in_array($groupId, $allowedGroups); } + /** + * Given the name of a custom group, gets the name of the API entity the group extends. + * + * Sort of the inverse of this function: + * @see \Civi\Api4\Utils\CoreUtil::getCustomGroupExtends + * + * @param string $groupName + * @return string + * @throws \CRM_Core_Exception + */ + public static function getEntityForGroup(string $groupName): string { + $extends = \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $groupName, 'extends', 'name'); + if (!$extends) { + throw new \CRM_Core_Exception("Custom group $groupName not found"); + } + return self::getEntityFromExtends($extends); + } + + /** + * Translate CustomGroup.extends to entity name. + * + * CustomGroup.extends pretty much maps 1-1 with entity names, except for Individual, Organization & Household. + * @param string $extends + * @return string + * @see self::getCustomGroupExtendsOptions + */ + public static function getEntityFromExtends(string $extends): string { + if ($extends === 'Contact' || in_array($extends, \CRM_Contact_BAO_ContactType::basicTypes(TRUE))) { + return 'Contact'; + } + return $extends; + } + /** * List all possible values for `CustomGroup.extends`. * - * This includes the fake entities "Individual", "Organization", "Household" - * but not the extra options from `custom_data_type` used on the form ("ParticipantStatus", etc). + * This includes the pseudo-entities "Individual", "Organization", "Household". * * Returns a mix of hard-coded array and `cg_extend_objects` OptionValues. - * The 'id' return key maps to the 'value' in `cg_extend_objects`. - * The 'grouping' key refers to the entity field used to select a sub-type. - * The 'table_name' key is for internal use (is not returned by getFields.loadOptions), and - * maps to the 'name' in `cg_extend_objects`. We don't return it as the 'name' in getFields because - * it is not always unique (since contact types are pseudo-entities in this list). + * - 'id' return key (maps to `cg_extend_objects.value`). + * - 'grouping' key refers to the entity field used to select a sub-type. + * - 'is_multiple' (@internal, not returned by getFields.loadOptions) (maps to `cg_extend_objects.filter`) + * controls whether the entity supports multi-record custom groups. + * - 'table_name' (@internal, not returned by getFields.loadOptions) (maps to `cg_extend_objects.name`). + * We don't return it as the 'name' in getFields because it is not always unique (since contact types are pseudo-entities). * * @return array{id: string, label: string, grouping: string, table_name: string}[] */ @@ -2419,81 +2454,100 @@ public static function getCustomGroupExtendsOptions() { 'label' => ts('Activities'), 'grouping' => 'activity_type_id', 'table_name' => 'civicrm_activity', + 'is_multiple' => FALSE, ], [ 'id' => 'Relationship', 'label' => ts('Relationships'), 'grouping' => 'relationship_type_id', 'table_name' => 'civicrm_relationship', + 'is_multiple' => FALSE, ], + // TODO: Move to civi_contribute extension (example: OptionValue_cg_extends_objects_grant.mgd.php) [ 'id' => 'Contribution', 'label' => ts('Contributions'), 'grouping' => 'financial_type_id', 'table_name' => 'civicrm_contribution', + 'is_multiple' => FALSE, ], [ 'id' => 'ContributionRecur', 'label' => ts('Recurring Contributions'), 'grouping' => NULL, 'table_name' => 'civicrm_contribution_recur', + 'is_multiple' => FALSE, ], [ 'id' => 'Group', 'label' => ts('Groups'), 'grouping' => NULL, 'table_name' => 'civicrm_group', + 'is_multiple' => FALSE, ], + // TODO: Move to civi_member extension (example: OptionValue_cg_extends_objects_grant.mgd.php) [ 'id' => 'Membership', 'label' => ts('Memberships'), 'grouping' => 'membership_type_id', 'table_name' => 'civicrm_membership', + 'is_multiple' => FALSE, ], + // TODO: Move to civi_event extension (example: OptionValue_cg_extends_objects_grant.mgd.php) [ 'id' => 'Event', 'label' => ts('Events'), 'grouping' => 'event_type_id', 'table_name' => 'civicrm_event', + 'is_multiple' => FALSE, ], [ 'id' => 'Participant', 'label' => ts('Participants'), 'grouping' => NULL, 'table_name' => 'civicrm_participant', + 'is_multiple' => FALSE, ], + // TODO: Move to civi_pledge extension (example: OptionValue_cg_extends_objects_grant.mgd.php) [ 'id' => 'Pledge', 'label' => ts('Pledges'), 'grouping' => NULL, 'table_name' => 'civicrm_pledge', + 'is_multiple' => FALSE, ], [ 'id' => 'Address', 'label' => ts('Addresses'), 'grouping' => NULL, 'table_name' => 'civicrm_address', + 'is_multiple' => FALSE, ], + // TODO: Move to civi_campaign extension (example: OptionValue_cg_extends_objects_grant.mgd.php) [ 'id' => 'Campaign', 'label' => ts('Campaigns'), 'grouping' => 'campaign_type_id', 'table_name' => 'civicrm_campaign', + 'is_multiple' => FALSE, ], [ 'id' => 'Contact', 'label' => ts('Contacts'), 'grouping' => NULL, 'table_name' => 'civicrm_contact', + 'is_multiple' => TRUE, ], ]; // `CustomGroup.extends` stores contact type as if it were an entity. - foreach (CRM_Contact_BAO_ContactType::basicTypePairs(TRUE) as $contactType => $contactTypeLabel) { + foreach (CRM_Contact_BAO_ContactType::basicTypeInfo(TRUE) as $contactType => $contactInfo) { $options[] = [ 'id' => $contactType, - 'label' => $contactTypeLabel, + 'label' => $contactInfo['label'], 'grouping' => 'contact_sub_type', 'table_name' => 'civicrm_contact', + 'is_multiple' => TRUE, + 'icon' => $contactInfo['icon'], ]; } $ogId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'cg_extend_objects', 'id', 'name'); @@ -2504,8 +2558,12 @@ public static function getCustomGroupExtendsOptions() { 'label' => $ogValue['label'], 'grouping' => $ogValue['grouping'] ?? NULL, 'table_name' => $ogValue['name'], + 'is_multiple' => !empty($ogValue['filter']), ]; } + foreach ($options as &$option) { + $option['icon'] = $option['icon'] ?? \Civi\Api4\Utils\CoreUtil::getInfoItem($option['id'], 'icon'); + } return $options; } diff --git a/CRM/Core/BAO/CustomValue.php b/CRM/Core/BAO/CustomValue.php index f801e1296fb8..485b231cc4ba 100644 --- a/CRM/Core/BAO/CustomValue.php +++ b/CRM/Core/BAO/CustomValue.php @@ -211,18 +211,19 @@ public static function deleteCustomValue($customValueID, $customGroupID) { } /** - * ACL clause for an APIv4 custom pseudo-entity (aka multi-record custom group extending Contact). + * ACL clause for an APIv4 custom pseudo-entity (aka multi-record custom group). * @param string|null $entityName * @param int|null $userId * @param array $conditions * @return array */ public function addSelectWhereClause(string $entityName = NULL, int $userId = NULL, array $conditions = []): array { - // To-date, custom-value-based entities are only supported for contacts. - // If this changes, $entityName variable contains the name of this custom group, - // and could be used to lookup the type of entity this custom group joins to. + // Some legacy code omits $entityName, in which case fall-back on 'Contact' which until 2023 + // was the only type of entity that could be extended by multi-record custom groups. + $groupName = \Civi\Api4\Utils\CoreUtil::getCustomGroupName((string) $entityName); + $joinEntity = $groupName ? CRM_Core_BAO_CustomGroup::getEntityForGroup($groupName) : 'Contact'; $clauses = [ - 'entity_id' => CRM_Utils_SQL::mergeSubquery('Contact'), + 'entity_id' => CRM_Utils_SQL::mergeSubquery($joinEntity), ]; CRM_Utils_Hook::selectWhereClause($entityName ?? $this, $clauses); return $clauses; @@ -232,7 +233,7 @@ public function addSelectWhereClause(string $entityName = NULL, int $userId = NU * Special checkAccess function for multi-record custom pseudo-entities * * @param string $entityName - * Ex: 'Contact' or 'Custom_Foobar' + * APIv4-style entity name e.g. 'Custom_Foobar' * @param string $action * @param array $record * @param int $userID @@ -243,8 +244,9 @@ public function addSelectWhereClause(string $entityName = NULL, int $userId = NU public static function _checkAccess(string $entityName, string $action, array $record, int $userID): ?bool { // This check implements two rules: you must have access to the specific custom-data-group - and to the underlying record (e.g. Contact). - $groupName = substr($entityName, 0, 7) === 'Custom_' ? substr($entityName, 7) : NULL; - $extends = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $groupName, 'extends', 'name'); + // Expecting APIv4-style entity name + $groupName = \Civi\Api4\Utils\CoreUtil::getCustomGroupName($entityName); + $extends = \CRM_Core_BAO_CustomGroup::getEntityForGroup($groupName); $id = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $groupName, 'id', 'name'); if (!$groupName) { // $groupName is required but the function signature has to match the parent. @@ -267,17 +269,8 @@ public static function _checkAccess(string $entityName, string $action, array $r } // Do we have access to the target record? - if ($extends === 'Contact' || in_array($extends, CRM_Contact_BAO_ContactType::basicTypes(TRUE), TRUE)) { - return \Civi\Api4\Utils\CoreUtil::checkAccessDelegated('Contact', 'update', ['id' => $eid], $userID); - } - elseif (\Civi\Api4\Utils\CoreUtil::getApiClass($extends)) { - // For most entities (Activity, Relationship, Contribution, ad nauseum), we acn just use an eponymous API. - return \Civi\Api4\Utils\CoreUtil::checkAccessDelegated($extends, 'update', ['id' => $eid], $userID); - } - else { - // Do you need to add a special case for some oddball custom-group type? - throw new CRM_Core_Exception("Cannot assess delegated permissions for group {$groupName}."); - } + $delegatedAction = $action === 'get' ? 'get' : 'update'; + return \Civi\Api4\Utils\CoreUtil::checkAccessDelegated($extends, $delegatedAction, ['id' => $eid], $userID); } } diff --git a/CRM/Core/BAO/Domain.php b/CRM/Core/BAO/Domain.php index 548baffdc68a..6e4049562fae 100644 --- a/CRM/Core/BAO/Domain.php +++ b/CRM/Core/BAO/Domain.php @@ -164,9 +164,11 @@ public static function create($params) { } /** + * @deprecated * @return bool */ public static function multipleDomains() { + CRM_Core_Error::deprecatedFunctionWarning('API'); $session = CRM_Core_Session::singleton(); $numberDomains = $session->get('numberDomains'); @@ -231,12 +233,12 @@ public static function getFromEmail(): string { /** * @param int $contactID - * - * @return bool|null|object|string - * + * @return bool|int + * @deprecated * @throws \CRM_Core_Exception */ public static function addContactToDomainGroup($contactID) { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Contact_BAO_GroupContact::addContactsToGroup'); $groupID = self::getGroupId(); if ($groupID) { diff --git a/CRM/Core/BAO/EntityTag.php b/CRM/Core/BAO/EntityTag.php index c48246775db4..97c94866d95d 100644 --- a/CRM/Core/BAO/EntityTag.php +++ b/CRM/Core/BAO/EntityTag.php @@ -301,7 +301,7 @@ public static function create(&$params, $entityTable, $entityID) { public static function getContactTags($contactID, $count = FALSE) { $contactTags = []; if (!$count) { - $select = "SELECT ct.id, ct.name "; + $select = "SELECT ct.id, ct.label "; } else { $select = "SELECT count(*) as cnt"; @@ -322,7 +322,7 @@ public static function getContactTags($contactID, $count = FALSE) { } while ($dao->fetch()) { - $contactTags[$dao->id] = $dao->name; + $contactTags[$dao->id] = $dao->label; } return $contactTags; diff --git a/CRM/Core/BAO/MailSettings.php b/CRM/Core/BAO/MailSettings.php index 1519394d031b..2d8b6b85ef6d 100644 --- a/CRM/Core/BAO/MailSettings.php +++ b/CRM/Core/BAO/MailSettings.php @@ -19,7 +19,7 @@ class CRM_Core_BAO_MailSettings extends CRM_Core_DAO_MailSettings { /** * Get a list of setup-actions. * - * @return array + * @return array{array{title:string, callback: mixed, url: string}} * List of available actions. See description in the hook-docs. * @see CRM_Utils_Hook::mailSetupActions() */ @@ -31,6 +31,13 @@ public static function getSetupActions() { ]; CRM_Utils_Hook::mailSetupActions($setupActions); + + foreach ($setupActions as $key => &$setupAction) { + if (!isset($setupAction['url'])) { + $setupAction['url'] = (string) Civi::url('//civicrm/ajax/setupMailAccount')->addQuery(['type' => $key]); + } + } + return $setupActions; } @@ -129,8 +136,8 @@ public static function add(&$params) { } if (empty($params['id'])) { - $params['is_ssl'] = CRM_Utils_Array::value('is_ssl', $params, FALSE); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); + $params['is_ssl'] = $params['is_ssl'] ?? FALSE; + $params['is_default'] = $params['is_default'] ?? FALSE; } //handle is_default. diff --git a/CRM/Core/BAO/Managed.php b/CRM/Core/BAO/Managed.php index 420435010538..38fc061a7ca7 100644 --- a/CRM/Core/BAO/Managed.php +++ b/CRM/Core/BAO/Managed.php @@ -50,11 +50,14 @@ public static function on_hook_civicrm_managed(\Civi\Core\Event\GenericHookEvent * @param \Civi\Core\Event\PostEvent $event */ public static function on_hook_civicrm_post(\Civi\Core\Event\PostEvent $event) { - // When an entity is deleted, delete the corresponding Managed record + // When an entity is deleted by the user, nullify 'entity_id' from corresponding Managed record + // This tells the ManagedEntity system that the entity was manually deleted, + // and should be recreated at the discretion of the `update` policy. if ($event->action === 'delete' && $event->id && self::isApi4ManagedType($event->entity)) { - \Civi\Api4\Managed::delete(FALSE) + \Civi\Api4\Managed::update(FALSE) ->addWhere('entity_type', '=', $event->entity) ->addWhere('entity_id', '=', $event->id) + ->addValue('entity_id', NULL) ->execute(); } // When an entity is updated, update the timestamp in corresponding Managed record diff --git a/CRM/Core/BAO/Navigation.php b/CRM/Core/BAO/Navigation.php index 5357b6f7d4a9..9a5bb862a260 100644 --- a/CRM/Core/BAO/Navigation.php +++ b/CRM/Core/BAO/Navigation.php @@ -74,10 +74,9 @@ public static function setIsActive($id, $is_active) { * @return CRM_Core_DAO_Navigation */ public static function add(&$params) { - $navigation = new CRM_Core_DAO_Navigation(); if (empty($params['id'])) { - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['has_separator'] = CRM_Utils_Array::value('has_separator', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['has_separator'] = $params['has_separator'] ?? FALSE; $params['domain_id'] = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID()); } @@ -98,14 +97,7 @@ public static function add(&$params) { $params['weight'] = self::calculateWeight(CRM_Utils_Array::value('parent_id', $params)); } - if (array_key_exists('permission', $params) && is_array($params['permission'])) { - $params['permission'] = implode(',', $params['permission']); - } - - $navigation->copyValues($params); - - $navigation->save(); - return $navigation; + return self::writeRecord($params); } /** @@ -513,11 +505,11 @@ public static function processNavigation(&$params) { break; case "rename": - self::processRename($nodeID, $label); + self::writeRecord(['id' => $nodeID, 'label' => $label]); break; case "delete": - self::processDelete($nodeID); + self::deleteRecord(['id' => $nodeID]); break; } @@ -578,8 +570,6 @@ public static function processMove($nodeID, $referenceID, $position) { $incrementOtherNodes = FALSE; } - $transaction = new CRM_Core_Transaction(); - // now update the existing nodes to weight + 1, if required. if ($incrementOtherNodes) { $query = "UPDATE civicrm_navigation SET weight = weight + 1 @@ -588,11 +578,8 @@ public static function processMove($nodeID, $referenceID, $position) { CRM_Core_DAO::executeQuery($query); } - // finally set the weight of current node - $query = "UPDATE civicrm_navigation SET weight = {$newWeight}, parent_id = {$newParentID} WHERE id = {$nodeID}"; - CRM_Core_DAO::executeQuery($query); - - $transaction->commit(); + // finally set the weight and parent of current node + self::writeRecord(['id' => $nodeID, 'weight' => $newWeight, 'parent_id' => $newParentID]); } /** @@ -600,19 +587,22 @@ public static function processMove($nodeID, $referenceID, $position) { * * @param int $nodeID * @param $label + * @deprecated - use API */ public static function processRename($nodeID, $label) { - CRM_Core_DAO::setFieldValue('CRM_Core_DAO_Navigation', $nodeID, 'label', $label); + CRM_Core_Error::deprecatedFunctionWarning('writeRecord'); + self::writeRecord(['id' => $nodeID, 'label' => $label]); } /** * Process delete action for tree. * * @param int $nodeID + * @deprecated - use API */ public static function processDelete($nodeID) { - $query = "DELETE FROM civicrm_navigation WHERE id = {$nodeID}"; - CRM_Core_DAO::executeQuery($query); + CRM_Core_Error::deprecatedFunctionWarning('writeRecord'); + self::deleteRecord(['id' => $nodeID]); } /** diff --git a/CRM/Core/BAO/Note.php b/CRM/Core/BAO/Note.php index 46e7a9052c6f..f1e54f06f7ba 100644 --- a/CRM/Core/BAO/Note.php +++ b/CRM/Core/BAO/Note.php @@ -171,19 +171,19 @@ public static function add(&$params, $ids = []) { $recentOther = []; if ($noteActions) { $recentOther = [ - 'editUrl' => CRM_Utils_System::url('civicrm/contact/view/note', - "reset=1&action=update&cid={$note->entity_id}&id={$note->id}&context=home" + 'editUrl' => CRM_Utils_System::url('civicrm/note', + "reset=1&action=update&id={$note->id}&context=home" ), - 'deleteUrl' => CRM_Utils_System::url('civicrm/contact/view/note', - "reset=1&action=delete&cid={$note->entity_id}&id={$note->id}&context=home" + 'deleteUrl' => CRM_Utils_System::url('civicrm/note', + "reset=1&action=delete&id={$note->id}&context=home" ), ]; } // add the recently created Note CRM_Utils_Recent::add($displayName . ' - ' . $note->subject, - CRM_Utils_System::url('civicrm/contact/view/note', - "reset=1&action=view&cid={$note->entity_id}&id={$note->id}&context=home" + CRM_Utils_System::url('civicrm/note', + "reset=1&action=view&id={$note->id}&context=home" ), $note->id, 'Note', @@ -376,7 +376,7 @@ public static function getContactNoteCount($contactID) { * * @return array * Nested associative array beginning with direct children of given note. - * + * @deprecated only called by deprecated APIv3 */ public static function getNoteTree($parentId, $maxDepth = 0, $snippet = FALSE) { return self::buildNoteTree($parentId, $maxDepth, $snippet); @@ -422,6 +422,7 @@ public static function getChildCount($id) { * * @return array * Nested associative array beginning with direct children of given note. + * @deprecated only called by deprecated APIv3 */ private static function buildNoteTree($parentId, $maxDepth = 0, $snippet = FALSE, &$tree = [], $depth = 0) { if ($maxDepth && $depth > $maxDepth) { diff --git a/CRM/Core/BAO/RecurringEntity.php b/CRM/Core/BAO/RecurringEntity.php index 9a8aa744927a..cc1d7c1f8eca 100644 --- a/CRM/Core/BAO/RecurringEntity.php +++ b/CRM/Core/BAO/RecurringEntity.php @@ -39,24 +39,8 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity implemen protected $recursion = NULL; protected $recursion_start_date = NULL; - public static $_entitiesToBeDeleted = []; - public static $status = NULL; - public static $_recurringEntityHelper - = [ - 'civicrm_event' => [ - 'helper_class' => 'CRM_Event_DAO_Event', - 'delete_func' => 'delete', - 'pre_delete_func' => 'CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents', - ], - 'civicrm_activity' => [ - 'helper_class' => 'CRM_Activity_DAO_Activity', - 'delete_func' => 'delete', - 'pre_delete_func' => '', - ], - ]; - public static $_dateColumns = [ 'civicrm_event' => [ diff --git a/CRM/Core/BAO/Tag.php b/CRM/Core/BAO/Tag.php index cd2a0522e05e..a86f4b1785ce 100644 --- a/CRM/Core/BAO/Tag.php +++ b/CRM/Core/BAO/Tag.php @@ -311,7 +311,7 @@ public static function getColorTags($usedFor = NULL, $allowSelectingNonSelectabl 'sort' => "name ASC", ], 'is_tagset' => 0, - 'return' => ['name', 'description', 'parent_id', 'color', 'is_selectable', 'used_for'], + 'return' => ['label', 'description', 'parent_id', 'color', 'is_selectable', 'used_for'], ]; if ($usedFor) { $params['used_for'] = ['LIKE' => "%$usedFor%"]; @@ -322,7 +322,7 @@ public static function getColorTags($usedFor = NULL, $allowSelectingNonSelectabl $allTags = []; foreach (CRM_Utils_Array::value('values', civicrm_api3('Tag', 'get', $params)) as $id => $tag) { $allTags[$id] = [ - 'text' => $tag['name'], + 'text' => $tag['label'], 'id' => $id, 'description' => $tag['description'] ?? NULL, 'parent_id' => $tag['parent_id'] ?? NULL, @@ -366,8 +366,16 @@ public static function del($id) { */ public static function add(&$params, $ids = []) { $id = $params['id'] ?? $ids['tag'] ?? NULL; - if (!$id && !self::dataExists($params)) { - return NULL; + if (!$id) { + // Make label from name if missing. + if (CRM_Utils_System::isNull($params['label'] ?? NULL)) { + // If name is also missing, cannot create object. + if (CRM_Utils_System::isNull($params['name'] ?? NULL)) { + // FIXME: Throw exception + return NULL; + } + $params['label'] = $params['name']; + } } // Check permission to create or modify reserved tag @@ -401,7 +409,6 @@ public static function add(&$params, $ids = []) { // save creator id and time if (!$id) { $params['created_id'] = $params['created_id'] ?? CRM_Core_Session::getLoggedInContactID(); - $params['created_date'] = $params['created_date'] ?? date('YmdHis'); } $tag = self::writeRecord($params); @@ -422,23 +429,6 @@ public static function add(&$params, $ids = []) { return $tag; } - /** - * Check if there is data to create the object. - * - * @param array $params - * - * @return bool - */ - public static function dataExists($params) { - // Disallow empty values except for the number zero. - // TODO: create a utility for this since it's needed in many places - if (!empty($params['name']) || (string) $params['name'] === '0') { - return TRUE; - } - - return FALSE; - } - /** * Get the tag sets for a entity object. * @@ -450,7 +440,7 @@ public static function dataExists($params) { */ public static function getTagSet($entityTable) { $tagSets = []; - $query = "SELECT name, id FROM civicrm_tag + $query = "SELECT label, id FROM civicrm_tag WHERE is_tagset=1 AND parent_id IS NULL and used_for LIKE %1"; $dao = CRM_Core_DAO::executeQuery($query, [ 1 => [ @@ -459,7 +449,7 @@ public static function getTagSet($entityTable) { ], ], TRUE, NULL, FALSE, FALSE); while ($dao->fetch()) { - $tagSets[$dao->id] = $dao->name; + $tagSets[$dao->id] = $dao->label; } return $tagSets; } diff --git a/CRM/Core/BAO/UFField.php b/CRM/Core/BAO/UFField.php index 88ef83cfe107..0212831e838d 100644 --- a/CRM/Core/BAO/UFField.php +++ b/CRM/Core/BAO/UFField.php @@ -248,7 +248,7 @@ public static function autoWeight($params) { $oldWeight = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFField', !empty($params['id']) ? $params['id'] : $params['field_id'], 'weight', 'id'); } $fieldValues = ['uf_group_id' => !empty($params['uf_group_id']) ? $params['uf_group_id'] : $params['group_id']]; - return CRM_Utils_Weight::updateOtherWeights('CRM_Core_DAO_UFField', $oldWeight, CRM_Utils_Array::value('weight', $params, 0), $fieldValues); + return CRM_Utils_Weight::updateOtherWeights('CRM_Core_DAO_UFField', $oldWeight, $params['weight'] ?? 0, $fieldValues); } /** diff --git a/CRM/Core/BAO/UFGroup.php b/CRM/Core/BAO/UFGroup.php index 645dfcb6d3cd..fae355c2e705 100644 --- a/CRM/Core/BAO/UFGroup.php +++ b/CRM/Core/BAO/UFGroup.php @@ -1808,7 +1808,7 @@ public static function buildProfile( $view = $field['is_view']; $required = ($mode == CRM_Profile_Form::MODE_SEARCH) ? FALSE : $field['is_required']; $search = $mode == CRM_Profile_Form::MODE_SEARCH; - $isShared = CRM_Utils_Array::value('is_shared', $field, 0); + $isShared = $field['is_shared'] ?? 0; // do not display view fields in drupal registration form // CRM-4632 @@ -1958,7 +1958,7 @@ public static function buildProfile( ], $required); } elseif ($fieldName === 'contact_sub_type') { - $gId = $form->get('gid') ? $form->get('gid') : CRM_Utils_Array::value('group_id', $field); + $gId = $form->get('gid') ?: $field['group_id'] ?? NULL; if ($usedFor == 'onbehalf') { $profileType = 'Organization'; } @@ -1992,7 +1992,7 @@ public static function buildProfile( } elseif (in_array($fieldName, CRM_Contact_BAO_Contact::$_greetingTypes)) { // Get contact type for greeting selector - $gId = $form->get('gid') ?: CRM_Utils_Array::value('group_id', $field); + $gId = $form->get('gid') ?: $field['group_id'] ?? NULL; $profileType = CRM_Core_BAO_UFField::getProfileType($gId, TRUE, FALSE, TRUE); if (!$profileType || in_array($profileType, ['Contact', 'Contribution', 'Participant', 'Membership'])) { diff --git a/CRM/Core/BAO/UFMatch.php b/CRM/Core/BAO/UFMatch.php index 5a2406b5c173..6290430fd0d7 100644 --- a/CRM/Core/BAO/UFMatch.php +++ b/CRM/Core/BAO/UFMatch.php @@ -539,8 +539,7 @@ public static function getAllowedToLogin($openId) { } /** - * Get the next unused uf_id value, since the standalone UF doesn't - * have id's (it uses OpenIDs, which go in a different field). + * Get the next unused uf_id value * * @deprecated * @return int diff --git a/CRM/Core/CodeGen/Util/MessageTemplates.php b/CRM/Core/CodeGen/Util/MessageTemplates.php new file mode 100644 index 000000000000..2df31656427e --- /dev/null +++ b/CRM/Core/CodeGen/Util/MessageTemplates.php @@ -0,0 +1,82 @@ + ts('Message Template Workflow for Cases', ['escape' => 'sql']), + 'contribution' => ts('Message Template Workflow for Contributions', ['escape' => 'sql']), + 'event' => ts('Message Template Workflow for Events', ['escape' => 'sql']), + 'friend' => ts('Message Template Workflow for Tell-a-Friend', ['escape' => 'sql']), + 'membership' => ts('Message Template Workflow for Memberships', ['escape' => 'sql']), + 'meta' => ts('Message Template Workflow for Meta Templates', ['escape' => 'sql']), + 'pledge' => ts('Message Template Workflow for Pledges', ['escape' => 'sql']), + 'uf' => ts('Message Template Workflow for Profiles', ['escape' => 'sql']), + 'petition' => ts('Message Template Workflow for Petition', ['escape' => 'sql']), + ]; + $ovNames = [ + 'case' => [ + 'case_activity' => ts('Cases - Send Copy of an Activity', ['escape' => 'sql']), + ], + 'contribution' => [ + 'contribution_dupalert' => ts('Contributions - Duplicate Organization Alert', ['escape' => 'sql']), + 'contribution_offline_receipt' => ts('Contributions - Receipt (off-line)', ['escape' => 'sql']), + 'contribution_online_receipt' => ts('Contributions - Receipt (on-line)', ['escape' => 'sql']), + 'contribution_invoice_receipt' => ts('Contributions - Invoice', ['escape' => 'sql']), + 'contribution_recurring_notify' => ts('Contributions - Recurring Start and End Notification', ['escape' => 'sql']), + 'contribution_recurring_cancelled' => ts('Contributions - Recurring Cancellation Notification', ['escape' => 'sql']), + 'contribution_recurring_billing' => ts('Contributions - Recurring Billing Updates', ['escape' => 'sql']), + 'contribution_recurring_edit' => ts('Contributions - Recurring Updates', ['escape' => 'sql']), + 'pcp_notify' => ts('Personal Campaign Pages - Admin Notification', ['escape' => 'sql']), + 'pcp_status_change' => ts('Personal Campaign Pages - Supporter Status Change Notification', ['escape' => 'sql']), + 'pcp_supporter_notify' => ts('Personal Campaign Pages - Supporter Welcome', ['escape' => 'sql']), + 'pcp_owner_notify' => ts('Personal Campaign Pages - Owner Notification', ['escape' => 'sql']), + 'payment_or_refund_notification' => ts('Additional Payment Receipt or Refund Notification', ['escape' => 'sql']), + ], + 'event' => [ + 'event_offline_receipt' => ts('Events - Registration Confirmation and Receipt (off-line)', ['escape' => 'sql']), + 'event_online_receipt' => ts('Events - Registration Confirmation and Receipt (on-line)', ['escape' => 'sql']), + 'event_registration_receipt' => ts('Events - Receipt only', ['escape' => 'sql']), + 'participant_cancelled' => ts('Events - Registration Cancellation Notice', ['escape' => 'sql']), + 'participant_confirm' => ts('Events - Registration Confirmation Invite', ['escape' => 'sql']), + 'participant_expired' => ts('Events - Pending Registration Expiration Notice', ['escape' => 'sql']), + 'participant_transferred' => ts('Events - Registration Transferred Notice', ['escape' => 'sql']), + ], + 'friend' => [ + 'friend' => ts('Tell-a-Friend Email', ['escape' => 'sql']), + ], + 'membership' => [ + 'membership_offline_receipt' => ts('Memberships - Signup and Renewal Receipts (off-line)', ['escape' => 'sql']), + 'membership_online_receipt' => ts('Memberships - Receipt (on-line)', ['escape' => 'sql']), + 'membership_autorenew_cancelled' => ts('Memberships - Auto-renew Cancellation Notification', ['escape' => 'sql']), + 'membership_autorenew_billing' => ts('Memberships - Auto-renew Billing Updates', ['escape' => 'sql']), + ], + 'meta' => [ + 'test_preview' => ts('Test-drive - Receipt Header', ['escape' => 'sql']), + ], + 'pledge' => [ + 'pledge_acknowledge' => ts('Pledges - Acknowledgement', ['escape' => 'sql']), + 'pledge_reminder' => ts('Pledges - Payment Reminder', ['escape' => 'sql']), + ], + 'uf' => [ + 'uf_notify' => ts('Profiles - Admin Notification', ['escape' => 'sql']), + ], + 'petition' => [ + 'petition_sign' => ts('Petition - signature added', ['escape' => 'sql']), + 'petition_confirmation_needed' => ts('Petition - need verification', ['escape' => 'sql']), + ], + ]; + $smarty->assign('ogNames', $ogNames); + $smarty->assign('ovNames', $ovNames); + $dir = $smarty->get_template_vars()['gencodeXmlDir'] . '/templates/message_templates/sample'; + $templates = []; + foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { + $templates[] = ['name' => basename($filename, '.tpl'), 'filename' => "$dir/$filename"]; + } + $smarty->assign('templates', $templates); + } + +} diff --git a/CRM/Core/CodeGen/Util/Smarty.php b/CRM/Core/CodeGen/Util/Smarty.php index d45989504d55..a1eb1f29c963 100644 --- a/CRM/Core/CodeGen/Util/Smarty.php +++ b/CRM/Core/CodeGen/Util/Smarty.php @@ -59,9 +59,9 @@ public function createSmarty() { require_once 'CRM/Core/Smarty/plugins/block.localize.php'; $smarty->register_block('localize', 'smarty_block_localize'); - $smarty->assign('gencodeXmlDir', dirname(dirname(dirname(dirname(__DIR__)))) . '/xml'); - + require_once 'CRM/Core/CodeGen/Util/MessageTemplates.php'; + CRM_Core_CodeGen_Util_MessageTemplates::assignSmartyVariables($smarty); return $smarty; } diff --git a/CRM/Core/DAO.php b/CRM/Core/DAO.php index bd7147725b03..554d89b11f7e 100644 --- a/CRM/Core/DAO.php +++ b/CRM/Core/DAO.php @@ -780,6 +780,10 @@ public function copyValues($params) { } } elseif (is_array($value) && !empty($field['serialize'])) { + if (!empty($field['pseudoconstant'])) { + // Pseudoconstant implies 1-1 option matching; duplicates would not make sense + $value = array_unique($value); + } $this->$dbName = CRM_Core_DAO::serializeField($value, $field['serialize']); $allNull = FALSE; } @@ -3142,7 +3146,16 @@ protected static function getDynamicFkAclClauses(string $entityTableField, strin // Prevent infinite recursion $subquery = $table === static::getTableName() ? NULL : CRM_Utils_SQL::mergeSubquery($ent); if ($subquery) { - $relatedClauses[] = "= '$table' AND {{$entityIdField}} " . implode(" AND {{$entityIdField}} ", $subquery); + foreach ($subquery as $index => $condition) { + // Join OR clauses + if (is_array($condition)) { + $subquery[$index] = "(({{$entityIdField}} " . implode(") OR ({{$entityIdField}} ", $condition) . '))'; + } + else { + $subquery[$index] = "{{$entityIdField}} $condition"; + } + } + $relatedClauses[] = "= '$table' AND " . implode(" AND ", $subquery); } // If it's the only value with no conditions, don't need to add it elseif (!$entityTableValues || count($relatedEntities) > 1) { diff --git a/CRM/Core/DAO/ActionSchedule.php b/CRM/Core/DAO/ActionSchedule.php index f75590e0648b..1f00ac68b866 100644 --- a/CRM/Core/DAO/ActionSchedule.php +++ b/CRM/Core/DAO/ActionSchedule.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/ActionSchedule.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:7cd61559377e23d6ad4c833616f22a12) + * (GenCodeChecksum:e6121895aa480e9b4fdbf171b01b91dc) */ /** @@ -57,10 +57,10 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { public $id; /** - * Name of the action(reminder) + * Name of the scheduled action * * @var string - * (SQL type: varchar(64)) + * (SQL type: varchar(128)) * Note that values will be retrieved from the database as a string. */ public $name; @@ -491,10 +491,10 @@ public static function &fields() { 'name' => 'name', 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Name'), - 'description' => ts('Name of the action(reminder)'), + 'description' => ts('Name of the scheduled action'), 'required' => TRUE, - 'maxlength' => 64, - 'size' => CRM_Utils_Type::BIG, + 'maxlength' => 128, + 'size' => CRM_Utils_Type::HUGE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, diff --git a/CRM/Core/DAO/AllCoreTables.php b/CRM/Core/DAO/AllCoreTables.php index 4c22ee769bc1..ba28171ba925 100644 --- a/CRM/Core/DAO/AllCoreTables.php +++ b/CRM/Core/DAO/AllCoreTables.php @@ -358,7 +358,7 @@ public static function getTableForClass($className) { * * @param string $briefName * - * @return FALSE|string + * @return string */ public static function getTableForEntityName($briefName): string { self::init(); diff --git a/CRM/Core/DAO/CustomGroup.php b/CRM/Core/DAO/CustomGroup.php index 17c0bd892208..f1efcc5ca554 100644 --- a/CRM/Core/DAO/CustomGroup.php +++ b/CRM/Core/DAO/CustomGroup.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/CustomGroup.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:7a53822fedde32eeb1089f09654a2d88) + * (GenCodeChecksum:05aa9cfdd47acd56178a0a33a2f6ffc1) */ /** @@ -87,7 +87,7 @@ class CRM_Core_DAO_CustomGroup extends CRM_Core_DAO { public $extends; /** - * FK to civicrm_option_value.id (for option group custom_data_type.) + * FK to civicrm_option_value.value (for option group custom_data_type) * * @var int|string|null * (SQL type: int unsigned) @@ -384,6 +384,7 @@ public static function &fields() { 'name', 'label', 'grouping', + 'icon', ], ], 'add' => '1.1', @@ -392,7 +393,7 @@ public static function &fields() { 'name' => 'extends_entity_column_id', 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Custom Group Subtype List'), - 'description' => ts('FK to civicrm_option_value.id (for option group custom_data_type.)'), + 'description' => ts('FK to civicrm_option_value.value (for option group custom_data_type)'), 'usage' => [ 'import' => FALSE, 'export' => FALSE, diff --git a/CRM/Core/DAO/EntityTag.php b/CRM/Core/DAO/EntityTag.php index 3f57d572bdec..df3e79bd2ae8 100644 --- a/CRM/Core/DAO/EntityTag.php +++ b/CRM/Core/DAO/EntityTag.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/EntityTag.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:2fccc138a26fe391325fd641c891cd91) + * (GenCodeChecksum:5bca5ff1c4ba7d85034410408464f0ac) */ /** @@ -200,7 +200,8 @@ public static function &fields() { 'pseudoconstant' => [ 'table' => 'civicrm_tag', 'keyColumn' => 'id', - 'labelColumn' => 'name', + 'labelColumn' => 'label', + 'nameColumn' => 'name', 'condition' => 'is_tagset != 1', ], 'add' => '1.1', diff --git a/CRM/Core/DAO/Managed.php b/CRM/Core/DAO/Managed.php index a82a5cae3619..d23d84643e13 100644 --- a/CRM/Core/DAO/Managed.php +++ b/CRM/Core/DAO/Managed.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Managed.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:1f1273f734c559351767e25b05b3925e) + * (GenCodeChecksum:4ff1b19106d4bc7810d4aa9eb2a73f65) */ /** @@ -40,10 +40,10 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { public $id; /** - * Name of the module which declared this object + * Name of the module which declared this object (soft FK to civicrm_extension.full_name) * * @var string - * (SQL type: varchar(127)) + * (SQL type: varchar(255)) * Note that values will be retrieved from the database as a string. */ public $module; @@ -51,8 +51,8 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { /** * Symbolic name used by the module to identify the object * - * @var string|null - * (SQL type: varchar(127)) + * @var string + * (SQL type: varchar(255)) * Note that values will be retrieved from the database as a string. */ public $name; @@ -67,9 +67,9 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { public $entity_type; /** - * Foreign key to the referenced item. + * Soft foreign key to the referenced item. * - * @var int|string + * @var int|string|null * (SQL type: int unsigned) * Note that values will be retrieved from the database as a string. */ @@ -78,8 +78,8 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { /** * Policy on when to cleanup entity (always, never, unused) * - * @var string|null - * (SQL type: varchar(32)) + * @var string + * (SQL type: varchar(16)) * Note that values will be retrieved from the database as a string. */ public $cleanup; @@ -146,9 +146,9 @@ public static function &fields() { 'name' => 'module', 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Module'), - 'description' => ts('Name of the module which declared this object'), + 'description' => ts('Name of the module which declared this object (soft FK to civicrm_extension.full_name)'), 'required' => TRUE, - 'maxlength' => 127, + 'maxlength' => 255, 'size' => CRM_Utils_Type::HUGE, 'usage' => [ 'import' => FALSE, @@ -161,6 +161,9 @@ public static function &fields() { 'entity' => 'Managed', 'bao' => 'CRM_Core_BAO_Managed', 'localizable' => 0, + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_BAO_Managed::getBaseModules', + ], 'add' => '4.2', ], 'name' => [ @@ -168,7 +171,8 @@ public static function &fields() { 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Name'), 'description' => ts('Symbolic name used by the module to identify the object'), - 'maxlength' => 127, + 'required' => TRUE, + 'maxlength' => 255, 'size' => CRM_Utils_Type::HUGE, 'usage' => [ 'import' => FALSE, @@ -208,8 +212,7 @@ public static function &fields() { 'name' => 'entity_id', 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Entity ID'), - 'description' => ts('Foreign key to the referenced item.'), - 'required' => TRUE, + 'description' => ts('Soft foreign key to the referenced item.'), 'usage' => [ 'import' => FALSE, 'export' => FALSE, @@ -228,8 +231,9 @@ public static function &fields() { 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Cleanup Setting'), 'description' => ts('Policy on when to cleanup entity (always, never, unused)'), - 'maxlength' => 32, - 'size' => CRM_Utils_Type::MEDIUM, + 'required' => TRUE, + 'maxlength' => 16, + 'size' => CRM_Utils_Type::TWELVE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, @@ -237,6 +241,7 @@ public static function &fields() { 'token' => FALSE, ], 'where' => 'civicrm_managed.cleanup', + 'default' => 'always', 'table_name' => 'civicrm_managed', 'entity' => 'Managed', 'bao' => 'CRM_Core_BAO_Managed', diff --git a/CRM/Core/DAO/MessageTemplate.php b/CRM/Core/DAO/MessageTemplate.php index b39d92c08373..fd7f5cafd221 100644 --- a/CRM/Core/DAO/MessageTemplate.php +++ b/CRM/Core/DAO/MessageTemplate.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/MessageTemplate.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:65e3ae090a60b085f252019d3d113ceb) + * (GenCodeChecksum:6dc7072586d725f18dd3c984091820f0) */ /** @@ -23,6 +23,13 @@ class CRM_Core_DAO_MessageTemplate extends CRM_Core_DAO { */ public static $_tableName = 'civicrm_msg_template'; + /** + * Field to show when displaying a record. + * + * @var string + */ + public static $_labelField = 'msg_title'; + /** * Should CiviCRM log any modifications to this table in the civicrm_log table. * diff --git a/CRM/Core/DAO/Note.php b/CRM/Core/DAO/Note.php index dff8197327fd..5fa11086cafb 100644 --- a/CRM/Core/DAO/Note.php +++ b/CRM/Core/DAO/Note.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Note.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:c04c2c1404af638e1adf973fe845d0ac) + * (GenCodeChecksum:9036c8c92bb1abbbd67b08f5c06f7ea3) */ /** @@ -37,6 +37,18 @@ class CRM_Core_DAO_Note extends CRM_Core_DAO { */ public static $_log = TRUE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/note?reset=1&action=add&entity_table=[entity_table]&entity_id=[entity_id]', + 'view' => 'civicrm/note?reset=1&action=view&id=[id]', + 'update' => 'civicrm/note?reset=1&action=update&id=[id]', + 'delete' => 'civicrm/note?reset=1&action=delete&id=[id]', + ]; + /** * Note ID * diff --git a/CRM/Core/DAO/Tag.php b/CRM/Core/DAO/Tag.php index b84fa0d5e4e1..b6c5a2f1a4d4 100644 --- a/CRM/Core/DAO/Tag.php +++ b/CRM/Core/DAO/Tag.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Tag.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:f8d8698f48fbd60b8d8e0bf8eff40c47) + * (GenCodeChecksum:ded9d6a9f9c08146a0205da83c838c91) */ /** @@ -35,7 +35,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { * * @var string */ - public static $_labelField = 'name'; + public static $_labelField = 'label'; /** * Should CiviCRM log any modifications to this table in the civicrm_log table. @@ -54,7 +54,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { public $id; /** - * Name of Tag. + * Unique machine name * * @var string * (SQL type: varchar(64)) @@ -62,6 +62,15 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { */ public $name; + /** + * User-facing tag name + * + * @var string + * (SQL type: varchar(64)) + * Note that values will be retrieved from the database as a string. + */ + public $label; + /** * Optional verbose description of the tag. * @@ -206,7 +215,7 @@ public static function &fields() { 'name' => 'name', 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Tag Name'), - 'description' => ts('Name of Tag.'), + 'description' => ts('Unique machine name'), 'required' => TRUE, 'maxlength' => 64, 'size' => CRM_Utils_Type::BIG, @@ -223,6 +232,30 @@ public static function &fields() { 'localizable' => 0, 'add' => '1.1', ], + 'label' => [ + 'name' => 'label', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Tag Label'), + 'description' => ts('User-facing tag name'), + 'required' => TRUE, + 'maxlength' => 64, + 'size' => CRM_Utils_Type::BIG, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_tag.label', + 'table_name' => 'civicrm_tag', + 'entity' => 'Tag', + 'bao' => 'CRM_Core_BAO_Tag', + 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], + 'add' => '5.68', + ], 'description' => [ 'name' => 'description', 'type' => CRM_Utils_Type::T_STRING, @@ -267,7 +300,8 @@ public static function &fields() { 'pseudoconstant' => [ 'table' => 'civicrm_tag', 'keyColumn' => 'id', - 'labelColumn' => 'name', + 'labelColumn' => 'label', + 'nameColumn' => 'name', ], 'add' => '1.1', ], @@ -375,6 +409,7 @@ public static function &fields() { 'localizable' => 0, 'FKClassName' => 'CRM_Contact_DAO_Contact', 'html' => [ + 'type' => 'EntityRef', 'label' => ts("Created By"), ], 'add' => '3.4', @@ -412,10 +447,17 @@ public static function &fields() { 'token' => FALSE, ], 'where' => 'civicrm_tag.created_date', + 'default' => 'CURRENT_TIMESTAMP', 'table_name' => 'civicrm_tag', 'entity' => 'Tag', 'bao' => 'CRM_Core_BAO_Tag', 'localizable' => 0, + 'html' => [ + 'type' => 'Select Date', + 'formatType' => 'activityDateTime', + 'label' => ts("Created Date"), + ], + 'readonly' => TRUE, 'add' => '3.4', ], ]; diff --git a/CRM/Core/DAO/UFMatch.php b/CRM/Core/DAO/UFMatch.php index 38744177fa9a..aaa71a8278f2 100644 --- a/CRM/Core/DAO/UFMatch.php +++ b/CRM/Core/DAO/UFMatch.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/UFMatch.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:03d955dcec4176dec67ec9fbc818e490) + * (GenCodeChecksum:ddf0ceeb22715a1ee0b7b93c90df31f2) */ /** @@ -214,7 +214,7 @@ public static function &fields() { 'entity' => 'UFMatch', 'bao' => 'CRM_Core_BAO_UFMatch', 'localizable' => 0, - 'add' => '1.9.kabissa', + 'add' => '1.9', ], 'contact_id' => [ 'name' => 'contact_id', diff --git a/CRM/Core/EntityTokens.php b/CRM/Core/EntityTokens.php index 070b903b0183..ce76c40e2350 100644 --- a/CRM/Core/EntityTokens.php +++ b/CRM/Core/EntityTokens.php @@ -99,7 +99,7 @@ public function evaluateToken(TokenRow $row, $entity, $field, $prefetch = NULL) $fieldValue = $this->getFieldValue($row, $field); if (is_array($fieldValue)) { // eg. role_id for participant would be an array here. - $fieldValue = implode(',', $fieldValue); + $fieldValue = implode(', ', $fieldValue); } if ($this->isPseudoField($field)) { @@ -701,4 +701,35 @@ protected function getCacheKey(): string { return $cacheKey; } + /** + * Get metadata for tokens for a related entity joined by a field on the main entity. + * + * @param string $entity + * @param string $joinField + * @param array $tokenList + * @param array $hiddenTokens + * + * @return array + * @throws \CRM_Core_Exception + */ + protected function getRelatedTokensForEntity(string $entity, string $joinField, array $tokenList, $hiddenTokens = []): array { + $apiParams = ['checkPermissions' => FALSE]; + if ($tokenList !== ['*']) { + $apiParams['where'] = [['name', 'IN', $tokenList]]; + } + $relatedTokens = civicrm_api4($entity, 'getFields', $apiParams); + $tokens = []; + foreach ($relatedTokens as $relatedToken) { + $tokens[$joinField . '.' . $relatedToken['name']] = [ + 'title' => $relatedToken['title'], + 'name' => $joinField . '.' . $relatedToken['name'], + 'type' => 'mapped', + 'data_type' => $relatedToken['data_type'], + 'input_type' => $relatedToken['input_type'], + 'audience' => in_array($relatedToken['name'], $hiddenTokens, TRUE) ? 'hidden' : 'user', + ]; + } + return $tokens; + } + } diff --git a/CRM/Core/Error.php b/CRM/Core/Error.php index fd6ae04c1475..bdc6e6d03e8d 100644 --- a/CRM/Core/Error.php +++ b/CRM/Core/Error.php @@ -655,7 +655,9 @@ public static function debug_query_result($query) { */ public static function createDebugLogger($prefix = '') { self::generateLogFileName($prefix); - return Log::singleton('file', \Civi::$statics[__CLASS__]['logger_file' . $prefix], ''); + return Log::singleton('file', \Civi::$statics[__CLASS__]['logger_file' . $prefix], '', [ + 'timeFormat' => '%Y-%m-%d %H:%M:%S%z', + ]); } /** diff --git a/CRM/Core/Form.php b/CRM/Core/Form.php index d0f17d883d0e..2172fff642a1 100644 --- a/CRM/Core/Form.php +++ b/CRM/Core/Form.php @@ -202,6 +202,10 @@ public function getContext() { * to combine fields from the various screens & save the resulting 'submitted_values' * to the UserJob. * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * * @return array */ public function getSubmittedValues(): array { @@ -219,6 +223,10 @@ public function getSubmittedValues(): array { * Contribution_Main and Contribution_Confirm) accessible you can override * this function as CRM_Import_Forms does. * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * * @return string[] */ protected function getSubmittableFields(): array { @@ -478,13 +486,9 @@ public function &add( // Like select but accepts rich array data (with nesting, colors, icons, etc) as option list. if ($inputType === 'select2') { $type = 'text'; - $options = []; - foreach ($attributes as $option) { - // Transform options from api4.getFields format - $option['text'] = $option['text'] ?? $option['label']; - unset($option['label']); - $options[] = $option; - } + // Options stored in $attributes. Transform from api4.getFields format if needed. + $options = CRM_Utils_Array::formatForSelect2($attributes ?: []); + // Attributes stored in $extra $attributes = ($extra ?: []) + ['class' => '']; $attributes['class'] = ltrim($attributes['class'] . ' crm-select2 crm-form-select2'); $attributes['data-select-params'] = json_encode(['data' => $options, 'multiple' => !empty($attributes['multiple'])]); @@ -785,7 +789,7 @@ public function addButtons($params) { $this->submitOnce = TRUE; } - $attrs = ['class' => 'crm-form-submit'] + (array) CRM_Utils_Array::value('js', $button); + $attrs = ['class' => 'crm-form-submit'] + ($button['js'] ?? []); // A lot of forms use the hacky method of looking at // `$params['button name']` (dating back to them being inputs with a @@ -1840,7 +1844,7 @@ public function addField($name, $props = [], $required = FALSE, $legacyDate = TR } if ($context == 'search') { $widget = $widget == 'Select2' ? $widget : 'Select'; - $props['multiple'] = CRM_Utils_Array::value('multiple', $props, TRUE); + $props['multiple'] = $props['multiple'] ?? TRUE; } elseif (!empty($fieldSpec['serialize'])) { $props['multiple'] = TRUE; @@ -3004,6 +3008,8 @@ public function setSelectedChild($default = NULL) { * they have permission to (setContactID does do that) and can be used to check if the user is * accessing their own record. * + * @deprecated use getAuthenticatedContactID() + * * @return int|false * @throws \CRM_Core_Exception */ @@ -3020,14 +3026,20 @@ protected function getContactIDIfAccessingOwnRecord() { } /** - * Get values submitted by the user. + * Get value submitted by the user. * * These values have been validated against the fields added to the form. * https://pear.php.net/manual/en/package.html.html-quickform.html-quickform.exportvalues.php * + * Any money processing has also been done. + * * @param string $fieldName * * @return mixed|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. */ public function getSubmittedValue(string $fieldName) { if (empty($this->exportedValues)) { @@ -3037,6 +3049,15 @@ public function getSubmittedValue(string $fieldName) { if (in_array($fieldName, $this->submittableMoneyFields, TRUE)) { return CRM_Utils_Rule::cleanMoney($value); } + else { + // Numeric fields are not in submittableMoneyFields (for now) + $fieldRules = $this->_rules[$fieldName] ?? []; + foreach ($fieldRules as $rule) { + if ('money' === $rule['type']) { + return CRM_Utils_Rule::cleanMoney($value); + } + } + } return $value; } diff --git a/CRM/Core/Form/EntityFormTrait.php b/CRM/Core/Form/EntityFormTrait.php index f6173a4e640e..3941da88d68c 100644 --- a/CRM/Core/Form/EntityFormTrait.php +++ b/CRM/Core/Form/EntityFormTrait.php @@ -176,11 +176,9 @@ public function buildQuickEntityForm() { $this->entityFields[$index] = array_replace_recursive([ 'template' => '', 'help' => ['id' => '', 'file' => ''], - 'pre_html_text' => '', 'post_html_text' => '', 'description' => '', 'documentation_link' => ['page' => '', 'resource' => ''], - 'place_holder' => '', ], $fields); } $this->assign('entityFields', $this->entityFields); diff --git a/CRM/Core/Form/RecurringEntity.php b/CRM/Core/Form/RecurringEntity.php index 6390726a755f..ce86c7a42ab2 100644 --- a/CRM/Core/Form/RecurringEntity.php +++ b/CRM/Core/Form/RecurringEntity.php @@ -20,6 +20,12 @@ * This class generates form components for processing Entity. */ class CRM_Core_Form_RecurringEntity { + + private static $preDeleteFunction = [ + 'Event' => 'CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents', + 'Activity' => NULL, + ]; + /** * Current entity id * @var int @@ -317,6 +323,7 @@ public static function formRule($values) { * * @param array $params * @param string $type + * Redundant - always the same as `$params['entity_table']` * @param array $linkedEntities * * @throws \CRM_Core_Exception @@ -393,59 +400,22 @@ public static function postProcess($params, $type, $linkedEntities = []) { } } - // FIXME: This is the worst way possible to convert a table name to an api entity name - $apiEntityType = explode("_", $type); - if (!empty($apiEntityType[1])) { - $apiType = $apiEntityType[1]; - } - //Delete relations if any from recurring entity tables before inserting new relations for this entity id + // Delete relations if any from recurring entity tables before inserting new relations for this entity id if ($params['entity_id']) { - //If entity has any pre delete function, consider that first - if (!empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['pre_delete_func']) && - !empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['helper_class']) - ) { - // FIXME: This calls `CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents` - // which then sets the static variable `CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted` - // which is then accessed below and used to delete events with no registrations. - // I can't think of a worse way to pass a variable back from a function. - call_user_func_array(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['pre_delete_func'], [$params['entity_id']]); + $entityType = CRM_Core_DAO_AllCoreTables::getEntityNameForTable($type); + // Use pre-delete function for events to exclude those with registered participants + if (!empty(self::$preDeleteFunction[$entityType])) { + $itemsToDelete = call_user_func_array(self::$preDeleteFunction[$entityType], [$params['entity_id']]); } - //Ready to execute delete on entities if it has delete function set - if (!empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['delete_func']) && - !empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['helper_class']) - ) { - //Check if pre delete function has some ids to be deleted - if (!empty(CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted)) { - foreach (CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted as $eid) { - $result = civicrm_api3( - ucfirst(strtolower($apiType)), - CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['delete_func'], - [ - 'sequential' => 1, - 'id' => $eid, - ] - ); - if ($result['error']) { - CRM_Core_Error::statusBounce(ts('Error creating recurring list')); - } - } - } - else { - $getRelatedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesFor($params['entity_id'], $params['entity_table'], FALSE); - foreach ($getRelatedEntities as $key => $value) { - $result = civicrm_api3( - ucfirst(strtolower($apiType)), - CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['delete_func'], - [ - 'sequential' => 1, - 'id' => $value['id'], - ] - ); - if ($result['error']) { - CRM_Core_Error::statusBounce(ts('Error creating recurring list')); - } - } - } + else { + $getRelatedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesFor($params['entity_id'], $params['entity_table'], FALSE); + $itemsToDelete = array_column($getRelatedEntities, 'id'); + } + if ($itemsToDelete) { + civicrm_api4($entityType, 'delete', [ + 'checkPermissions' => FALSE, + 'where' => [['id', 'IN', $itemsToDelete]], + ]); } // find all entities from the recurring set. At this point we 'll get entities which were not deleted diff --git a/CRM/Core/Form/Renderer.php b/CRM/Core/Form/Renderer.php index 92e23e7a505e..11f40d86ed84 100644 --- a/CRM/Core/Form/Renderer.php +++ b/CRM/Core/Form/Renderer.php @@ -217,6 +217,34 @@ public static function updateAttributes(&$element, $required, $error) { $element->updateAttributes($attributes); } + /** + * Process an template sourced in a string with Smarty + * + * This overrides the quick form function which has not been updated in a while. + * + * The function is called when render the code to mark a field as 'required' + * + * The notes on the quick form function seem to refer to older smarty - ie: + * Smarty has no core function to render a template given as a string. + * So we use the smarty eval plugin function to do this. + * + * @param string $tplSource The template source + */ + public function _tplFetch($tplSource) { + // Smarty3 does not have this function defined so the parent fails. + // Adding this is preparatory to smarty 3.... + if (!function_exists('smarty_function_eval') && !file_exists(SMARTY_DIR . '/plugins/function.eval.php')) { + $smarty = $this->_tpl; + $smarty->assign('var', $tplSource); + return $smarty->fetch("string:$tplSource"); + } + // This part is what the parent does & is suitable to Smarty 2. + if (!function_exists('smarty_function_eval')) { + require SMARTY_DIR . '/plugins/function.eval.php'; + } + return smarty_function_eval(['var' => $tplSource], $this->_tpl); + } + /** * Convert IDs to values and format for display. * diff --git a/CRM/Core/ManagedEntities.php b/CRM/Core/ManagedEntities.php index c6bc824419f1..09ea4c76a247 100644 --- a/CRM/Core/ManagedEntities.php +++ b/CRM/Core/ManagedEntities.php @@ -1,6 +1,7 @@ value properties of CRM_Core_DAO_Managed used to match an existing record + * @param string $entityType + * @param $entityId + * @return bool */ - public function revert(array $params) { + public function revert(string $entityType, $entityId): bool { $mgd = new \CRM_Core_DAO_Managed(); - $mgd->copyValues($params); + $mgd->entity_type = $entityType; + $mgd->entity_id = $entityId; $mgd->find(TRUE); $declarations = $this->getDeclarations([$mgd->module]); $declarations = CRM_Utils_Array::findAll($declarations, [ @@ -130,12 +133,39 @@ public function revert(array $params) { 'entity' => $mgd->entity_type, ]); if ($mgd->id && isset($declarations[0])) { - $this->updateExistingEntity(['update' => 'always'] + $declarations[0] + $mgd->toArray()); + $item = ['update' => 'always'] + $declarations[0] + $mgd->toArray(); + $this->backfillDefaults($item); + $this->updateExistingEntity($item); return TRUE; } return FALSE; } + /** + * Backfill default values to restore record to a pristine state + * + * @param array $item Managed APIv4 record + */ + private function backfillDefaults(array &$item): void { + if ($item['params']['version'] != 4) { + return; + } + // Fetch default values for fields that are writeable + $condition = [['type', '=', 'Field'], ['readonly', 'IS EMPTY'], ['default_value', '!=', 'now']]; + // Exclude "weight" as that auto-adjusts + if (CoreUtil::isType($item['entity_type'], 'SortableEntity')) { + $weightCol = CoreUtil::getInfoItem($item['entity_type'], 'order_by'); + $condition[] = ['name', '!=', $weightCol]; + } + $getFields = civicrm_api4($item['entity_type'], 'getFields', [ + 'checkPermissions' => FALSE, + 'action' => 'create', + 'where' => $condition, + ]); + $defaultValues = $getFields->indexBy('name')->column('default_value'); + $item['params']['values'] += $defaultValues; + } + /** * Take appropriate action on every managed entity. * @@ -170,12 +200,18 @@ private function filterPlanByAction(array $plan, string $action): array { } /** - * Create a new entity. + * Create a new entity (if policy allows). * * @param array $item * Entity specification (per hook_civicrm_managedEntities). */ protected function insertNewEntity(array $item) { + // If entity has previously been created, only re-insert if 'update' policy is 'always' + // NOTE: $item[id] is the id of the `civicrm_managed` row not the entity itself + // If that id exists, then we know the entity was inserted previously and subsequently deleted. + if (!empty($item['id']) && $item['update'] !== 'always') { + return; + } $params = $item['params']; // APIv4 if ($params['version'] == 4) { @@ -203,11 +239,13 @@ protected function insertNewEntity(array $item) { } $dao = new CRM_Core_DAO_Managed(); + // If re-inserting the entity, we'll update instead of create the managed record. + $dao->id = $item['id'] ?? NULL; $dao->module = $item['module']; $dao->name = $item['name']; $dao->entity_type = $item['entity_type']; $dao->entity_id = $id; - $dao->cleanup = $item['cleanup'] ?? NULL; + $dao->cleanup = $item['cleanup'] ?? 'always'; $dao->save(); } @@ -261,7 +299,13 @@ private function updateExistingEntity(array $item) { } elseif ($doUpdate && $item['params']['version'] == 4) { $params = ['checkPermissions' => FALSE] + $item['params']; - $params['values']['id'] = $item['entity_id']; + $idField = CoreUtil::getIdFieldName($item['entity_type']); + $params['values'][$idField] = $item['entity_id']; + // Exclude "weight" as that auto-adjusts + if (CoreUtil::isType($item['entity_type'], 'SortableEntity')) { + $weightCol = CoreUtil::getInfoItem($item['entity_type'], 'order_by'); + unset($params['values'][$weightCol]); + } // 'match' param doesn't apply to "update" action unset($params['match']); try { @@ -332,7 +376,7 @@ protected function removeStaleEntity(array $item) { case 'unused': if (CRM_Core_BAO_Managed::isApi4ManagedType($item['entity_type'])) { - $getRefCount = \Civi\Api4\Utils\CoreUtil::getRefCount($item['entity_type'], $item['entity_id']); + $getRefCount = CoreUtil::getRefCount($item['entity_type'], $item['entity_id']); } else { $getRefCount = civicrm_api3($item['entity_type'], 'getrefcount', [ @@ -399,30 +443,6 @@ protected function createModuleIndex($modules) { return $result; } - /** - * @param array $moduleIndex - * @param array $declarations - * - * @return array - * indexed by module,name - */ - protected function createDeclarationIndex($moduleIndex, $declarations) { - $result = []; - if (!isset($moduleIndex[TRUE])) { - return $result; - } - foreach ($moduleIndex[TRUE] as $moduleName => $module) { - if ($module->is_active) { - // need an empty array() for all active modules, even if there are no current $declarations - $result[$moduleName] = []; - } - } - foreach ($declarations as $declaration) { - $result[$declaration['module']][$declaration['name']] = $declaration; - } - return $result; - } - /** * @param array $declarations * @@ -555,29 +575,20 @@ protected function createPlan(array $declarations, $modules = NULL): array { $plan = []; foreach ($managedEntities as $managedEntity) { $key = "{$managedEntity['module']}_{$managedEntity['name']}_{$managedEntity['entity_type']}"; - // Set to disable or delete if module is disabled or missing - it will be overwritten below module is active. + // Set to disable or delete if module is disabled or missing - it will be overwritten below if module is active. $action = $this->isModuleDisabled($managedEntity['module']) ? 'disable' : 'delete'; $plan[$key] = array_merge($managedEntity, ['managed_action' => $action]); } foreach ($declarations as $declaration) { $key = "{$declaration['module']}_{$declaration['name']}_{$declaration['entity']}"; - if (isset($plan[$key])) { - $plan[$key]['params'] = $declaration['params']; - $plan[$key]['managed_action'] = 'update'; - $plan[$key]['cleanup'] = $declaration['cleanup'] ?? NULL; - $plan[$key]['update'] = $declaration['update'] ?? 'always'; - } - else { - $plan[$key] = [ - 'module' => $declaration['module'], - 'name' => $declaration['name'], - 'entity_type' => $declaration['entity'], - 'managed_action' => 'create', - 'params' => $declaration['params'], - 'cleanup' => $declaration['cleanup'] ?? NULL, - 'update' => $declaration['update'] ?? 'always', - ]; - } + // Set action to update if already managed + $plan[$key]['managed_action'] = empty($plan[$key]['entity_id']) ? 'create' : 'update'; + $plan[$key]['module'] = $declaration['module']; + $plan[$key]['name'] = $declaration['name']; + $plan[$key]['entity_type'] = $declaration['entity']; + $plan[$key]['params'] = $declaration['params']; + $plan[$key]['cleanup'] = $declaration['cleanup'] ?? NULL; + $plan[$key]['update'] = $declaration['update'] ?? 'always'; } return $plan; } diff --git a/CRM/Core/OptionValue.php b/CRM/Core/OptionValue.php index 95662e6bd4b9..89f45a28da2a 100644 --- a/CRM/Core/OptionValue.php +++ b/CRM/Core/OptionValue.php @@ -181,7 +181,7 @@ public static function getRows($groupParams, $links, $orderBy = 'weight', $skipE * */ public static function addOptionValue(&$params, $optionGroupName, $action, $optionValueID) { - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; // checking if the group name with the given id or name (in $groupParams) exists $groupParams = ['name' => $optionGroupName, 'is_active' => 1]; $optionGroup = CRM_Core_BAO_OptionGroup::retrieve($groupParams, $defaults); diff --git a/CRM/Core/Page.php b/CRM/Core/Page.php index 41a8a57c693a..bfe554070fc6 100644 --- a/CRM/Core/Page.php +++ b/CRM/Core/Page.php @@ -132,6 +132,8 @@ class CRM_Core_Page { // in 'body.tpl 'suppressForm', 'beginHookFormElements', + // This is checked in validate.tpl + 'snippet_type', ]; /** diff --git a/CRM/Core/Page/Redirect.php b/CRM/Core/Page/Redirect.php index 4f0b83dde4b6..3977e5ad3389 100644 --- a/CRM/Core/Page/Redirect.php +++ b/CRM/Core/Page/Redirect.php @@ -55,7 +55,7 @@ public static function createUrl($requestPath, $requestArgs, $pageArgs, $absolut $urlParts = parse_url($urlString); $url = CRM_Utils_System::url( $urlParts['path'], - CRM_Utils_Array::value('query', $urlParts, NULL), + $urlParts['query'] ?? NULL, $absolute, CRM_Utils_Array::value('fragment', $urlParts, NULL) ); diff --git a/CRM/Core/Payment.php b/CRM/Core/Payment.php index 0453ac8ad712..9e0f2a33a87e 100644 --- a/CRM/Core/Payment.php +++ b/CRM/Core/Payment.php @@ -591,6 +591,24 @@ public function getText($context, $params) { case 'contributionPageContinueText': return ts('Click the Continue button to proceed with the payment.'); + case 'contributionPageConfirmText': + if ($params['amount'] <= 0.0) { + return ''; + } + if ((int) $this->_paymentProcessor['billing_mode'] !== 4) { + return ts('Your contribution will not be completed until you click the %1 button. Please click the button one time only.', [1 => ts('Make Contribution')]); + } + return ''; + + case 'contributionPageButtonText': + if ($params['amount'] <= 0.0 || (int) $this->_paymentProcessor['billing_mode'] === 4) { + return ts('Continue'); + } + if ($params['is_payment_to_existing']) { + return ts('Make Payment'); + } + return ts('Make Contribution'); + case 'cancelRecurDetailText': if ($params['mode'] === 'auto_renew') { return ts('Click the button below if you want to cancel the auto-renewal option for your %1 membership. This will not cancel your membership. However you will need to arrange payment for renewal when your membership expires.', diff --git a/CRM/Core/Payment/Manual.php b/CRM/Core/Payment/Manual.php index 07a008c0ec37..26b348638b24 100644 --- a/CRM/Core/Payment/Manual.php +++ b/CRM/Core/Payment/Manual.php @@ -272,13 +272,16 @@ public function isSendReceiptForPending() { * * @return string */ - public function getText($context, $params) { + public function getText($context, $params): string { switch ($context) { case 'contributionPageContinueText': - if ($params['amount'] <= 0) { - return ts('To complete this transaction, click the Continue button below.'); - } - return ts('To complete your contribution, click the Continue button below.'); + return ''; + + case 'contributionPageButtonText': + return ts('Continue'); + + case 'contributionPageConfirmText': + return ''; default: return parent::getText($context, $params); diff --git a/CRM/Core/Payment/PayPalIPN.php b/CRM/Core/Payment/PayPalIPN.php index 23be16e1afd0..232cad6e9f21 100644 --- a/CRM/Core/Payment/PayPalIPN.php +++ b/CRM/Core/Payment/PayPalIPN.php @@ -430,7 +430,7 @@ protected function getContribution(): CRM_Contribute_BAO_Contribution { $this->contribution = new CRM_Contribute_BAO_Contribution(); $this->contribution->id = $this->getContributionID(); if (!$this->contribution->find(TRUE)) { - throw new CRM_Core_Exception('Failure: Could not find contribution record for ' . (int) $contribution->id, NULL, ['context' => "Could not find contribution record: {$contribution->id} in IPN request: "]); + throw new CRM_Core_Exception('Failure: Could not find contribution record for ' . (int) $this->contribution->id, NULL, ['context' => "Could not find contribution record: {$this->contribution->id} in IPN request: "]); } if ((int) $this->contribution->contact_id !== $this->getContactID()) { CRM_Core_Error::debug_log_message("Contact ID in IPN not found but contact_id found in contribution."); diff --git a/CRM/Core/Payment/PayPalProIPN.php b/CRM/Core/Payment/PayPalProIPN.php index 2106e136d425..61460ca9c33d 100644 --- a/CRM/Core/Payment/PayPalProIPN.php +++ b/CRM/Core/Payment/PayPalProIPN.php @@ -228,60 +228,29 @@ public function recur(array $input): void { $first = !$this->isContributionCompleted(); $recur = $this->getContributionRecurObject(); if (!isset($input['txnType'])) { - Civi::log()->debug('PayPalProIPN: Could not find txn_type in input request.'); + Civi::log('paypal_pro')->debug('PayPalProIPN: Could not find txn_type in input request.'); echo 'Failure: Invalid parameters

'; return; } - // make sure the invoice ids match - // make sure the invoice is valid and matches what we have in - // the contribution record - if ($recur->invoice_id != $input['invoice']) { - Civi::log()->debug('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']; - return; - } - $now = date('YmdHis'); - $sendNotification = FALSE; - $subscriptionPaymentStatus = NULL; - //List of Transaction Type - /* - recurring_payment_profile_created RP Profile Created - recurring_payment RP Successful Payment - recurring_payment_failed RP Failed Payment - recurring_payment_profile_cancel RP Profile Cancelled - recurring_payment_expired RP Profile Expired - recurring_payment_skipped RP Profile Skipped - recurring_payment_outstanding_payment RP Successful Outstanding Payment - recurring_payment_outstanding_payment_failed RP Failed Outstanding Payment - recurring_payment_suspended RP Profile Suspended - recurring_payment_suspended_due_to_max_failed_payment RP Profile Suspended due to Max Failed Payment - */ - - //set transaction type $txnType = $this->retrieve('txn_type', 'String'); - //Changes for paypal pro recurring payment + switch ($txnType) { case 'recurring_payment_profile_created': - if (in_array(CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', $recur->contribution_status_id), [ - 'Pending', 'In Progress', - ], TRUE) - && !empty($recur->processor_id) + if (CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', $recur->contribution_status_id) === 'In Progress' ) { - echo 'already handled'; + Civi::log('paypal_pro')->debug('already handled'); return; } - $recur->create_date = $now; - $recur->contribution_status_id = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Pending'); - $recur->processor_id = $this->retrieve('recurring_payment_id', 'String'); - $recur->trxn_id = $recur->processor_id; - $subscriptionPaymentStatus = CRM_Core_Payment::RECURRING_PAYMENT_START; - $sendNotification = TRUE; - break; + $this->processProfileCreated(); + return; case 'recurring_payment': + $recur->processor_id = $this->retrieve('recurring_payment_id', 'String'); + $recur->trxn_id = $recur->processor_id; + $recur->save(); if (!$first) { if ($input['paymentStatus'] !== 'Completed') { throw new CRM_Core_Exception('Ignore all IPN payments that are not completed'); @@ -306,29 +275,18 @@ public function recur(array $input): void { } $recur->contribution_status_id = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Completed'); $recur->end_date = $now; - $sendNotification = TRUE; - $subscriptionPaymentStatus = CRM_Core_Payment::RECURRING_PAYMENT_END; + $recur->save(); + //send recurring Notification email for user + CRM_Contribute_BAO_ContributionPage::recurringNotify( + $this->getContributionID(), + CRM_Core_Payment::RECURRING_PAYMENT_END, + $recur + ); } - + $this->single($input); break; } - $recur->save(); - - if ($sendNotification) { - //send recurring Notification email for user - CRM_Contribute_BAO_ContributionPage::recurringNotify( - $this->getContributionID(), - $subscriptionPaymentStatus, - $recur - ); - } - - if ($txnType !== 'recurring_payment') { - return; - } - - $this->single($input); } /** @@ -355,11 +313,11 @@ protected function single(array $input): void { 'cancel_date' => 'now', 'contribution_status_id:name' => 'Failed', ])->addWhere('id', '=', $this->getContributionID())->execute(); - Civi::log()->debug('Setting contribution status to Failed'); + Civi::log('paypal_pro')->debug('Setting contribution status to Failed'); return; } if ($status === 'Pending') { - Civi::log()->debug('Returning since contribution status is Pending'); + Civi::log('paypal_pro')->debug('Returning since contribution status is Pending'); return; } if ($status === 'Refunded' || $status === 'Reversed') { @@ -367,16 +325,16 @@ protected function single(array $input): void { 'cancel_date' => 'now', 'contribution_status_id:name' => 'Cancelled', ])->addWhere('id', '=', $this->getContributionID())->execute(); - Civi::log()->debug('Setting contribution status to Cancelled'); + Civi::log('paypal_pro')->debug('Setting contribution status to Cancelled'); return; } if ($status !== 'Completed') { - Civi::log()->debug('Returning since contribution status is not handled'); + Civi::log('paypal_pro')->debug('Returning since contribution status is not handled'); return; } if ($this->isContributionCompleted()) { - Civi::log()->debug('PayPalProIPN: Returning since contribution has already been handled.'); + Civi::log('paypal_pro')->debug('PayPalProIPN: Returning since contribution has already been handled.'); echo 'Success: Contribution has already been handled

'; return; } @@ -396,7 +354,7 @@ public function getPayPalPaymentProcessorID() { // entirely). The only thing the IPN class should really do is extract data from the request, validate it // & call completetransaction or call fail? (which may not exist yet). - Civi::log()->warning('Unreliable method used to get payment_processor_id for PayPal Pro IPN - this will cause problems if you have more than one instance'); + Civi::log('paypal_pro')->warning('Unreliable method used to get payment_processor_id for PayPal Pro IPN - this will cause problems if you have more than one instance'); $paymentProcessorTypeID = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessorType', 'PayPal', 'id', 'name' @@ -449,7 +407,7 @@ public function main(): void { $this->single($input); } catch (Exception $e) { - Civi::log()->debug($e->getMessage() . ' input {input}', ['input' => $input]); + Civi::log('paypal_pro')->debug($e->getMessage() . ' input {input}', ['input' => $input]); echo 'Invalid or missing data'; } } @@ -561,6 +519,15 @@ protected function getContributionRecurObject(): CRM_Contribute_BAO_Contribution if (!$contributionRecur->find(TRUE)) { throw new CRM_Core_Exception('Failure: Could not find contribution recur record'); } + + // make sure the invoice ids match + // make sure the invoice is valid and matches what we have in + // the contribution record + $invoice = (string) $this->getValue('i'); + if ((string) $contributionRecur->invoice_id !== $invoice) { + Civi::log('paypal_pro')->debug('PayPalProIPN: Invoice values dont match between database and IPN request recur is ' . $contributionRecur->invoice_id . ' input is ' . $invoice); + throw new CRM_Core_Exception('Failure: Invoice values dont match between database and IPN request recur is ' . $contributionRecur->invoice_id . " input is " . $invoice); + } return $this->contributionRecurObject = $contributionRecur; } return $this->contributionRecurObject; @@ -607,4 +574,30 @@ private function isContributionCompleted(): bool { return $status === 'Completed'; } + /** + * Update a recurring contribution to in progress based on an ipn profile_create notification. + * + * recurring_payment_profile_created is called when the + * subscription has been authorized and confirmed by the user, + * but before a payment has been taken. + * The recurring_payment_id is POSTed to the IPN + * and we store it in the recurring contribution's processor_id. + * + * @throws \CRM_Core_Exception + */ + private function processProfileCreated(): void { + $recur = $this->getContributionRecurObject(); + $recur->create_date = date('YmdHis'); + $recur->contribution_status_id = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Pending'); + $recur->processor_id = $this->retrieve('recurring_payment_id', 'String'); + $recur->trxn_id = $recur->processor_id; + $recur->save(); + //send recurring Notification email for user + CRM_Contribute_BAO_ContributionPage::recurringNotify( + $this->getContributionID(), + CRM_Core_Payment::RECURRING_PAYMENT_START, + $recur + ); + } + } diff --git a/CRM/Core/PseudoConstant.php b/CRM/Core/PseudoConstant.php index 4a86234f1f83..73275f3eb51a 100644 --- a/CRM/Core/PseudoConstant.php +++ b/CRM/Core/PseudoConstant.php @@ -68,12 +68,6 @@ class CRM_Core_PseudoConstant { */ private static $country; - /** - * CountryIsoCode. - * @var array - */ - private static $countryIsoCode; - /** * group * @var array @@ -99,43 +93,6 @@ class CRM_Core_PseudoConstant { */ private static $currencyCode; - /** - * Payment processor - * @var array - */ - private static $paymentProcessor; - - /** - * Payment processor types - * @var array - */ - private static $paymentProcessorType; - - /** - * World Region - * @var array - */ - private static $worldRegions; - - /** - * activity status - * @var array - * @deprecated Please use the buildOptions() method in the appropriate BAO object. - */ - private static $activityStatus; - - /** - * Visibility - * @var array - */ - private static $visibility; - - /** - * Greetings - * @var array - */ - private static $greeting; - /** * Extensions of type module * @var array @@ -466,8 +423,7 @@ public static function populate( } /** - * Flush given pseudoconstant so it can be reread from db. - * nex time it's requested. + * Flush static array cache. * * @param bool|string $name pseudoconstant to be flushed */ @@ -496,12 +452,12 @@ public static function flush($name = 'cache') { */ public static function &activityType() { $args = func_get_args(); - $all = CRM_Utils_Array::value(0, $args, TRUE); - $includeCaseActivities = CRM_Utils_Array::value(1, $args, FALSE); - $reset = CRM_Utils_Array::value(2, $args, FALSE); - $returnColumn = CRM_Utils_Array::value(3, $args, 'label'); - $includeCampaignActivities = CRM_Utils_Array::value(4, $args, FALSE); - $onlyComponentActivities = CRM_Utils_Array::value(5, $args, FALSE); + $all = $args[0] ?? TRUE; + $includeCaseActivities = $args[1] ?? FALSE; + $reset = $args[2] ?? FALSE; + $returnColumn = $args[3] ?? 'label'; + $includeCampaignActivities = $args[4] ?? FALSE; + $onlyComponentActivities = $args[5] ?? FALSE; $index = (int) $all . '_' . $returnColumn . '_' . (int) $includeCaseActivities; $index .= '_' . (int) $includeCampaignActivities; $index .= '_' . (int) $onlyComponentActivities; @@ -668,6 +624,7 @@ public static function stateProvinceAbbreviation($id = FALSE, $limit = TRUE) { /** * Get all the State/Province abbreviations from the database for the specified country. + * @deprecated * * @param int $countryID * @@ -675,21 +632,24 @@ public static function stateProvinceAbbreviation($id = FALSE, $limit = TRUE) { * array of all State/Province abbreviations for the given country. */ public static function stateProvinceAbbreviationForCountry($countryID) { - if (!isset(\Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID])) { - \Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID] = []; - } - self::populate(\Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID], 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', "country_id = " . (int) $countryID, 'abbreviation'); - return \Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID]; + CRM_Core_Error::deprecatedFunctionWarning('API'); + $abbrs = []; + self::populate($abbrs, 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', "country_id = " . (int) $countryID, 'abbreviation'); + return $abbrs; } /** * Get all the State/Province abbreviations from the database for the default country. + * @deprecated * * @return array * array of all State/Province abbreviations for the given country. */ public static function stateProvinceAbbreviationForDefaultCountry() { - return CRM_Core_PseudoConstant::stateProvinceAbbreviationForCountry(Civi::settings()->get('defaultContactCountry')); + $countryID = Civi::settings()->get('defaultContactCountry'); + $abbrs = []; + self::populate($abbrs, 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', "country_id = " . (int) $countryID, 'abbreviation'); + return $abbrs; } /** @@ -754,31 +714,18 @@ public static function country($id = FALSE, $applyLimit = TRUE) { /** * Get all the country ISO Code abbreviations from the database. * - * The static array countryIsoCode is returned, and if it's - * called the first time, the Country DAO is used - * to get all the countries' ISO codes. - * - * Note: any database errors will be trapped by the DAO. - * - * * @param bool $id * * @return array - * array reference of all country ISO codes. */ - public static function &countryIsoCode($id = FALSE) { - if (!self::$countryIsoCode) { - self::populate(self::$countryIsoCode, 'CRM_Core_DAO_Country', TRUE, 'iso_code'); - } + public static function countryIsoCode($id = FALSE) { + $values = []; + self::populate($values, 'CRM_Core_DAO_Country', TRUE, 'iso_code'); + if ($id) { - if (array_key_exists($id, self::$countryIsoCode)) { - return self::$countryIsoCode[$id]; - } - else { - return CRM_Core_DAO::$_nullObject; - } + return $values[$id] ?? NULL; } - return self::$countryIsoCode; + return $values; } /** @@ -803,12 +750,9 @@ public static function &countryIsoCode($id = FALSE) { */ public static function allGroup($groupType = NULL, $excludeHidden = TRUE) { $condition = CRM_Contact_BAO_Group::groupTypeCondition($groupType, $excludeHidden); - $groupKey = ($groupType ?: 'null') . !empty($excludeHidden); - - if (!isset(Civi::$statics[__CLASS__]['groups']['allGroup'][$groupKey])) { - self::populate(Civi::$statics[__CLASS__]['groups']['allGroup'][$groupKey], 'CRM_Contact_DAO_Group', FALSE, 'title', 'is_active', $condition); - } - return Civi::$statics[__CLASS__]['groups']['allGroup'][$groupKey]; + $values = []; + self::populate($values, 'CRM_Contact_DAO_Group', FALSE, 'title', 'is_active', $condition); + return $values; } /** @@ -955,9 +899,6 @@ public static function relationshipTypeOptions() { /** * Get all the ISO 4217 currency codes * - * so far, we use this for validation only, so there's no point of putting this into the database - * - * * @return array * array reference of all currency codes */ @@ -966,7 +907,6 @@ public static function ¤cyCode() { $query = "SELECT name FROM civicrm_currency"; $dao = CRM_Core_DAO::executeQuery($query); - $currencyCode = []; while ($dao->fetch()) { self::$currencyCode[] = $dao->name; } @@ -1025,8 +965,7 @@ public static function &county($id = FALSE) { * array of all payment processors */ public static function paymentProcessor($all = FALSE, $test = FALSE, $additionalCond = NULL) { - $condition = "is_test = "; - $condition .= ($test) ? '1' : '0'; + $condition = 'is_test = ' . ($test ? '1' : '0'); if ($additionalCond) { $condition .= " AND ( $additionalCond ) "; @@ -1035,13 +974,10 @@ public static function paymentProcessor($all = FALSE, $test = FALSE, $additional // CRM-7178. Make sure we only include payment processors valid in this // domain $condition .= " AND domain_id = " . CRM_Core_Config::domainID(); + $values = []; + self::populate($values, 'CRM_Financial_DAO_PaymentProcessor', $all, 'name', 'is_active', $condition, 'is_default desc, name'); - $cacheKey = $condition . '_' . (int) $all; - if (!isset(self::$paymentProcessor[$cacheKey])) { - self::populate(self::$paymentProcessor[$cacheKey], 'CRM_Financial_DAO_PaymentProcessor', $all, 'name', 'is_active', $condition, 'is_default desc, name'); - } - - return self::$paymentProcessor[$cacheKey]; + return $values; } /** @@ -1060,40 +996,32 @@ public static function paymentProcessor($all = FALSE, $test = FALSE, $additional * array of all payment processor types */ public static function &paymentProcessorType($all = FALSE, $id = NULL, $return = 'title') { - $cacheKey = $id . '_' . $return; - if (empty(self::$paymentProcessorType[$cacheKey])) { - self::populate(self::$paymentProcessorType[$cacheKey], 'CRM_Financial_DAO_PaymentProcessorType', $all, $return, 'is_active', NULL, "is_default, $return", 'id'); - } - if ($id && !empty(self::$paymentProcessorType[$cacheKey][$id])) { - return self::$paymentProcessorType[$cacheKey][$id]; - } - return self::$paymentProcessorType[$cacheKey]; + CRM_Core_Error::deprecatedFunctionWarning('API'); + $values = []; + self::populate($values, 'CRM_Financial_DAO_PaymentProcessorType', $all, $return, 'is_active', NULL, "is_default, $return", 'id'); + // This is incredibly stupid, but the whole function is deprecated anyway... + if ($id && !empty($values[$id])) { + return $values[$id]; + } + return $values; } /** * Get all the World Regions from Database. * - * * @param bool $id * * @return array * array reference of all World Regions */ - public static function &worldRegion($id = FALSE) { - if (!self::$worldRegions) { - self::populate(self::$worldRegions, 'CRM_Core_DAO_Worldregion', TRUE, 'name', NULL, NULL, 'id'); - } + public static function worldRegion($id = FALSE) { + $values = []; + self::populate($values, 'CRM_Core_DAO_Worldregion', TRUE, 'name', NULL, NULL, 'id'); if ($id) { - if (array_key_exists($id, self::$worldRegions)) { - return self::$worldRegions[$id]; - } - else { - return CRM_Core_DAO::$_nullObject; - } + return $values[$id] ?? NULL; } - - return self::$worldRegions; + return $values; } /** @@ -1101,25 +1029,12 @@ public static function &worldRegion($id = FALSE) { * * Get all Activity Statuses. * - * The static array activityStatus is returned - * - * * @param string $column * * @return array - * array reference of all activity statuses */ public static function &activityStatus($column = 'label') { - if (NULL === self::$activityStatus) { - self::$activityStatus = []; - } - if (!array_key_exists($column, self::$activityStatus)) { - self::$activityStatus[$column] = []; - - self::$activityStatus[$column] = CRM_Core_OptionGroup::values('activity_status', FALSE, FALSE, FALSE, NULL, $column); - } - - return self::$activityStatus[$column]; + return CRM_Core_OptionGroup::values('activity_status', FALSE, FALSE, FALSE, NULL, $column); } /** @@ -1135,16 +1050,8 @@ public static function &activityStatus($column = 'label') { * @return array * array reference of all Visibility levels. */ - public static function &visibility($column = 'label') { - if (!isset(self::$visibility)) { - self::$visibility = []; - } - - if (!isset(self::$visibility[$column])) { - self::$visibility[$column] = CRM_Core_OptionGroup::values('visibility', FALSE, FALSE, FALSE, NULL, $column); - } - - return self::$visibility[$column]; + public static function visibility($column = 'label') { + return CRM_Core_OptionGroup::values('visibility', FALSE, FALSE, FALSE, NULL, $column); } /** diff --git a/CRM/Core/QuickForm/Action/Upload.php b/CRM/Core/QuickForm/Action/Upload.php index c86d0b2f1602..9f7089893d2f 100644 --- a/CRM/Core/QuickForm/Action/Upload.php +++ b/CRM/Core/QuickForm/Action/Upload.php @@ -77,7 +77,7 @@ public function upload(&$page, &$data, $pageName, $uploadName) { // rename the uploaded file with a unique number at the end $value = $element->getValue(); - $newName = CRM_Utils_File::makeFileName($value['name']); + $newName = CRM_Utils_File::makeFileName($value['name'], TRUE); $status = $element->moveUploadedFile($this->_uploadDir, $newName); if (!$status) { CRM_Core_Error::statusBounce(ts('We could not move the uploaded file %1 to the upload directory %2. Please verify that the \'Temporary Files\' setting points to a valid path which is writable by your web server.', [ diff --git a/CRM/Core/Resources.php b/CRM/Core/Resources.php index b1818c689389..f1610b35f63c 100644 --- a/CRM/Core/Resources.php +++ b/CRM/Core/Resources.php @@ -429,7 +429,7 @@ public static function renderL10nJs(GenericHookEvent $e) { $e->mimeType = 'application/javascript'; $params = $e->params; $params += [ - 'contactSearch' => json_encode($params['includeEmailInName'] ? ts('Search by name/email or id...') : ts('Search by name or id...')), + 'contactSearch' => json_encode(!empty($params['includeEmailInName']) ? ts('Search by name/email or id...') : ts('Search by name or id...')), 'otherSearch' => json_encode(ts('Enter search term or id...')), 'entityRef' => self::getEntityRefMetadata(), ]; diff --git a/CRM/Core/SelectValues.php b/CRM/Core/SelectValues.php index 0573b1a8a1f1..e550d54deceb 100644 --- a/CRM/Core/SelectValues.php +++ b/CRM/Core/SelectValues.php @@ -219,6 +219,11 @@ public static function customHtmlType() { 'name' => 'Link', 'label' => ts('Link'), ], + [ + 'id' => 'Hidden', + 'name' => 'Hidden', + 'label' => ts('Hidden'), + ], ]; } @@ -634,6 +639,7 @@ public static function contactTokens(): array { * @return array */ public static function participantTokens(): array { + CRM_Core_Error::deprecatedFunctionWarning('user TokenProcessor'); $tokenProcessor = new TokenProcessor(Civi::dispatcher(), ['schema' => ['participantId']]); $allTokens = $tokenProcessor->listTokens(); foreach (array_keys($allTokens) as $token) { @@ -1079,16 +1085,19 @@ public static function getPermissionedRelationshipOptions() { 'id' => CRM_Contact_BAO_Relationship::NONE, 'name' => 'None', 'label' => ts('None'), + 'icon' => NULL, ], [ 'id' => CRM_Contact_BAO_Relationship::VIEW, 'name' => 'View only', 'label' => ts('View only'), + 'icon' => 'fa-eye', ], [ 'id' => CRM_Contact_BAO_Relationship::EDIT, 'name' => 'View and update', 'label' => ts('View and update'), + 'icon' => 'fa-pencil-square', ], ]; } @@ -1127,6 +1136,7 @@ public static function quicksearchOptions() { 'address_primary.street_address' => ts('Street Address'), 'address_primary.city' => ts('City'), 'address_primary.postal_code' => ts('Postal Code'), + 'employer_id.sort_name' => ts('Current Employer'), 'job_title' => ts('Job Title'), ]; $custom = civicrm_api4('CustomField', 'get', [ diff --git a/CRM/Core/Selector/Controller.php b/CRM/Core/Selector/Controller.php index c2cc8d196aa6..b2d899a30532 100644 --- a/CRM/Core/Selector/Controller.php +++ b/CRM/Core/Selector/Controller.php @@ -325,7 +325,7 @@ public function run() { } else { // output requires paging/sorting capability - $rows = self::getRows($this); + $rows = $this->getRows($this); CRM_Utils_Hook::searchColumns($contextName, $columnHeaders, $rows, $this); $reorderedHeaders = []; $noWeightHeaders = []; diff --git a/CRM/Core/Smarty.php b/CRM/Core/Smarty.php index b5c22c62df57..60f6cfcb0973 100644 --- a/CRM/Core/Smarty.php +++ b/CRM/Core/Smarty.php @@ -22,14 +22,10 @@ use Civi\Core\Event\SmartyErrorEvent; -if (!class_exists('Smarty')) { - require_once 'Smarty/Smarty.class.php'; -} - /** * */ -class CRM_Core_Smarty extends Smarty { +class CRM_Core_Smarty extends CRM_Core_SmartyCompatibility { const // use print.tpl and bypass the CMS. Civi prints a valid html file PRINT_PAGE = 1, @@ -132,6 +128,15 @@ private function initialize() { $this->assign('config', $config); $this->assign('session', $session); + $this->assign('debugging', [ + 'smartyDebug' => CRM_Utils_Request::retrieveValue('smartyDebug', 'Integer'), + 'sessionReset' => CRM_Utils_Request::retrieveValue('sessionReset', 'Integer'), + 'sessionDebug' => CRM_Utils_Request::retrieveValue('sessionDebug', 'Integer'), + 'directoryCleanup' => CRM_Utils_Request::retrieveValue('directoryCleanup', 'Integer'), + 'cacheCleanup' => CRM_Utils_Request::retrieveValue('cacheCleanup', 'Integer'), + 'configReset' => CRM_Utils_Request::retrieveValue('configReset', 'Integer'), + ]); + $this->assign('snippet_type', CRM_Utils_Request::retrieveValue('snippet', 'String')); $tsLocale = CRM_Core_I18n::getLocale(); $this->assign('tsLocale', $tsLocale); @@ -141,7 +146,12 @@ private function initialize() { $this->assign('langSwitch', CRM_Core_I18n::uiLanguages()); } - if (CRM_Utils_Constant::value('CIVICRM_SMARTY_DEFAULT_ESCAPE')) { + if (CRM_Utils_Constant::value('CIVICRM_SMARTY_DEFAULT_ESCAPE') + && !CRM_Utils_Constant::value('CIVICRM_SMARTY3_AUTOLOAD_PATH')) { + // Currently DEFAULT escape does not work with Smarty3 + // dunno why - thought it would be the default with Smarty3 - but + // getting onto Smarty 3 is higher priority. + // The include below loads the v2 version which is why id doesn't work. // When default escape is enabled if the core escape is called before // any custom escaping is done the modifier_escape function is not // found, so require_once straight away. Note this was hit on the basic @@ -183,35 +193,6 @@ public static function &singleton() { return self::$_singleton; } - /** - * Executes & returns or displays the template results - * - * @param string $resource_name - * @param string $cache_id - * @param string $compile_id - * @param bool $display - * - * @return bool|mixed|string - * - * @noinspection PhpDocMissingThrowsInspection - * @noinspection PhpUnhandledExceptionInspection - */ - public function fetch($resource_name, $cache_id = NULL, $compile_id = NULL, $display = FALSE) { - if (preg_match('/^(\s+)?string:/', $resource_name)) { - $old_security = $this->security; - $this->security = TRUE; - } - try { - $output = parent::fetch($resource_name, $cache_id, $compile_id, $display); - } - finally { - if (isset($old_security)) { - $this->security = $old_security; - } - } - return $output; - } - /** * Handle smarty error in one off string. * diff --git a/CRM/Core/Smarty/plugins/block.crmButton.php b/CRM/Core/Smarty/plugins/block.crmButton.php index 64543d595768..fbd6606329e7 100644 --- a/CRM/Core/Smarty/plugins/block.crmButton.php +++ b/CRM/Core/Smarty/plugins/block.crmButton.php @@ -24,33 +24,37 @@ * Contents of block. * @param CRM_Core_Smarty $smarty * The Smarty object. + * @param bool $repeat + * Repeat is true for the opening tag, false for the closing tag * - * @return string + * @return string|null * The generated html. */ -function smarty_block_crmButton($params, $text, &$smarty) { - // Generate url (pass 'html' param as false to avoid double-encode by htmlAttributes) - if (empty($params['href'])) { - $params['href'] = CRM_Utils_System::crmURL($params + ['h' => FALSE]); - } - // Always add class 'button' - fixme probably should be crm-button - $params['class'] = empty($params['class']) ? 'button' : 'button ' . $params['class']; - // Any FA icon works - if (array_key_exists('icon', $params) && !$params['icon']) { - // icon=0 should produce a button with no icon - $iconMarkup = ''; - } - else { - $icon = $params['icon'] ?? 'fa-pencil'; - // Assume for now that all icons are Font Awesome v4.x but handle if it's - // specified - if (strpos($icon, 'fa-') !== 0) { - $icon = "fa-$icon"; +function smarty_block_crmButton($params, $text, &$smarty, &$repeat) { + if (!$repeat) { + // Generate url (pass 'html' param as false to avoid double-encode by htmlAttributes) + if (empty($params['href'])) { + $params['href'] = CRM_Utils_System::crmURL($params + ['h' => FALSE]); + } + // Always add class 'button' - fixme probably should be crm-button + $params['class'] = empty($params['class']) ? 'button' : 'button ' . $params['class']; + // Any FA icon works + if (array_key_exists('icon', $params) && !$params['icon']) { + // icon=0 should produce a button with no icon + $iconMarkup = ''; + } + else { + $icon = $params['icon'] ?? 'fa-pencil'; + // Assume for now that all icons are Font Awesome v4.x but handle if it's + // specified + if (strpos($icon, 'fa-') !== 0) { + $icon = "fa-$icon"; + } + $iconMarkup = " "; } - $iconMarkup = " "; + // All other params are treated as html attributes + CRM_Utils_Array::remove($params, 'icon', 'p', 'q', 'a', 'f', 'h', 'fb', 'fe'); + $attributes = CRM_Utils_String::htmlAttributes($params); + return "$iconMarkup$text"; } - // All other params are treated as html attributes - CRM_Utils_Array::remove($params, 'icon', 'p', 'q', 'a', 'f', 'h', 'fb', 'fe'); - $attributes = CRM_Utils_String::htmlAttributes($params); - return "$iconMarkup$text"; } diff --git a/CRM/Core/Smarty/plugins/block.crmUpgradeSnapshot.php b/CRM/Core/Smarty/plugins/block.crmUpgradeSnapshot.php index 9e95233751c7..44571c14ed27 100644 --- a/CRM/Core/Smarty/plugins/block.crmUpgradeSnapshot.php +++ b/CRM/Core/Smarty/plugins/block.crmUpgradeSnapshot.php @@ -32,11 +32,13 @@ * @param string|null $text * The SELECT query which supplies the interesting data to be stored in the snapshot. * @param CRM_Core_Smarty $smarty + * @param bool $repeat + * Repeat is true for the opening tag, false for the closing tag * @return string|null * @throws \CRM_Core_Exception */ -function smarty_block_crmUpgradeSnapshot($params, $text, &$smarty) { - if ($text === NULL) { +function smarty_block_crmUpgradeSnapshot($params, $text, &$smarty, &$repeat) { + if ($repeat || $text === NULL) { return NULL; } diff --git a/CRM/Core/Smarty/plugins/block.edit.php b/CRM/Core/Smarty/plugins/block.edit.php index d42fe44e0392..cb3d15479d59 100644 --- a/CRM/Core/Smarty/plugins/block.edit.php +++ b/CRM/Core/Smarty/plugins/block.edit.php @@ -30,11 +30,15 @@ * {edit} block contents from the template. * @param CRM_Core_Smarty $smarty * The Smarty object. + * @param bool $repeat + * Repeat is true for the opening tag, false for the closing tag * - * @return string + * @return string|null * the string, translated by gettext */ -function smarty_block_edit($params, $text, &$smarty) { - $action = $smarty->_tpl_vars['action']; - return ($action & 3) ? $text : NULL; +function smarty_block_edit($params, $text, &$smarty, &$repeat) { + if (!$repeat) { + $action = $smarty->get_template_vars()['action']; + return ($action & 3) ? $text : NULL; + } } diff --git a/CRM/Core/Smarty/plugins/block.htxt.php b/CRM/Core/Smarty/plugins/block.htxt.php index cfd03732c13c..cc58bda7731a 100644 --- a/CRM/Core/Smarty/plugins/block.htxt.php +++ b/CRM/Core/Smarty/plugins/block.htxt.php @@ -26,16 +26,16 @@ * {ts} block contents from the template. * @param CRM_Core_Smarty $smarty * The Smarty object. + * @param bool $repeat + * Repeat is true for the opening tag, false for the closing tag * - * @return string + * @return string|null * the string, translated by gettext */ -function smarty_block_htxt($params, $text, &$smarty) { - if ($params['id'] == $smarty->_tpl_vars['id']) { +function smarty_block_htxt($params, $text, $smarty, &$repeat) { + if (!$repeat && $params['id'] == $smarty->getTemplateVars('id')) { $smarty->assign('override_help_text', !empty($params['override'])); return $text; } - else { - return NULL; - } + return NULL; } diff --git a/CRM/Core/Smarty/plugins/block.icon.php b/CRM/Core/Smarty/plugins/block.icon.php index 97dbb6d55d80..84865c63d4ec 100644 --- a/CRM/Core/Smarty/plugins/block.icon.php +++ b/CRM/Core/Smarty/plugins/block.icon.php @@ -30,14 +30,19 @@ * * @param $smarty * - * @return string + * @param bool $repeat + * Repeat is true for the opening tag, false for the closing tag + * + * @return string|null */ -function smarty_block_icon($params, $text, &$smarty) { - $condition = array_key_exists('condition', $params) ? $params['condition'] : 1; - $icon = $params['icon'] ?? 'fa-check'; - $dontPass = [ - 'condition' => 1, - 'icon' => 1, - ]; - return CRM_Core_Page::crmIcon($icon, $text, $condition, array_diff_key($params, $dontPass)); +function smarty_block_icon($params, $text, &$smarty, &$repeat) { + if (!$repeat) { + $condition = array_key_exists('condition', $params) ? $params['condition'] : 1; + $icon = $params['icon'] ?? 'fa-check'; + $dontPass = [ + 'condition' => 1, + 'icon' => 1, + ]; + return CRM_Core_Page::crmIcon($icon, $text, $condition, array_diff_key($params, $dontPass)); + } } diff --git a/CRM/Core/Smarty/plugins/block.localize.php b/CRM/Core/Smarty/plugins/block.localize.php index 47e64fe6be3d..6b7f357d85ee 100644 --- a/CRM/Core/Smarty/plugins/block.localize.php +++ b/CRM/Core/Smarty/plugins/block.localize.php @@ -33,18 +33,19 @@ * @return string * multilingualized query */ -function smarty_block_localize($params, $text, &$smarty, &$repeat) { +function smarty_block_localize($params, $text, $smarty, &$repeat) { if ($repeat) { // For opening tag text is always null return ''; } - - if (!array_key_exists('multilingual', $smarty->_tpl_vars) || !$smarty->_tpl_vars['multilingual']) { + $multiLingual = method_exists($smarty, 'get_template_vars') ? $smarty->get_template_vars('multilingual') : $smarty->getTemplateVars('multilingual'); + if (!$multiLingual) { return $text; } $lines = []; - foreach ($smarty->_tpl_vars['locales'] as $locale) { + $locales = (array) (method_exists($smarty, 'get_template_vars') ? $smarty->get_template_vars('locales') : $smarty->getTemplateVars('locales')); + foreach ($locales as $locale) { $line = $text; if (isset($params['field'])) { $fields = explode(',', $params['field']); diff --git a/CRM/Core/Smarty/plugins/block.serialize.php b/CRM/Core/Smarty/plugins/block.serialize.php deleted file mode 100644 index e716631050bf..000000000000 --- a/CRM/Core/Smarty/plugins/block.serialize.php +++ /dev/null @@ -1,37 +0,0 @@ - - * @copyright CiviCRM LLC https://civicrm.org/licensing - */ - -/** - * Smarty block function providing serialization support - * - * See CRM_Core_I18n class documentation for details. - * - * @param array $params - * Template call's parameters. - * @param string $text - * {serialize} block contents from the template. - * @param CRM_Core_Smarty $smarty - * The Smarty object. - * - * @return string - * the string, translated by gettext - */ -function smarty_block_serialize($params, $text, &$smarty) { - return serialize($text); -} diff --git a/CRM/Core/Smarty/plugins/block.ts.php b/CRM/Core/Smarty/plugins/block.ts.php index 785122d36e25..cb077675de66 100644 --- a/CRM/Core/Smarty/plugins/block.ts.php +++ b/CRM/Core/Smarty/plugins/block.ts.php @@ -29,13 +29,17 @@ * {ts} block contents from the template. * @param CRM_Core_Smarty $smarty * The Smarty object. + * @param bool $repeat + * Repeat is true for the opening tag, false for the closing tag * - * @return string + * @return string|null * the string, translated by gettext */ -function smarty_block_ts($params, $text, &$smarty) { - if (!isset($params['domain']) && $extensionKey = $smarty->get_template_vars('extensionKey')) { - $params['domain'] = is_array($extensionKey) ? $extensionKey : [$extensionKey, NULL]; +function smarty_block_ts($params, $text, &$smarty, &$repeat) { + if (!$repeat) { + if (!isset($params['domain']) && $extensionKey = $smarty->get_template_vars('extensionKey')) { + $params['domain'] = is_array($extensionKey) ? $extensionKey : [$extensionKey, NULL]; + } + return _ts($text, $params); } - return _ts($text, $params); } diff --git a/CRM/Core/Smarty/plugins/block.url.php b/CRM/Core/Smarty/plugins/block.url.php index 71814af2a1b1..890d9d20b42e 100644 --- a/CRM/Core/Smarty/plugins/block.url.php +++ b/CRM/Core/Smarty/plugins/block.url.php @@ -34,10 +34,13 @@ * Contents of block. * @param CRM_Core_Smarty $smarty * The Smarty object. + * @param bool $repeat + * Repeat is true for the opening tag, false for the closing tag + * * @return string */ -function smarty_block_url($params, $text, &$smarty) { - if ($text === NULL) { +function smarty_block_url($params, $text, &$smarty, &$repeat) { + if ($repeat || $text === NULL) { return NULL; } diff --git a/CRM/Core/Smarty/plugins/function.help.php b/CRM/Core/Smarty/plugins/function.help.php index 754d2ec401ed..a7010ef8edde 100644 --- a/CRM/Core/Smarty/plugins/function.help.php +++ b/CRM/Core/Smarty/plugins/function.help.php @@ -27,12 +27,12 @@ * the help html to be inserted */ function smarty_function_help($params, &$smarty) { - if (!isset($params['id']) || !isset($smarty->_tpl_vars['config'])) { + if (!isset($params['id']) || !isset($smarty->get_template_vars()['config'])) { return NULL; } - if (empty($params['file']) && isset($smarty->_tpl_vars['tplFile'])) { - $params['file'] = $smarty->_tpl_vars['tplFile']; + if (empty($params['file']) && isset($smarty->get_template_vars()['tplFile'])) { + $params['file'] = $smarty->get_template_vars()['tplFile']; } elseif (empty($params['file'])) { return NULL; @@ -43,7 +43,6 @@ function smarty_function_help($params, &$smarty) { if (empty($params['title'])) { $vars = $smarty->get_template_vars(); - $smarty->assign('id', $params['id'] . '-title'); // The way this works is a bit bonkers. All the .hlp files are expecting an // assign called $params (which is different from our php var here called @@ -52,14 +51,16 @@ function smarty_function_help($params, &$smarty) { // that we return at the bottom below). But right now when we fetch the // file on the next line, there is no params. So it gives a notice. So // let's assign something. + // We also need to assign the id for the title we are looking for, which + // will not be present in Smarty 3 otherwise. // It's also awkward since the ONLY reason we're fetching the file // now is to get the help section's title and we don't care about the rest // of the file, but that is a bit of a separate issue. - $temporary_vars = []; + $temporary_vars = ['id' => $params['id'] . '-title']; if (!array_key_exists('params', $vars)) { // In the unlikely event that params already exists, we don't want to // overwrite it, so only do this if not already set. - $temporary_vars = ['params' => []]; + $temporary_vars += ['params' => []]; } // Note fetchWith adds the temporary ones to the existing scope but then // will reset, unsetting them if not already present before, which is what diff --git a/CRM/Core/Smarty/plugins/modifier.smarty.php b/CRM/Core/Smarty/plugins/modifier.smarty.php new file mode 100644 index 000000000000..000e87ecf3bb --- /dev/null +++ b/CRM/Core/Smarty/plugins/modifier.smarty.php @@ -0,0 +1,45 @@ +assign_var` to + * `$smarty->assignVar()` + * 2) if someone adds the Smarty3 package onto their site and + * defines CIVICRM_SMARTY3_AUTOLOAD_PATH then Smarty3 will load from that + * location. + * + * Note that experimenting with `CIVICRM_SMARTY3_AUTOLOAD_PATH` will not + * go well if extensions are installed that have not run civix upgrade + * somewhat recently (ie have the old version of the hook_civicrm_config + * with reference to `$template =& CRM_Core_Smarty::singleton();` + */ + +/** + * Fix for bug CRM-392. Not sure if this is the best fix or it will impact + * other similar PEAR packages. doubt it + */ +if (!class_exists('Smarty')) { + if (defined('CIVICRM_SMARTY3_AUTOLOAD_PATH')) { + // @todo - this is experimental but it allows someone to + // get Smarty3 to load instead of Smarty2 if set. + // It is likely the final Smarty3 solution will look + // different but this makes testing possible without re-inventing + // it each time we try... + require_once CIVICRM_SMARTY3_AUTOLOAD_PATH; + } + else { + require_once 'Smarty/Smarty.class.php'; + } +} + +/** + * + */ +class CRM_Core_SmartyCompatibility extends Smarty { + + public function loadFilter($type, $name) { + if (method_exists(get_parent_class(), 'load_filter')) { + parent::load_filter($type, $name); + return; + } + parent::loadFilter($type, $name); + } + + /** + * @deprecated + * + * @param string $type + * @param string $name + * + * @throws \SmartyException + */ + public function load_filter($type, $name) { + if (method_exists(get_parent_class(), 'load_filter')) { + parent::load_filter($type, $name); + return; + } + parent::loadFilter($type, $name); + } + + /** + * Registers modifier to be used in templates + * + * @deprecated + * + * @param string $modifier name of template modifier + * @param string $modifier_impl name of PHP function to register + */ + public function register_modifier($modifier, $modifier_impl) { + if (method_exists(get_parent_class(), 'register_modifier')) { + parent::register_modifier($modifier, $modifier_impl); + return; + } + parent::registerPlugin('modifier', $modifier, $modifier_impl); + } + + public function registerPlugin($type, $name, $callback, $cacheable = TRUE, $cache_attr = NULL) { + if (method_exists(get_parent_class(), 'registerPlugin')) { + parent::registerPlugin($type, $name, $callback, $cacheable = TRUE, $cache_attr = NULL); + return; + } + if ($type === 'modifier') { + parent::register_modifier($name, $callback); + } + } + + /** + * Registers a resource to fetch a template + * + * @param string $type name of resource + * @param array $functions array of functions to handle resource + */ + public function register_resource($type, $functions) { + if (method_exists(get_parent_class(), 'register_resource')) { + parent::register_resource($type, $functions); + return; + } + parent::registerResource($type, $functions); + } + + /** + * Registers custom function to be used in templates + * + * @param string $function the name of the template function + * @param string $function_impl the name of the PHP function to register + * @param bool $cacheable + * @param null $cache_attrs + * + * @throws \SmartyException + */ + public function register_function($function, $function_impl, $cacheable = TRUE, $cache_attrs = NULL) { + if (method_exists(get_parent_class(), 'register_function')) { + parent::register_function($function, $function_impl, $cacheable = TRUE, $cache_attrs = NULL); + return; + } + parent::registerPlugin('function', $function, $function, $cacheable, $cache_attrs); + } + + /** + * Returns an array containing template variables + * + * @param string $name + * + * @return array + */ + public function &get_template_vars($name = NULL) { + if (method_exists(get_parent_class(), 'get_template_vars')) { + return parent::get_template_vars($name); + } + $var = parent::getTemplateVars($name); + return $var; + } + + /** + * Returns a single or all template variables + * + * @api Smarty::getTemplateVars() + * @link http://www.smarty.net/docs/en/api.get.template.vars.tpl + * + * @param string $varName variable name or NULL + * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object + * @param bool $searchParents include parent templates? + * + * @return mixed variable value or or array of variables + */ + public function getTemplateVars($varName = NULL, Smarty_Internal_Data $_ptr = NULL, $searchParents = TRUE) { + if (method_exists(get_parent_class(), 'getTemplateVars')) { + return parent::getTemplateVars($varName . $_ptr, $searchParents); + } + return parent::get_template_vars($varName); + } + + /** + * Generally Civi mis-uses this for perceived php4 conformance, avoid. + * + * @deprecated + * @param string $tpl_var + * @param mixed $value + * + * @return mixed|null|void + */ + public function assign_by_ref($tpl_var, &$value) { + if (method_exists(get_parent_class(), 'assign_by_ref')) { + parent::assign_by_ref($tpl_var, $value); + return; + } + return parent::assignByRef($tpl_var, $value); + } + + /** + * Generally Civi mis-uses this for perceived php4 conformance, avoid. + * + * @deprecated + * @param string $tpl_var + * + * @return mixed|null|void + */ + public function clear_assign($tpl_var) { + if (method_exists(get_parent_class(), 'clear_assign')) { + parent::clear_assign($tpl_var); + return; + } + return parent::clearAssign($tpl_var); + } + + /** + * Checks whether requested template exists. + * + * @param string $tpl_file + * + * @return bool + * @throws \SmartyException + */ + public function template_exists($tpl_file) { + if (method_exists(get_parent_class(), 'template_exists')) { + return parent::template_exists($tpl_file); + } + return parent::templateExists($tpl_file); + } + + /** + * Check if a template resource exists + * + * @param string $resource_name template name + * + * @return bool status + * @throws \SmartyException + */ + public function templateExists($resource_name) { + if (method_exists(get_parent_class(), 'templateExists')) { + return parent::templateExists($resource_name); + } + return parent::template_exists($resource_name); + } + +} diff --git a/CRM/Core/xml/Menu/Contact.xml b/CRM/Core/xml/Menu/Contact.xml index ed81f2bc8273..5de7c2814364 100644 --- a/CRM/Core/xml/Menu/Contact.xml +++ b/CRM/Core/xml/Menu/Contact.xml @@ -176,12 +176,6 @@ Smart Groups CRM_Contact_Page_View_ContactSmartGroup - - civicrm/contact/view/note - cid=%%cid%% - Notes - CRM_Contact_Page_View_Note - civicrm/contact/view/tag cid=%%cid%% @@ -377,6 +371,7 @@ CRM_Contact_Form_Task_SMS send SMS + civicrm/ajax/contactrelationships CRM_Contact_Page_AJAX::getContactRelationships diff --git a/CRM/Core/xml/Menu/Misc.xml b/CRM/Core/xml/Menu/Misc.xml index 222e7ece8f20..396e13c6b429 100644 --- a/CRM/Core/xml/Menu/Misc.xml +++ b/CRM/Core/xml/Menu/Misc.xml @@ -286,4 +286,9 @@ CRM_Activity_Form_Activity access CiviCRM + + civicrm/note + CRM_Note_Form_Note + access CiviCRM +

diff --git a/CRM/Custom/Form/Field.php b/CRM/Custom/Form/Field.php index 9a8c2e3d7362..ece46e555556 100644 --- a/CRM/Custom/Form/Field.php +++ b/CRM/Custom/Form/Field.php @@ -58,10 +58,10 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { * @var array[] */ public static $_dataToHTML = [ - 'String' => ['Text', 'Select', 'Radio', 'CheckBox', 'Autocomplete-Select'], - 'Int' => ['Text', 'Select', 'Radio'], - 'Float' => ['Text', 'Select', 'Radio'], - 'Money' => ['Text', 'Select', 'Radio'], + 'String' => ['Text', 'Select', 'Radio', 'CheckBox', 'Autocomplete-Select', 'Hidden'], + 'Int' => ['Text', 'Select', 'Radio', 'Hidden'], + 'Float' => ['Text', 'Select', 'Radio', 'Hidden'], + 'Money' => ['Text', 'Select', 'Radio', 'Hidden'], 'Memo' => ['TextArea', 'RichTextEditor'], 'Date' => ['Select Date'], 'Boolean' => ['Radio'], diff --git a/CRM/Custom/Form/Group.php b/CRM/Custom/Form/Group.php index 4f9baa454402..0c1dd26f6c24 100644 --- a/CRM/Custom/Form/Group.php +++ b/CRM/Custom/Form/Group.php @@ -18,61 +18,42 @@ /** * form to process actions on the set aspect of Custom Data */ -class CRM_Custom_Form_Group extends CRM_Core_Form { +class CRM_Custom_Form_Group extends CRM_Admin_Form { /** - * The set id saved to the session for an update. - * - * @var int - */ - public $_id; - - /** - * set is empty or not. + * Have any custom data records been saved yet? + * If not we can be more lenient about making changes. * * @var bool */ protected $_isGroupEmpty = TRUE; /** - * Array of existing subtypes set for a custom set. - * - * @var array + * Use APIv4 to load values. + * @var string */ - protected $_subtypes = []; + protected $retrieveMethod = 'api4'; /** * Set variables up before form is built. * - * * @return void */ public function preProcess() { $this->preventAjaxSubmit(); - Civi::resources()->addScriptFile('civicrm', 'js/jquery/jquery.crmIconPicker.js'); + parent::preProcess(); - // current set id - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); $this->setAction($this->_id ? CRM_Core_Action::UPDATE : CRM_Core_Action::ADD); - if ($this->_id && CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $this->_id, 'is_reserved', 'id')) { - CRM_Core_Error::statusBounce("You cannot edit the settings of a reserved custom field-set."); - } - if ($this->_id) { - $title = CRM_Core_BAO_CustomGroup::getTitle($this->_id); - $this->setTitle(ts('Edit %1', [1 => $title])); - $params = ['id' => $this->_id]; - CRM_Core_BAO_CustomGroup::retrieve($params, $this->_defaults); - - $subExtends = $this->_defaults['extends_entity_column_value'] ?? NULL; - if (!empty($subExtends)) { - $this->_subtypes = explode(CRM_Core_DAO::VALUE_SEPARATOR, substr($subExtends, 1, -1)); + if ($this->_values['is_reserved']) { + CRM_Core_Error::statusBounce("You cannot edit the settings of a reserved custom field-set."); } + $this->_isGroupEmpty = CRM_Core_BAO_CustomGroup::isGroupEmpty($this->_id); + $this->setTitle(ts('Edit %1', [1 => $this->_values['title']])); } - else { - $this->setTitle(ts('New Custom Field Set')); - } + // Used by I18n/Dialog + $this->assign('gid', $this->_id); } /** @@ -103,26 +84,6 @@ public static function formRule($fields, $files, $self) { $errors['title'] = ts('Custom group \'%1\' already exists in Database.', [1 => $title]); } - if (!empty($fields['extends'][1])) { - if (in_array('', $fields['extends'][1]) && count($fields['extends'][1]) > 1) { - $errors['extends'] = ts("Cannot combine other option with 'Any'."); - } - } - - if (empty($fields['extends'][0])) { - $errors['extends'] = ts("You need to select the type of record that this set of custom fields is applicable for."); - } - - $extends = ['Activity', 'Relationship', 'Group', 'Contribution', 'Membership', 'Event', 'Participant']; - if (in_array($fields['extends'][0], $extends) && $fields['style'] == 'Tab') { - $errors['style'] = ts("Display Style should be Inline for this Class"); - $self->assign('showStyle', TRUE); - } - - if (!empty($fields['is_multiple'])) { - $self->assign('showMultiple', TRUE); - } - if (empty($fields['is_multiple']) && $fields['style'] == 'Tab with table') { $errors['style'] = ts("Display Style 'Tab with table' is only supported for multiple-record custom field sets."); } @@ -160,74 +121,67 @@ public function addRules() { */ public function buildQuickForm() { $this->applyFilter('__ALL__', 'trim'); - $attributes = CRM_Core_DAO::getAttribute('CRM_Core_DAO_CustomGroup'); - //title - $this->add('text', 'title', ts('Set Name'), $attributes['title'], TRUE); + // This form is largely driven by a trio of related fields: + // 1. `extends` - entity name e.g. Activity, Contact, (plus contact types pretending to be entities e.g. Individual, Organization) + // 2. `extends_entity_column_id` - "category" of sub_type (usually null as most entities only have one category of sub_type) + // 3. `extends_entity_column_value` - sub_type value(s) e.g. options from `activity_type_id` + // Most entities have no options for field 2. For them, it will be hidden from the form, and + // the pair of fields 1 & 3 will act like a normal chain-select, (value of 1 controls the options shown in 3). + // For extra-complex entities like Participant, fields 1 + 2 will act like a compound key to + // control the options in field 3. + + // Get options for the `extends` field. + $extendsOptions = CRM_Core_BAO_CustomGroup::getCustomGroupExtendsOptions(); + // Sort by label + $labels = array_column($extendsOptions, 'label'); + array_multisort($labels, SORT_NATURAL, $extendsOptions); + + // Get options for `extends_entity_column_id` (rarely used except for participants) + // Format as an array keyed by entity to match with 'extends' values, e.g. + // [ + // 'Participant' => [['id' => 'ParticipantRole', 'text' => 'Participants (Role)'], ...]], + // ] + $entityColumnIdOptions = []; + foreach (CRM_Core_BAO_CustomGroup::getExtendsEntityColumnIdOptions() as $idOption) { + $entityColumnIdOptions[$idOption['extends']][] = [ + 'id' => $idOption['id'], + 'text' => $idOption['label'], + ]; + } - //Fix for code alignment, CRM-3058 - $contactTypes = array_merge(['Contact'], CRM_Contact_BAO_ContactType::basicTypes()); - $this->assign('contactTypes', json_encode($contactTypes)); + $extendsValue = $this->_values['extends'] ?? NULL; + $initialEntityColumnIdOptions = $entityColumnIdOptions[$extendsValue] ?? []; + + $initialEntityColumnValueOptions = []; + if ($extendsValue) { + $initialEntityColumnValueOptions = civicrm_api4('CustomGroup', 'getFields', [ + 'where' => [['name', '=', 'extends_entity_column_value']], + 'action' => 'create', + 'loadOptions' => ['id', 'label'], + 'values' => $this->_values, + ], 0)['options']; + } - $sel1 = ["" => ts("- select -")] + CRM_Core_SelectValues::customGroupExtends(); - ksort($sel1); - $sel2 = CRM_Core_BAO_CustomGroup::getSubTypes(); + // Assign data for use by js chain-selects + $this->assign('entityColumnIdOptions', $entityColumnIdOptions); + // List of entities that allow `is_multiple` + $this->assign('allowMultiple', array_column($extendsOptions, 'is_multiple', 'id')); + // Used by warnDataLoss + $this->assign('defaultSubtypes', $this->_values['extends_entity_column_value'] ?? []); + // Used to initially hide selects with no options + $this->assign('emptyEntityColumnId', empty($initialEntityColumnIdOptions)); + $this->assign('emptyEntityColumnValue', empty($initialEntityColumnValueOptions)); + + // Add form fields + $this->add('text', 'title', ts('Set Name'), $attributes['title'], TRUE); - foreach ($sel2 as $main => $sub) { - if (!empty($sel2[$main])) { - $sel2[$main] = [ - '' => ts("- Any -"), - ] + $sel2[$main]; - } - } + $this->add('select2', 'extends', ts('Used For'), $extendsOptions, TRUE, ['placeholder' => ts('Select')]); - $sel = &$this->add('hierselect', - 'extends', - ts('Used For'), - [ - 'name' => 'extends[0]', - 'style' => 'vertical-align: top;', - ], - TRUE - ); - $sel->setOptions([$sel1, $sel2]); - if (is_a($sel->_elements[1], 'HTML_QuickForm_select')) { - // make second selector a multi-select - - $sel->_elements[1]->setMultiple(TRUE); - $sel->_elements[1]->setSize(5); - } - if ($this->_action == CRM_Core_Action::UPDATE) { - $subName = $this->_defaults['extends_entity_column_id'] ?? NULL; - if ($this->_defaults['extends'] == 'Participant') { - if ($subName == 1) { - $this->_defaults['extends'] = 'ParticipantRole'; - } - elseif ($subName == 2) { - $this->_defaults['extends'] = 'ParticipantEventName'; - } - elseif ($subName == 3) { - $this->_defaults['extends'] = 'ParticipantEventType'; - } - } + $this->add('select2', 'extends_entity_column_id', ts('Type'), $initialEntityColumnIdOptions, FALSE, ['placeholder' => ts('Any')]); - //allow to edit settings if custom set is empty CRM-5258 - $this->_isGroupEmpty = CRM_Core_BAO_CustomGroup::isGroupEmpty($this->_id); - if (!$this->_isGroupEmpty) { - if (!empty($this->_subtypes)) { - // we want to allow adding / updating subtypes for this case, - // and therefore freeze the first selector only. - $sel->_elements[0]->freeze(); - } - else { - // freeze both the selectors - $sel->freeze(); - } - } - $this->assign('isCustomGroupEmpty', $this->_isGroupEmpty); - $this->assign('gid', $this->_id); - } - $this->assign('defaultSubtypes', json_encode($this->_subtypes)); + $this->add('select2', 'extends_entity_column_value', ts('Sub Type'), $initialEntityColumnValueOptions, FALSE, ['multiple' => TRUE, 'placeholder' => ts('Any')]); // help text $this->add('wysiwyg', 'help_pre', ts('Pre-form Help'), $attributes['help_pre']); @@ -254,26 +208,21 @@ public function buildQuickForm() { //Is this set visible on public pages? $this->addElement('advcheckbox', 'is_public', ts('Is this Custom Data Set public?')); - // does this set have multiple record? - $multiple = $this->addElement('advcheckbox', 'is_multiple', + $this->addElement('advcheckbox', 'is_multiple', ts('Does this Custom Field Set allow multiple records?'), NULL); - // $min_multiple = $this->add('text', 'min_multiple', ts('Minimum number of multiple records'), $attributes['min_multiple'] ); - // $this->addRule('min_multiple', ts('is a numeric field') , 'numeric'); - - $max_multiple = $this->add('number', 'max_multiple', ts('Maximum number of multiple records'), $attributes['max_multiple']); + $this->add('number', 'max_multiple', ts('Maximum number of multiple records'), $attributes['max_multiple']); $this->addRule('max_multiple', ts('is a numeric field'), 'numeric'); - //allow to edit settings if custom set is empty CRM-5258 - $this->assign('isGroupEmpty', $this->_isGroupEmpty); + // Once data exists, certain options cannot be changed if (!$this->_isGroupEmpty) { - $multiple->freeze(); - //$min_multiple->freeze(); - $max_multiple->freeze(); + $this->getElement('extends')->freeze(); + $this->getElement('extends_entity_column_id')->freeze(); + $this->getElement('is_multiple')->freeze(); + // Don't allow max to be lowered if data already exists + $this->getElement('max_multiple')->setAttribute('min', $this->_values['max_multiple'] ?? '0'); } - $this->assign('showStyle', FALSE); - $this->assign('showMultiple', FALSE); $buttons = [ [ 'type' => 'next', @@ -286,77 +235,41 @@ public function buildQuickForm() { 'name' => ts('Cancel'), ], ]; - if (!$this->_isGroupEmpty && !empty($this->_subtypes)) { + if (!$this->_isGroupEmpty && !empty($this->_values['extends_entity_column_value'])) { $buttons[0]['class'] = 'crm-warnDataLoss'; } $this->addButtons($buttons); } /** - * Set default values for the form. Note that in edit/view mode - * the default values are retrieved from the database - * - * + * Set default values for the form. * @return array - * array of default values */ - public function setDefaultValues() { - $defaults = &$this->_defaults; - $this->assign('showMaxMultiple', TRUE); + public function setDefaultValues(): array { + $defaults = &$this->_values; if ($this->_action == CRM_Core_Action::ADD) { $defaults['weight'] = CRM_Utils_Weight::getDefaultWeight('CRM_Core_DAO_CustomGroup'); - $defaults['is_multiple'] = $defaults['min_multiple'] = 0; $defaults['is_active'] = $defaults['is_public'] = $defaults['collapse_adv_display'] = 1; $defaults['style'] = 'Inline'; } - elseif (empty($defaults['max_multiple']) && !$this->_isGroupEmpty) { - $this->assign('showMaxMultiple', FALSE); - } - - if (($this->_action & CRM_Core_Action::UPDATE) && !empty($defaults['is_multiple'])) { - $defaults['collapse_display'] = 0; - } - - if (isset($defaults['extends'])) { - $extends = $defaults['extends']; - unset($defaults['extends']); - - $defaults['extends'][0] = $extends; - - if (!empty($this->_subtypes)) { - $defaults['extends'][1] = $this->_subtypes; - } - else { - $defaults['extends'][1] = [0 => '']; - } - - if ($extends == 'Relationship' && !empty($this->_subtypes)) { - $relationshipDefaults = []; - foreach ($defaults['extends'][1] as $donCare => $rel_type_id) { - $relationshipDefaults[] = $rel_type_id; - } - - $defaults['extends'][1] = $relationshipDefaults; - } - } - return $defaults; } /** - * Process the form. - * - * * @return void */ public function postProcess() { // get the submitted form values. $params = $this->controller->exportValues('Group'); + if (!empty($params['extends_entity_column_value']) && is_string($params['extends_entity_column_value'])) { + // Because select2 + $params['extends_entity_column_value'] = explode(',', $params['extends_entity_column_value']); + } $params['overrideFKConstraint'] = 0; if ($this->_action & CRM_Core_Action::UPDATE) { $params['id'] = $this->_id; - if ($this->_defaults['extends'][0] != $params['extends'][0]) { + if ($this->_values['extends'] != $params['extends']) { $params['overrideFKConstraint'] = 1; } @@ -423,11 +336,14 @@ public function postProcess() { } } + public function getDefaultEntity(): string { + return 'CustomGroup'; + } + /** - * Return a formatted list of relationship labels. + * Function that's only ever called by another deprecated function. * - * @return array - * Array (int $id => string $label). + * @deprecated */ public static function getRelationshipTypes() { // Note: We include inactive reltypes because we don't want to break custom-data diff --git a/CRM/Custom/Page/Field.php b/CRM/Custom/Page/Field.php index 8d6b6aefb653..188e48ed4d14 100644 --- a/CRM/Custom/Page/Field.php +++ b/CRM/Custom/Page/Field.php @@ -133,27 +133,9 @@ public function browse() { $action -= CRM_Core_Action::DISABLE; } - switch ($customFieldBAO->data_type) { - case "String": - case "Int": - case "Float": - case "Money": - // if Multi Select field is selected in custom field - if ($customFieldBAO->html_type == 'Text') { - $action -= CRM_Core_Action::BROWSE; - } - break; - - case "ContactReference": - case "Memo": - case "Date": - case "Boolean": - case "StateProvince": - case "Country": - case "File": - case "Link": - $action -= CRM_Core_Action::BROWSE; - break; + // Remove link to edit option group if there isn't one + if (!$customFieldBAO->option_group_id) { + $action -= CRM_Core_Action::BROWSE; } $customFieldDataType = array_column(CRM_Core_BAO_CustomField::dataType(), 'label', 'id'); diff --git a/CRM/Dedupe/MergeHandler.php b/CRM/Dedupe/MergeHandler.php index 79c296fdccb6..cf64201bcdb4 100644 --- a/CRM/Dedupe/MergeHandler.php +++ b/CRM/Dedupe/MergeHandler.php @@ -398,7 +398,7 @@ public function mergeLocations(): void { foreach ($block as $blkCount => $values) { $otherBlockId = $migrationInfo['other_details']['location_blocks'][$name][$blkCount]['id'] ?? NULL; - $mainBlockId = CRM_Utils_Array::value('mainContactBlockId', $migrationInfo['location_blocks'][$name][$blkCount], 0); + $mainBlockId = $migrationInfo['location_blocks'][$name][$blkCount]['mainContactBlockId'] ?? 0; if (!$otherBlockId) { continue; } diff --git a/CRM/Event/BAO/Event.php b/CRM/Event/BAO/Event.php index 9b905aebfc68..6f843c7742c0 100644 --- a/CRM/Event/BAO/Event.php +++ b/CRM/Event/BAO/Event.php @@ -1161,8 +1161,6 @@ public static function sendMail($contactID, $values, $participantId, $isTest = F 'email' => $notifyEmail, 'confirm_email_text' => $values['event']['confirm_email_text'] ?? NULL, 'isShowLocation' => $values['event']['is_show_location'] ?? NULL, - // The concept of contributeMode is deprecated. - 'contributeMode' => $template->_tpl_vars['contributeMode'] ?? NULL, 'customPre' => $profilePre[0], 'customPre_grouptitle' => empty($profilePre[1]) ? NULL : [CRM_Core_BAO_UFGroup::getFrontEndTitle((int) $preProfileID)], 'customPost' => $profilePost[0], @@ -1203,8 +1201,6 @@ public static function sendMail($contactID, $values, $participantId, $isTest = F $displayAddress = $values['address'] ?? NULL; if ($displayAddress) { $sendTemplateParams['tplParams']['address'] = $displayAddress; - // The concept of contributeMode is deprecated. - $sendTemplateParams['tplParams']['contributeMode'] = NULL; } // set lineItem details @@ -2023,7 +2019,7 @@ public static function checkRegistration($params) { $participant = new CRM_Event_DAO_Participant(); $participant->copyValues($params); - $participant->is_test = CRM_Utils_Array::value('is_test', $params, 0); + $participant->is_test = $params['is_test'] ?? 0; $participant->selectAdd(); $participant->selectAdd('status_id'); if ($participant->find(TRUE) && array_key_exists($participant->status_id, $statusTypes)) { diff --git a/CRM/Event/BAO/Participant.php b/CRM/Event/BAO/Participant.php index 64768f27e0ff..e0946b03da3d 100644 --- a/CRM/Event/BAO/Participant.php +++ b/CRM/Event/BAO/Participant.php @@ -269,8 +269,8 @@ public static function create(&$params) { ); } if (CRM_Core_Permission::check('delete in CiviEvent')) { - $recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/contact/view/participant', - "action=delete&reset=1&id={$participant->id}&cid={$participant->contact_id}&context=home" + $recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/participant/delete', + "reset=1&id={$participant->id}" ); } @@ -546,7 +546,7 @@ public static function priceSetOptionsCount( if ($lineItem->html_type == 'Text') { $count *= $lineItem->qty; } - $optionsCount[$lineItem->valueId] = $count + CRM_Utils_Array::value($lineItem->valueId, $optionsCount, 0); + $optionsCount[$lineItem->valueId] = $count + ($optionsCount[$lineItem->valueId] ?? 0); } return $optionsCount; @@ -1744,8 +1744,8 @@ public static function addActivityForSelection($participantId, $activityType) { $contactId = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $participantId, 'contact_id'); $date = CRM_Utils_Date::currentDBDate(); - $event = CRM_Event_BAO_Event::getEvents(0, $eventId); - $subject = sprintf("Registration selections changed for %s", CRM_Utils_Array::value($eventId, $event)); + $title = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $eventId, 'title'); + $subject = ts('Registration selections changed for %1', [1 => $title]); // activity params $activityParams = [ diff --git a/CRM/Event/BAO/ParticipantStatusType.php b/CRM/Event/BAO/ParticipantStatusType.php index 7176dcc48b9e..7632f634e707 100644 --- a/CRM/Event/BAO/ParticipantStatusType.php +++ b/CRM/Event/BAO/ParticipantStatusType.php @@ -17,33 +17,23 @@ class CRM_Event_BAO_ParticipantStatusType extends CRM_Event_DAO_ParticipantStatusType { /** + * @deprecated * @param array $params * * @return self|null */ public static function add(&$params) { - if (empty($params)) { - return NULL; - } - $dao = new CRM_Event_DAO_ParticipantStatusType(); - $dao->copyValues($params); - return $dao->save(); + return self::writeRecord($params); } /** + * @deprecated * @param array $params * * @return self|null */ - public static function &create(&$params) { - $transaction = new CRM_Core_Transaction(); - $statusType = self::add($params); - if (is_a($statusType, 'CRM_Core_Error')) { - $transaction->rollback(); - return $statusType; - } - $transaction->commit(); - return $statusType; + public static function create(&$params) { + return self::writeRecord($params); } /** diff --git a/CRM/Event/DAO/Participant.php b/CRM/Event/DAO/Participant.php index dee37a6c534d..62f514a41b97 100644 --- a/CRM/Event/DAO/Participant.php +++ b/CRM/Event/DAO/Participant.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Event/Participant.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:3faebf0fa49dd7b3bf527bd082dd1fb7) + * (GenCodeChecksum:54acecd8443b824933d1cae2e77b2f8e) */ /** @@ -47,7 +47,7 @@ class CRM_Event_DAO_Participant extends CRM_Core_DAO { 'add' => 'civicrm/participant/add?action=add&context=standalone&reset=1', 'view' => 'civicrm/contact/view/participant?id=[id]&cid=[contact_id]&action=view&reset=1', 'update' => 'civicrm/contact/view/participant?id=[id]&cid=[contact_id]&action=update&reset=1', - 'delete' => 'civicrm/contact/view/participant?id=[id]&cid=[contact_id]&action=delete&reset=1', + 'delete' => 'civicrm/participant/delete?id=[id]&reset=1', ]; /** diff --git a/CRM/Event/Form/EventFees.php b/CRM/Event/Form/EventFees.php index 5ef84b3c581c..b0601f014b7b 100644 --- a/CRM/Event/Form/EventFees.php +++ b/CRM/Event/Form/EventFees.php @@ -37,9 +37,6 @@ public static function preProcess(&$form) { $form->_pId = CRM_Utils_Request::retrieve('participantId', 'Positive', $form); $form->_discountId = CRM_Utils_Request::retrieve('discountId', 'Positive', $form); - // @todo - stop setting this, call the function, as appropriate. This is in a weird place. - $form->_fromEmails = CRM_Event_BAO_Event::getFromEmailIds($form->_eventId); - //CRM-6907 set event specific currency. if ($form->_eventId && ($currency = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $form->_eventId, 'currency')) @@ -64,10 +61,10 @@ public static function setDefaultValues(&$form) { $details = []; CRM_Core_DAO::commonRetrieveAll('CRM_Event_DAO_Event', 'id', $form->_eventId, $details, $returnProperities); if (!empty($details[$form->_eventId]['financial_type_id'])) { - $defaults[$form->_pId]['financial_type_id'] = $details[$form->_eventId]['financial_type_id']; + $defaults['financial_type_id'] = $details[$form->_eventId]['financial_type_id']; } if (!empty($details[$form->_eventId]['confirm_email_text'])) { - $defaults[$form->_pId]['receipt_text'] = $details[$form->_eventId]['confirm_email_text']; + $defaults['receipt_text'] = $details[$form->_eventId]['confirm_email_text']; } } @@ -76,6 +73,8 @@ public static function setDefaultValues(&$form) { $params = ['id' => $form->_pId]; CRM_Event_BAO_Participant::getValues($params, $defaults, $ids); + $defaults += $defaults[$form->_pId]; + unset($defaults[$form->_pId]); if ($form->_action == CRM_Core_Action::UPDATE) { $discounts = []; if (!empty($form->_values['discount'])) { @@ -85,54 +84,54 @@ public static function setDefaultValues(&$form) { } } - if ($form->_discountId && !empty($discounts[$defaults[$form->_pId]['discount_id']])) { - $form->assign('discount', $discounts[$defaults[$form->_pId]['discount_id']]); + if ($form->_discountId && !empty($discounts[$defaults['discount_id']])) { + $form->assign('discount', $discounts[$defaults['discount_id']]); } - $form->assign('fee_amount', CRM_Utils_Array::value('fee_amount', $defaults[$form->_pId])); - $form->assign('fee_level', CRM_Utils_Array::value('fee_level', $defaults[$form->_pId])); + $form->assign('fee_amount', CRM_Utils_Array::value('fee_amount', $defaults)); + $form->assign('fee_level', CRM_Utils_Array::value('fee_level', $defaults)); } - $defaults[$form->_pId]['send_receipt'] = 0; + $defaults['send_receipt'] = 0; } else { - $defaults[$form->_pId]['send_receipt'] = (strtotime(CRM_Utils_Array::value('start_date', $details[$form->_eventId])) >= time()) ? 1 : 0; - $defaults[$form->_pId]['receive_date'] = date('Y-m-d H:i:s'); + $defaults['send_receipt'] = (strtotime(CRM_Utils_Array::value('start_date', $details[$form->_eventId])) >= time()) ? 1 : 0; + $defaults['receive_date'] = date('Y-m-d H:i:s'); } //CRM-11601 we should keep the record contribution //true by default while adding participant if ($form->_action == CRM_Core_Action::ADD && !$form->_mode && $form->_isPaidEvent) { - $defaults[$form->_pId]['record_contribution'] = 1; + $defaults['record_contribution'] = 1; } //CRM-13420 if (empty($defaults['payment_instrument_id'])) { - $defaults[$form->_pId]['payment_instrument_id'] = key(CRM_Core_OptionGroup::values('payment_instrument', FALSE, FALSE, FALSE, 'AND is_default = 1')); + $defaults['payment_instrument_id'] = key(CRM_Core_OptionGroup::values('payment_instrument', FALSE, FALSE, FALSE, 'AND is_default = 1')); } if ($form->_mode) { $config = CRM_Core_Config::singleton(); // set default country from config if no country set - if (empty($defaults[$form->_pId]["billing_country_id-{$form->_bltID}"])) { - $defaults[$form->_pId]["billing_country_id-{$form->_bltID}"] = $config->defaultContactCountry; + if (empty($defaults["billing_country_id-{$form->_bltID}"])) { + $defaults["billing_country_id-{$form->_bltID}"] = $config->defaultContactCountry; } if (empty($defaults["billing_state_province_id-{$form->_bltID}"])) { - $defaults[$form->_pId]["billing_state_province_id-{$form->_bltID}"] = $config->defaultContactStateProvince; + $defaults["billing_state_province_id-{$form->_bltID}"] = $config->defaultContactStateProvince; } $billingDefaults = $form->getProfileDefaults('Billing', $form->_contactId); - $defaults[$form->_pId] = array_merge($defaults[$form->_pId], $billingDefaults); + $defaults = array_merge($defaults, $billingDefaults); } // if user has selected discount use that to set default if (isset($form->_discountId)) { - $defaults[$form->_pId]['discount_id'] = $form->_discountId; + $defaults['discount_id'] = $form->_discountId; //hack to set defaults for already selected discount value if ($form->_action == CRM_Core_Action::UPDATE && !$form->_originalDiscountId) { - $form->_originalDiscountId = $defaults[$form->_pId]['discount_id']; + $form->_originalDiscountId = $defaults['discount_id']; if ($form->_originalDiscountId) { - $defaults[$form->_pId]['discount_id'] = $form->_originalDiscountId; + $defaults['discount_id'] = $form->_originalDiscountId; } } $discountId = $form->_discountId; @@ -150,7 +149,7 @@ public static function setDefaultValues(&$form) { if (($form->_action == CRM_Core_Action::ADD) && $form->_eventId && $discountId) { // this case is for add mode, where we show discount automatically - $defaults[$form->_pId]['discount_id'] = $discountId; + $defaults['discount_id'] = $discountId; } if ($priceSetId) { @@ -165,7 +164,7 @@ public static function setDefaultValues(&$form) { )) { $priceSetValues = self::setDefaultPriceSet($form->_pId, $form->_eventId); if (!empty($priceSetValues)) { - $defaults[$form->_pId] = array_merge($defaults[$form->_pId], $priceSetValues); + $defaults = array_merge($defaults, $priceSetValues); } } @@ -178,33 +177,33 @@ public static function setDefaultValues(&$form) { } if ($val['html_type'] == 'CheckBox') { - $defaults[$form->_pId]["price_{$key}"][$keys] = 1; + $defaults["price_{$key}"][$keys] = 1; } else { - $defaults[$form->_pId]["price_{$key}"] = $keys; + $defaults["price_{$key}"] = $keys; } } } } } - $form->assign('totalAmount', CRM_Utils_Array::value('fee_amount', $defaults[$form->_pId])); + $form->assign('totalAmount', CRM_Utils_Array::value('fee_amount', $defaults)); if ($form->_action == CRM_Core_Action::UPDATE) { - $fee_level = $defaults[$form->_pId]['fee_level']; + $fee_level = $defaults['fee_level']; CRM_Event_BAO_Participant::fixEventLevel($fee_level); $form->assign('fee_level', $fee_level); - $form->assign('fee_amount', CRM_Utils_Array::value('fee_amount', $defaults[$form->_pId])); + $form->assign('fee_amount', CRM_Utils_Array::value('fee_amount', $defaults)); } } //CRM-4453 - if (!empty($defaults[$form->_pId]['participant_fee_currency'])) { - $form->assign('fee_currency', $defaults[$form->_pId]['participant_fee_currency']); + if (!empty($defaults['participant_fee_currency'])) { + $form->assign('fee_currency', $defaults['participant_fee_currency']); } // CRM-4395 if ($contriId = $form->get('onlinePendingContributionId')) { - $defaults[$form->_pId]['record_contribution'] = 1; + $defaults['record_contribution'] = 1; $contribution = new CRM_Contribute_DAO_Contribution(); $contribution->id = $contriId; $contribution->find(TRUE); @@ -215,10 +214,10 @@ public static function setDefaultValues(&$form) { 'receive_date', 'total_amount', ] as $f) { - $defaults[$form->_pId][$f] = $contribution->$f; + $defaults[$f] = $contribution->$f; } } - return $defaults[$form->_pId]; + return $defaults; } /** diff --git a/CRM/Event/Form/EventFormTrait.php b/CRM/Event/Form/EventFormTrait.php new file mode 100644 index 000000000000..442cf5619a4f --- /dev/null +++ b/CRM/Event/Form/EventFormTrait.php @@ -0,0 +1,95 @@ +isDefined('Event')) { + return $this->lookup('Event', $fieldName); + } + $id = $this->getEventID(); + if ($id) { + $this->define('Event', 'Event', ['id' => $id]); + return $this->lookup('Event', $fieldName); + } + return NULL; + } + + /** + * Get the selected Event ID. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + * @noinspection PhpDocMissingThrowsInspection + */ + public function getEventID(): ?int { + throw new CRM_Core_Exception('`getEventID` must be implemented'); + } + + /** + * Get id of participant being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + */ + public function getParticipantID(): ?int { + throw new CRM_Core_Exception('`getParticipantID` must be implemented'); + } + + /** + * Get a value from the participant being acted on. + * + * All values returned in apiv4 format. Escaping may be required. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @param string $fieldName + * + * @return mixed + * + * @throws \CRM_Core_Exception + */ + public function getParticipantValue(string $fieldName) { + if ($this->isDefined('Participant')) { + return $this->lookup('Participant', $fieldName); + } + $id = $this->getParticipantID(); + if ($id) { + $this->define('Participant', 'Participant', ['id' => $id]); + return $this->lookup('Participant', $fieldName); + } + return NULL; + } + +} diff --git a/CRM/Event/Form/ManageEvent.php b/CRM/Event/Form/ManageEvent.php index f496bdc6704a..0bd71043f425 100644 --- a/CRM/Event/Form/ManageEvent.php +++ b/CRM/Event/Form/ManageEvent.php @@ -177,6 +177,9 @@ public function preProcess() { if (CRM_Core_Permission::check($checkPermission) || !empty($ufCreate) || !empty($ufEdit)) { $this->assign('perm', TRUE); } + else { + $this->assign('perm', FALSE); + } // also set up tabs CRM_Event_Form_ManageEvent_TabHeader::build($this); @@ -269,12 +272,6 @@ public function buildQuickForm() { 'name' => ts('Save'), 'isDefault' => TRUE, ], - [ - 'type' => 'upload', - 'name' => ts('Save and Done'), - 'spacing' => '                 ', - 'subName' => 'done', - ], [ 'type' => 'cancel', 'name' => ts('Cancel'), diff --git a/CRM/Event/Form/ManageEvent/EventInfo.php b/CRM/Event/Form/ManageEvent/EventInfo.php index 9743f45c4566..0fd442b025dc 100644 --- a/CRM/Event/Form/ManageEvent/EventInfo.php +++ b/CRM/Event/Form/ManageEvent/EventInfo.php @@ -217,12 +217,12 @@ public function postProcess() { //format params $params['start_date'] = $params['start_date'] ?? NULL; $params['end_date'] = $params['end_date'] ?? NULL; - $params['has_waitlist'] = CRM_Utils_Array::value('has_waitlist', $params, FALSE); - $params['is_map'] = CRM_Utils_Array::value('is_map', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['is_public'] = CRM_Utils_Array::value('is_public', $params, FALSE); - $params['is_share'] = CRM_Utils_Array::value('is_share', $params, FALSE); - $params['default_role_id'] = CRM_Utils_Array::value('default_role_id', $params, FALSE); + $params['has_waitlist'] = $params['has_waitlist'] ?? FALSE; + $params['is_map'] = $params['is_map'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['is_public'] = $params['is_public'] ?? FALSE; + $params['is_share'] = $params['is_share'] ?? FALSE; + $params['default_role_id'] = $params['default_role_id'] ?? FALSE; $params['id'] = $this->_id; //merge params with defaults from templates @@ -244,22 +244,11 @@ public function postProcess() { } $this->set('id', $event->id); - $this->postProcessHook(); if ($this->_action & CRM_Core_Action::ADD) { - $url = 'civicrm/event/manage/location'; - $urlParams = "action=update&reset=1&id={$event->id}"; - // special case for 'Save and Done' consistency. - if ('_qf_EventInfo_upload_done' === $this->controller->getButtonName('submit')) { - $url = 'civicrm/event/manage'; - $urlParams = 'reset=1'; - CRM_Core_Session::setStatus(ts("'%1' information has been saved.", - [1 => $this->getTitle()] - ), ts('Saved'), 'success'); - } - - CRM_Utils_System::redirect(CRM_Utils_System::url($url, $urlParams)); + $url = CRM_Utils_System::url('civicrm/event/manage/location', "action=update&reset=1&id={$event->id}"); + CRM_Utils_System::redirect($url); } parent::endPostProcess(); diff --git a/CRM/Event/Form/ManageEvent/Fee.php b/CRM/Event/Form/ManageEvent/Fee.php index 52eb1eb987a7..901b1a8c9c2f 100644 --- a/CRM/Event/Form/ManageEvent/Fee.php +++ b/CRM/Event/Form/ManageEvent/Fee.php @@ -246,14 +246,15 @@ public function buildQuickForm() { ); // financial type - if (!CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() || - (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() && CRM_Core_Permission::check('administer CiviCRM Financial Types'))) { - $this->addSelect('financial_type_id'); - } - else { - CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes, CRM_Core_Action::ADD); - $this->addSelect('financial_type_id', ['context' => 'search', 'options' => $financialTypes]); + CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes, CRM_Core_Action::ADD); + $financialOptions = [ + 'options' => $financialTypes, + ]; + if (!CRM_Core_Permission::check('administer CiviCRM Financial Types')) { + $financialOptions['context'] = 'search'; } + $this->addSelect('financial_type_id', $financialOptions); + // add pay later options $this->addElement('checkbox', 'is_pay_later', ts('Pay later option'), NULL, ['onclick' => "return showHideByValue('is_pay_later','','payLaterOptions','block','radio',false);"] @@ -550,8 +551,8 @@ public function postProcess() { $params['payment_processor'] = 'null'; } - $params['is_pay_later'] = CRM_Utils_Array::value('is_pay_later', $params, 0); - $params['is_billing_required'] = CRM_Utils_Array::value('is_billing_required', $params, 0); + $params['is_pay_later'] = $params['is_pay_later'] ?? 0; + $params['is_billing_required'] = $params['is_billing_required'] ?? 0; if ($this->_id) { diff --git a/CRM/Event/Form/ManageEvent/Registration.php b/CRM/Event/Form/ManageEvent/Registration.php index 4d288953204c..7b51f7281d0a 100644 --- a/CRM/Event/Form/ManageEvent/Registration.php +++ b/CRM/Event/Form/ManageEvent/Registration.php @@ -33,10 +33,10 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent * Set variables up before form is built. */ public function preProcess() { - $this->_addProfileBottom = CRM_Utils_Array::value('addProfileBottom', $_GET, FALSE); - $this->_profileBottomNum = CRM_Utils_Array::value('addProfileNum', $_GET, 0); - $this->_addProfileBottomAdd = CRM_Utils_Array::value('addProfileBottomAdd', $_GET, FALSE); - $this->_profileBottomNumAdd = CRM_Utils_Array::value('addProfileNumAdd', $_GET, 0); + $this->_addProfileBottom = $_GET['addProfileBottom'] ?? FALSE; + $this->_profileBottomNum = $_GET['addProfileNum'] ?? 0; + $this->_addProfileBottomAdd = $_GET['addProfileBottomAdd'] ?? FALSE; + $this->_profileBottomNumAdd = $_GET['addProfileNumAdd'] ?? 0; parent::preProcess(); $this->setSelectedChild('registration'); @@ -783,12 +783,12 @@ public function postProcess() { $params['id'] = $this->_id; // format params - $params['is_online_registration'] = CRM_Utils_Array::value('is_online_registration', $params, FALSE); + $params['is_online_registration'] = $params['is_online_registration'] ?? FALSE; // CRM-11182 - $params['is_confirm_enabled'] = CRM_Utils_Array::value('is_confirm_enabled', $params, FALSE); - $params['is_multiple_registrations'] = CRM_Utils_Array::value('is_multiple_registrations', $params, FALSE); - $params['allow_same_participant_emails'] = CRM_Utils_Array::value('allow_same_participant_emails', $params, FALSE); - $params['requires_approval'] = CRM_Utils_Array::value('requires_approval', $params, FALSE); + $params['is_confirm_enabled'] = $params['is_confirm_enabled'] ?? FALSE; + $params['is_multiple_registrations'] = $params['is_multiple_registrations'] ?? FALSE; + $params['allow_same_participant_emails'] = $params['allow_same_participant_emails'] ?? FALSE; + $params['requires_approval'] = $params['requires_approval'] ?? FALSE; // reset is_email confirm if not online reg if (!$params['is_online_registration']) { @@ -922,7 +922,7 @@ public function postProcess() { self::addMultipleProfiles($additionalProfileIds, $params, 'additional_custom_post_id_multiple'); $cantDedupe = FALSE; - $rgId = CRM_Utils_Array::value('dedupe_rule_group_id', $params, 0); + $rgId = $params['dedupe_rule_group_id'] ?? 0; switch (self::canProfilesDedupe($profileIds, $rgId)) { case 0: diff --git a/CRM/Event/Form/ManageEvent/Repeat.php b/CRM/Event/Form/ManageEvent/Repeat.php index f84c3de49420..74c24246df7c 100644 --- a/CRM/Event/Form/ManageEvent/Repeat.php +++ b/CRM/Event/Form/ManageEvent/Repeat.php @@ -205,7 +205,7 @@ public static function getParticipantCountforEvent($listOfRelatedEntities = []) * * @return array */ - public static function checkRegistrationForEvents($eventID) { + public static function checkRegistrationForEvents($eventID): array { $eventIdsWithNoRegistration = []; if ($eventID) { $getRelatedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesFor($eventID, 'civicrm_event', TRUE); @@ -218,8 +218,7 @@ public static function checkRegistrationForEvents($eventID) { } } } - CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted = $eventIdsWithNoRegistration; - return CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted; + return $eventIdsWithNoRegistration; } } diff --git a/CRM/Event/Form/Participant.php b/CRM/Event/Form/Participant.php index b066d7edd2d3..accef1c6737e 100644 --- a/CRM/Event/Form/Participant.php +++ b/CRM/Event/Form/Participant.php @@ -25,6 +25,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment use EntityLookupTrait; use CRM_Contact_Form_ContactFormTrait; + use CRM_Event_Form_EventFormTrait; /** * Participant ID - use getParticipantID. @@ -94,13 +95,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment */ public $_contactId; - /** - * Array of event values. - * - * @var array - */ - protected $_event; - /** * Are we operating in "single mode", i.e. adding / editing only * one participant record, or is this a batch add operation. @@ -140,13 +134,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment */ protected $_statusId = NULL; - /** - * Cache all the participant statuses. - * - * @var array - */ - protected $_participantStatuses; - /** * Participant mode. * @@ -207,13 +194,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment */ public $_onlinePendingContributionId; - /** - * Stored participant record. - * - * @var array - */ - protected $participantRecord; - /** * Params for creating a payment to add to the contribution. * @@ -340,14 +320,6 @@ public function preProcess() { CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.')); } - if ($this->_action & CRM_Core_Action::DELETE) { - // check delete permission for contribution - if ($this->_id && $this->_paymentId && !CRM_Core_Permission::checkActionPermission('CiviContribute', $this->_action)) { - CRM_Core_Error::statusBounce(ts("This Participant is linked to a contribution. You must have 'delete in CiviContribute' permission in order to delete this record.")); - } - return; - } - // when fee amount is included in form if (!empty($_POST['hidden_feeblock']) || !empty($_POST['send_receipt'])) { if ($this->_submitValues['event_id']) { @@ -418,25 +390,22 @@ public function setDefaultValues(): array { $defaults = []; - if ($this->_action & CRM_Core_Action::DELETE) { - return $defaults; - } - if ($this->_id) { $ids = []; $params = ['id' => $this->_id]; CRM_Event_BAO_Participant::getValues($params, $defaults, $ids); + $defaults = $defaults[$this->_id]; $sep = CRM_Core_DAO::VALUE_SEPARATOR; - if ($defaults[$this->_id]['role_id']) { - $roleIDs = explode($sep, $defaults[$this->_id]['role_id']); + if ($defaults['role_id']) { + $roleIDs = explode($sep, $defaults['role_id']); } - $this->_contactId = $defaults[$this->_id]['contact_id']; - $this->_statusId = $defaults[$this->_id]['participant_status_id']; + $this->_contactId = $defaults['contact_id']; + $this->_statusId = $defaults['participant_status_id']; //set defaults for note $noteDetails = CRM_Core_BAO_Note::getNote($this->_id, 'civicrm_participant'); - $defaults[$this->_id]['note'] = array_pop($noteDetails); + $defaults['note'] = array_pop($noteDetails); // Check if this is a primaryParticipant (registered for others) and retrieve additional participants if true (CRM-4859) if (CRM_Event_BAO_Participant::isPrimaryParticipant($this->_id)) { @@ -445,31 +414,31 @@ public function setDefaultValues(): array { $this->assign('additionalParticipants', $additionalParticipants ?? NULL); // Get registered_by contact ID and display_name if participant was registered by someone else (CRM-4859) - if (!empty($defaults[$this->_id]['participant_registered_by_id'])) { + if (!empty($defaults['participant_registered_by_id'])) { $registered_by_contact_id = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', - $defaults[$this->_id]['participant_registered_by_id'], + $defaults['participant_registered_by_id'], 'contact_id', 'id' ); - $this->assign('participant_registered_by_id', $defaults[$this->_id]['participant_registered_by_id']); + $this->assign('participant_registered_by_id', $defaults['participant_registered_by_id']); $this->assign('registered_by_display_name', CRM_Contact_BAO_Contact::displayName($registered_by_contact_id)); } $this->assign('registered_by_contact_id', $registered_by_contact_id ?? NULL); } elseif ($this->_contactID) { - $defaults[$this->_id]['contact_id'] = $this->_contactID; + $defaults['contact_id'] = $this->_contactID; } //setting default register date if ($this->_action == CRM_Core_Action::ADD) { $statuses = array_flip(CRM_Event_PseudoConstant::participantStatus()); - $defaults[$this->_id]['status_id'] = $statuses['Registered'] ?? NULL; - if (!empty($defaults[$this->_id]['event_id'])) { + $defaults['status_id'] = $statuses['Registered'] ?? NULL; + if (!empty($defaults['event_id'])) { $financialTypeID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', - $defaults[$this->_id]['event_id'], + $defaults['event_id'], 'financial_type_id' ); if ($financialTypeID) { - $defaults[$this->_id]['financial_type_id'] = $financialTypeID; + $defaults['financial_type_id'] = $financialTypeID; } } @@ -484,7 +453,7 @@ public function setDefaultValues(): array { if (empty($defaults["email-{$this->_bltID}"]) && !empty($defaults['email-Primary']) ) { - $defaults[$this->_id]["email-{$this->_bltID}"] = $defaults['email-Primary']; + $defaults["email-{$this->_bltID}"] = $defaults['email-Primary']; } } @@ -496,16 +465,16 @@ public function setDefaultValues(): array { if (!empty($submittedEvent[0])) { $eventID = $submittedEvent[0]; } - $defaults[$this->_id]['register_date'] = date('Y-m-d H:i:s'); + $defaults['register_date'] = date('Y-m-d H:i:s'); } else { - $defaults[$this->_id]['record_contribution'] = 0; + $defaults['record_contribution'] = 0; - if ($defaults[$this->_id]['participant_is_pay_later']) { + if ($defaults['participant_is_pay_later']) { $this->assign('participant_is_pay_later', TRUE); } - $eventID = $defaults[$this->_id]['event_id']; + $eventID = $defaults['event_id']; $this->_eventTypeId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $eventID, 'event_type_id', 'id'); @@ -517,8 +486,8 @@ public function setDefaultValues(): array { //assign event and role id, this is needed for Custom data building $sep = CRM_Core_DAO::VALUE_SEPARATOR; - if (!empty($defaults[$this->_id]['participant_role_id'])) { - $roleIDs = explode($sep, $defaults[$this->_id]['participant_role_id']); + if (!empty($defaults['participant_role_id'])) { + $roleIDs = explode($sep, $defaults['participant_role_id']); } if (isset($_POST['event_id'])) { $eventID = $_POST['event_id']; @@ -533,9 +502,9 @@ public function setDefaultValues(): array { 'default_role_id' ); if (empty($roleIDs)) { - $roleIDs = (array) $defaults[$this->_id]['participant_role_id'] = $roleID; + $roleIDs = (array) $defaults['participant_role_id'] = $roleID; } - $defaults[$this->_id]['event_id'] = $eventID; + $defaults['event_id'] = $eventID; } if (!empty($eventID)) { $this->_eventTypeId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $eventID, 'event_type_id', 'id'); @@ -546,7 +515,7 @@ public function setDefaultValues(): array { $roleIDs = explode(',', $urlRoleIDS); } if (isset($roleIDs)) { - $defaults[$this->_id]['role_id'] = implode(',', $roleIDs); + $defaults['role_id'] = implode(',', $roleIDs); } if (isset($eventID)) { @@ -556,8 +525,8 @@ public function setDefaultValues(): array { $this->assign('eventTypeID', $this->_eventTypeId); - $this->assign('event_is_test', CRM_Utils_Array::value('event_is_test', $defaults[$this->_id])); - return $defaults[$this->_id]; + $this->assign('event_is_test', CRM_Utils_Array::value('event_is_test', $defaults)); + return $defaults; } /** @@ -581,39 +550,6 @@ public function buildQuickForm() { $this->applyFilter('__ALL__', 'trim'); - if ($this->_action & CRM_Core_Action::DELETE) { - if ($this->_single) { - $additionalParticipant = count(CRM_Event_BAO_Event::buildCustomProfile($this->_id, - NULL, - $this->_contactId, - FALSE, - TRUE - )) - 1; - if ($additionalParticipant) { - $deleteParticipants = [ - 1 => ts('Delete this participant record along with associated participant record(s).'), - 2 => ts('Delete only this participant record.'), - ]; - $this->addRadio('delete_participant', NULL, $deleteParticipants, NULL, '
'); - $this->setDefaults(['delete_participant' => 1]); - } - $this->assign('additionalParticipant', $additionalParticipant); - } - $this->addButtons([ - [ - 'type' => 'next', - 'name' => ts('Delete'), - 'spacing' => '         ', - 'isDefault' => TRUE, - ], - [ - 'type' => 'cancel', - 'name' => ts('Cancel'), - ], - ]); - return; - } - if ($this->_single) { $contactField = $this->addEntityRef('contact_id', ts('Participant'), ['create' => TRUE, 'api' => ['extra' => ['email']]], TRUE); if ($this->_context !== 'standalone') { @@ -700,7 +636,7 @@ public function buildQuickForm() { $notificationStatusIds = implode(',', array_keys(array_intersect($participantStatusName, $notificationStatuses))); $this->assign('notificationStatusIds', $notificationStatusIds); - $this->_participantStatuses = $statusOptions = CRM_Event_BAO_Participant::buildOptions('status_id', 'create'); + $statusOptions = CRM_Event_BAO_Participant::buildOptions('status_id', 'create'); // Only show refund status when editing if ($this->_action & CRM_Core_Action::ADD) { @@ -733,7 +669,7 @@ public function buildQuickForm() { 'civicrm/contact/search', 'civicrm/group/search', ]; - if (!in_array($path, $excludeForPaths)) { + if (!$this->getParticipantID() && !in_array($path, $excludeForPaths)) { $buttons[] = [ 'type' => 'upload', 'name' => ts('Save and New'), @@ -774,13 +710,12 @@ public function addRules(): void { * list of errors to be posted back to the form */ public static function formRule($values, $files, $self) { - // If $values['_qf_Participant_next'] is Delete or // $values['event_id'] is empty, then return - // instead of proceeding further. - - if ((($values['_qf_Participant_next'] ?? NULL) === 'Delete') || - empty($values['event_id']) - ) { + // instead of proceeding further - this is legacy handling + // and it is unclear why but perhaps relates to the form's + // 'multitasking' & can go once the form is not overloaded? + // event_id is normally a required field.. + if (empty($values['event_id'])) { return TRUE; } @@ -853,26 +788,6 @@ public function postProcess() { // get the submitted form values. $params = $this->controller->exportValues($this->_name); - if ($this->_action & CRM_Core_Action::DELETE) { - if (($params['delete_participant'] ?? NULL) == 2) { - $additionalId = (CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->_id)); - $participantLinks = (CRM_Event_BAO_Participant::getAdditionalParticipantUrl($additionalId)); - } - if (($params['delete_participant'] ?? NULL) == 1) { - $additionalIds = CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->_id); - foreach ($additionalIds as $value) { - CRM_Event_BAO_Participant::deleteParticipant($value); - } - } - CRM_Event_BAO_Participant::deleteParticipant($this->_id); - CRM_Core_Session::setStatus(ts('Selected participant was deleted successfully.'), ts('Record Deleted'), 'success'); - if (!empty($participantLinks)) { - $status = ts('The following participants no longer have an event fee recorded. You can edit their registration and record a replacement contribution by clicking the links below:') . '
' . $participantLinks; - CRM_Core_Session::setStatus($status, ts('Group Payment Deleted')); - } - return; - } - $statusMsg = $this->submit($params); CRM_Core_Session::setStatus($statusMsg, ts('Saved'), 'success'); $session = CRM_Core_Session::singleton(); @@ -931,7 +846,7 @@ public function submit($params) { $params['total_amount'] = CRM_Utils_Rule::cleanMoney($params['total_amount']); } if ($this->_isPaidEvent) { - [$contributionParams, $lineItem, $additionalParticipantDetails, $params] = $this->preparePaidEventProcessing($params); + [$contributionParams, $lineItem, $params] = $this->preparePaidEventProcessing($params); } $this->_params = $params; @@ -951,15 +866,10 @@ public function submit($params) { // Retrieve the name and email of the current user - this will be the FROM for the receipt email $userName = CRM_Core_Session::singleton()->getLoggedInContactDisplayName(); - if ($this->_contactId) { - [, $this->_contributorEmail, $this->_toDoNotEmail] = CRM_Contact_BAO_Contact::getContactDetails($this->_contactId); - } - //modify params according to parameter used in create //participant method (addParticipant) $this->_params['participant_status_id'] = $params['status_id']; $this->_params['participant_role_id'] = $this->getSubmittedValue('role_id'); - $this->assign('participant_status_id', $params['status_id']); $now = date('YmdHis'); @@ -983,7 +893,7 @@ public function submit($params) { // set email for primary location. $fields['email-Primary'] = 1; - $params['email-Primary'] = $params["email-{$this->_bltID}"] = $this->_contributorEmail; + $params['email-Primary'] = $params["email-{$this->_bltID}"] = $this->getContactValue('email_primary.email'); // now set the values for the billing location. foreach ($this->_fields as $name => $dontCare) { @@ -994,7 +904,7 @@ public function submit($params) { $params["address_name-{$this->_bltID}"] = ($params['billing_first_name'] ?? '') . ' ' . ($params['billing_middle_name'] ?? '') . ' ' . - CRM_Utils_Array::value('billing_last_name', $params); + ($params['billing_last_name'] ?? ''); $params["address_name-{$this->_bltID}"] = trim($params["address_name-{$this->_bltID}"]); $fields["address_name-{$this->_bltID}"] = 1; @@ -1032,7 +942,7 @@ public function submit($params) { // so we copy stuff over to first_name etc. $paymentParams = $this->_params; if (!empty($this->_params['send_receipt'])) { - $paymentParams['email'] = $this->_contributorEmail; + $paymentParams['email'] = $this->getContactValue('email_primary.email'); } // The only reason for merging in the 'contact_id' rather than ensuring it is set @@ -1074,9 +984,6 @@ public function submit($params) { } $this->set('params', $this->_params); - $this->assign('trxn_id', $result['trxn_id']); - $this->assign('receive_date', $this->_params['receive_date']); - //add contribution record $this->_params['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $params['event_id'], 'financial_type_id'); @@ -1178,16 +1085,7 @@ public function submit($params) { foreach ($recordContribution as $f) { $contributionParams[$f] = $this->_params[$f] ?? NULL; - if ($f === 'trxn_id') { - $this->assign('trxn_id', $contributionParams[$f]); - } } - - //insert financial type name in receipt. - $this->assign('financialTypeName', CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', - $contributionParams['financial_type_id'])); - // legacy support - $this->assign('contributionTypeName', CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $contributionParams['financial_type_id'])); $contributionParams['skipLineItem'] = 1; if ($this->_id) { $contributionParams['contribution_mode'] = 'participant'; @@ -1219,7 +1117,6 @@ public function submit($params) { // the owed amount $contributionParams['total_amount'] = $amountOwed; $contributionParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending'); - $this->assign('balanceAmount', $amountOwed - $params['total_amount']); $this->storePaymentCreateParams($params); } } @@ -1281,7 +1178,7 @@ public function submit($params) { } $lineItem[$this->_priceSetId][$lineKey] = $line; } - CRM_Price_BAO_LineItem::processPriceSet($participants[$num]->id, $lineItem, CRM_Utils_Array::value($num, $contributions, NULL), 'civicrm_participant'); + CRM_Price_BAO_LineItem::processPriceSet($participants[$num]->id, $lineItem, $contributions[$num] ?? NULL, 'civicrm_participant'); } } } @@ -1305,7 +1202,7 @@ public function submit($params) { } if (!empty($params['send_receipt'])) { - $result = $this->sendReceipts($params, $participants, $lineItem[0] ?? [], $additionalParticipantDetails ?? []); + $result = $this->sendReceipts($params, $participants); } // set the participant id if it is not set @@ -1433,13 +1330,10 @@ public function buildEventFeeForm($form) { $lineItem = []; $totalTaxAmount = 0; if (!CRM_Utils_System::isNull($form->_values['line_items'] ?? NULL)) { - $lineItem[] = $form->_values['line_items']; foreach ($form->_values['line_items'] as $key => $value) { $totalTaxAmount = $value['tax_amount'] + $totalTaxAmount; } } - $form->assign('totalTaxAmount', Civi::settings()->get('invoicing') ? ($totalTaxAmount ?? NULL) : NULL); - $form->assign('lineItem', empty($lineItem) ? FALSE : $lineItem); $discounts = []; if (!empty($form->_values['discount'])) { foreach ($form->_values['discount'] as $key => $value) { @@ -1533,8 +1427,8 @@ public function buildEventFeeForm($form) { // Retrieve the name and email of the contact - form will be the TO for receipt email ( only if context is not standalone) if ($form->_context !== 'standalone') { if ($form->getContactID()) { - [, $form->_contributorEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($form->_contactId); - $form->assign('email', $form->_contributorEmail); + // @todo - this is likely unneeded now. + $form->assign('email', $this->getContactValue('email_primary.email')); } else { //show email block for batch update for event @@ -1585,7 +1479,7 @@ protected function preparePaidEventProcessing($params): array { //also add additional participant's fee level/priceset if (CRM_Event_BAO_Participant::isPrimaryParticipant($this->_id)) { $additionalIds = CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->_id); - $hasLineItems = CRM_Utils_Array::value('priceSetId', $params, FALSE); + $hasLineItems = $params['priceSetId'] ?? FALSE; $additionalParticipantDetails = $this->getFeeDetails($additionalIds, $hasLineItems); } } @@ -1634,25 +1528,10 @@ protected function preparePaidEventProcessing($params): array { $this->_lineItem = $lineItem; $lineItem = array_merge($lineItem, $additionalParticipantDetails); - - $participantCount = []; - foreach ($lineItem as $k) { - foreach ($k as $v) { - if (CRM_Utils_Array::value('participant_count', $v) > 0) { - $participantCount[] = $v['participant_count']; - } - } - } } - if (isset($participantCount)) { - $this->assign('pricesetFieldsCount', $participantCount); - } - $this->assign('lineItem', empty($lineItem[0]) || $this->isQuickConfig() ? FALSE : $lineItem); } - else { - $this->assign('amount_level', $params['amount_level']); - } - return [$contributionParams, $lineItem, $additionalParticipantDetails, $params]; + + return [$contributionParams, $lineItem, $params]; } /** @@ -1663,43 +1542,7 @@ protected function preparePaidEventProcessing($params): array { * @throws \CRM_Core_Exception */ protected function assignEventDetailsToTpl($eventID, $participantRoles, $receiptText): void { - //use of the message template below requires variables in different format - $events = []; - $returnProperties = ['event_type_id', 'fee_label', 'start_date', 'end_date', 'is_show_location', 'title']; - - //get all event details. - CRM_Core_DAO::commonRetrieveAll('CRM_Event_DAO_Event', 'id', $eventID, $events, $returnProperties); - $event = $events[$eventID]; - unset($event['start_date']); - unset($event['end_date']); - - $role = CRM_Event_PseudoConstant::participantRole(); - - if (is_array($participantRoles)) { - $selectedRoles = []; - foreach ($participantRoles as $roleId) { - $selectedRoles[] = $role[$roleId]; - } - $event['participant_role'] = implode(', ', $selectedRoles); - } - else { - $event['participant_role'] = $role[$participantRoles] ?? NULL; - } - $event['is_monetary'] = $this->_isPaidEvent; - - if ($receiptText) { - $event['confirm_email_text'] = $receiptText; - } - $this->assign('event', $event); - $this->assign('isShowLocation', $event['is_show_location']); - if (($event['is_show_location'] ?? NULL) == 1) { - $locationParams = [ - 'entity_id' => $eventID, - 'entity_table' => 'civicrm_event', - ]; - $location = CRM_Core_BAO_Location::getValues($locationParams, TRUE); - $this->assign('location', $location); - } + $this->assign('event', ['confirm_email_text' => $receiptText]); } /** @@ -1743,7 +1586,7 @@ protected function processContribution( 'invoice_id' => $params['invoiceID'], 'currency' => $params['currencyID'], 'source' => !empty($params['participant_source']) ? $params['participant_source'] : $params['description'], - 'is_pay_later' => CRM_Utils_Array::value('is_pay_later', $params, 0), + 'is_pay_later' => $params['is_pay_later'] ?? 0, 'campaign_id' => $params['campaign_id'] ?? NULL, 'card_type_id' => $params['card_type_id'] ?? NULL, 'pan_truncation' => $params['pan_truncation'] ?? NULL, @@ -1782,12 +1625,7 @@ protected function processContribution( } $contribParams['revenue_recognition_date'] = $this->getRevenueRecognitionDate(); - //create an contribution address - // The concept of contributeMode is deprecated. Elsewhere we use the function processBillingAddress() - although - // currently that is only inherited by back-office forms. - if ($form->_contributeMode != 'notify' && empty($params['is_pay_later'])) { - $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $form->_bltID); - } + $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); $contribParams['skipLineItem'] = 1; $contribParams['skipCleanMoney'] = 1; @@ -1796,12 +1634,6 @@ protected function processContribution( // CRM-11124 CRM_Event_BAO_Participant::createDiscountTrxn($form->_eventId, $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params)); - // process soft credit / pcp pages - if (!empty($params['pcp_made_through_id'])) { - CRM_Contribute_BAO_ContributionSoft::formatSoftCreditParams($params, $form); - CRM_Contribute_BAO_ContributionSoft::processSoftContribution($params, $contribution); - } - $transaction->commit(); return $contribution; @@ -1835,7 +1667,7 @@ protected function addParticipant(&$form, $params, $contactID) { $participantFields['participant_source']['maxlength'] ), 'fee_level' => $params['amount_level'] ?? NULL, - 'is_pay_later' => CRM_Utils_Array::value('is_pay_later', $params, 0), + 'is_pay_later' => $params['is_pay_later'] ?? 0, 'fee_amount' => $params['fee_amount'] ?? NULL, 'registered_by_id' => $params['registered_by_id'] ?? NULL, 'discount_id' => $params['discount_id'] ?? NULL, @@ -1893,36 +1725,6 @@ protected function isPaymentOnExistingContribution(): bool { return ($this->getParticipantID() && $this->_action & CRM_Core_Action::UPDATE) && $this->_paymentId; } - /** - * Get the value for a field relating to the event. - * - * @param string $fieldName - * - * @return mixed - * @throws \CRM_Core_Exception - */ - protected function getEventValue(string $fieldName) { - if (!isset($this->_event)) { - $this->_event = civicrm_api3('Event', 'getsingle', ['id' => $this->_eventId]); - } - return $this->_event[$fieldName]; - } - - /** - * Get a value from the existing participant record (applies to edits). - * - * @param string $fieldName - * - * @return array - * @throws \CRM_Core_Exception - */ - protected function getParticipantValue($fieldName) { - if (!$this->participantRecord) { - $this->participantRecord = civicrm_api3('Participant', 'getsingle', ['id' => $this->getParticipantID()]); - } - return $this->participantRecord[$fieldName] ?? $this->participantRecord['participant_' . $fieldName]; - } - /** * Get id of participant being edited. * @@ -2085,159 +1887,61 @@ protected function assignUrlPath() { /** * @param $params * @param array $participants - * @param $lineItem - * @param $additionalParticipantDetails * * @return array * @throws \CRM_Core_Exception * @throws \Brick\Money\Exception\UnknownCurrencyException */ - protected function sendReceipts($params, array $participants, $lineItem, $additionalParticipantDetails): array { + protected function sendReceipts($params, array $participants): array { $sent = []; $notSent = []; - $this->assign('module', 'Event Registration'); $this->assignEventDetailsToTpl($params['event_id'], CRM_Utils_Array::value('role_id', $params), CRM_Utils_Array::value('receipt_text', $params)); - // @todo - this is no longer in core templates as of 5.63 - // we should remove once we have done a 'push upgrade' on addresses - ie advised - // people to upgrade their templates in an upgrade message, as - // opposed to just updating unmodified templates. - $this->assign('isPrimary', (int) $this->_isPaidEvent); - if ($this->_isPaidEvent) { - $paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument(); - if (!$this->_mode) { - if (isset($params['payment_instrument_id'])) { - $this->assign('paidBy', - CRM_Utils_Array::value($params['payment_instrument_id'], - $paymentInstrument - ) - ); - } - } - } - $this->assign('checkNumber', $params['check_number'] ?? NULL); if ($this->_mode) { - $this->assignBillingName($params); - $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters( - $this->_params, - $this->_bltID - )); - $valuesForForm = CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($params); $this->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']); - $this->assign('is_pay_later', 0); } - $this->assign('register_date', $params['register_date']); - if (isset($params['receive_date'])) { - $this->assign('receive_date', $params['receive_date']); - } + $fromEmails = CRM_Event_BAO_Event::getFromEmailIds($this->getEventID()); + foreach ($participants as $num => $participant) { + $participantID = $participant->id; + $contactID = $participant->contact_id; + $key = 'contact_' . $contactID; - $customGroup = []; - $customFieldFilters = [ - 'ParticipantRole' => $this->getSubmittedValue('role_id'), - 'ParticipantEventName' => $this->getEventID(), - 'ParticipantEventType' => $this->getEventValue('event_type_id'), - ]; - $customFields = CRM_Core_BAO_CustomField::getViewableCustomFields('Participant', $customFieldFilters); - foreach ($params['custom'] as $fieldID => $values) { - foreach ($values as $fieldValue) { - $formattedValue = CRM_Core_BAO_CustomField::displayValue($fieldValue['value'], $fieldID, $participants[0]->id); - $customGroup[$customFields[$fieldID]['custom_group_id.title']][$customFields[$fieldID]['label']] = str_replace(' ', '', $formattedValue); + $this->define('Contact', $key, ['id' => $contactID]); + if (!$this->lookup($key, 'email_primary.email') || $this->lookup($key, 'do_not_email')) { + // try to send emails only if email id is present + // and the do-not-email option is not checked for that contact + $notSent[] = $contactID; + continue; } - } - $this->assign('customGroup', $customGroup); - foreach ($this->_contactIds as $num => $contactID) { - // Retrieve the name and email of the contact - this will be the TO for receipt email - [, $this->_contributorEmail, $this->_toDoNotEmail] = CRM_Contact_BAO_Contact::getContactDetails($contactID); - $waitStatus = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Waiting'"); $waitingStatus = $waitStatus[$params['status_id']] ?? NULL; if ($waitingStatus) { $this->assign('isOnWaitlist', TRUE); } - $this->assign('contactID', $contactID); - $this->assign('participantID', $participants[$num]->id); - $contributionID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', - $participants[$num]->id, 'contribution_id', 'participant_id' + $participantID, 'contribution_id', 'participant_id' ); - $totalAmount = 0; - if ($contributionID) { - // @todo - this should be temporary - we are looking to remove this variable from the template - // in favour of the {contribution.total_amount} token. - // In case this needs back-porting I have kept it as simple as possible. - $totalAmount = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Contribution', - $contributionID, 'id', 'total_amount' - ); - } - $this->assign('totalAmount', $params['total_amount'] ?? $totalAmount); - $this->_id = $participants[$num]->id; - - if ($this->_isPaidEvent) { - // fix amount for each of participants ( for bulk mode ) - $eventAmount = []; - $totalTaxAmount = 0; - - // add dataArray in the receipts in ADD and UPDATE condition - // dataArray contains the total tax amount for each tax rate, in the form [tax rate => total tax amount] - // include 0% tax rate if it exists because if $dataArray controls if tax is shown for each line item - // in the message templates and we want to show 0% tax if set, even if there is no total tax - $dataArray = []; - if ($this->_action & CRM_Core_Action::ADD) { - $line = $lineItem ?? []; - } - elseif ($this->_action & CRM_Core_Action::UPDATE) { - $line = $this->_values['line_items']; - } - if (Civi::settings()->get('invoicing')) { - foreach ($line as $key => $value) { - if (isset($value['tax_amount']) && isset($value['tax_rate'])) { - $totalTaxAmount += $value['tax_amount']; - if (isset($dataArray[(string) $value['tax_rate']])) { - $dataArray[(string) $value['tax_rate']] += $value['tax_amount']; - } - else { - $dataArray[(string) $value['tax_rate']] = $value['tax_amount']; - } - } - } - $this->assign('taxTerm', $this->getSalesTaxTerm()); - $this->assign('dataArray', $dataArray); - } - $eventAmount[$num] = [ - 'label' => preg_replace('//', '', $params['amount_level']), - 'amount' => $params['fee_amount'], - ]; - //as we are using same template for online & offline registration. - //So we have to build amount as array. - $eventAmount = array_merge($eventAmount, $additionalParticipantDetails); - $this->assign('amount', $eventAmount); - } - $this->assign('totalTaxAmount', $totalTaxAmount ?? 0); $sendTemplateParams = [ 'workflow' => 'event_offline_receipt', 'contactId' => $contactID, 'isTest' => !empty($this->_defaultValues['is_test']), 'PDFFilename' => ts('confirmation') . '.pdf', 'modelProps' => [ - 'participantID' => $this->_id, + 'participantID' => $participantID, 'eventID' => $params['event_id'], 'contributionID' => $contributionID, ], ]; - // try to send emails only if email id is present - // and the do-not-email option is not checked for that contact - if ($this->_contributorEmail and !$this->_toDoNotEmail) { - $sendTemplateParams['from'] = $params['from_email_address']; - $sendTemplateParams['toName'] = $this->getContactValue('display_name'); - $sendTemplateParams['toEmail'] = $this->_contributorEmail; - $sendTemplateParams['cc'] = $this->_fromEmails['cc'] ?? NULL; - $sendTemplateParams['bcc'] = $this->_fromEmails['bcc'] ?? NULL; - } + $sendTemplateParams['from'] = $params['from_email_address']; + $sendTemplateParams['toName'] = $this->lookup($key, 'display_name'); + $sendTemplateParams['toEmail'] = $this->lookup($key, 'email_primary.email'); + $sendTemplateParams['cc'] = $fromEmails['cc'] ?? NULL; + $sendTemplateParams['bcc'] = $fromEmails['bcc'] ?? NULL; //send email with pdf invoice if (Civi::settings()->get('invoice_is_email_pdf')) { @@ -2247,13 +1951,8 @@ protected function sendReceipts($params, array $participants, $lineItem, $additi [$mailSent] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); if ($mailSent) { $sent[] = $contactID; - foreach ($participants as $ids => $values) { - if ($values->contact_id == $contactID) { - $values->details = $params['receipt_text'] ?? NULL; - CRM_Activity_BAO_Activity::addActivity($values, 'Email'); - break; - } - } + $participant->details = $this->getSubmittedValue('receipt_text'); + CRM_Activity_BAO_Activity::addActivity($participant, 'Email'); } else { $notSent[] = $contactID; diff --git a/CRM/Event/Form/Participant/Delete.php b/CRM/Event/Form/Participant/Delete.php new file mode 100644 index 000000000000..f9634ee4e746 --- /dev/null +++ b/CRM/Event/Form/Participant/Delete.php @@ -0,0 +1,158 @@ +participantID === NULL) { + $id = CRM_Utils_Request::retrieve('id', 'Positive', $this); + $this->participantID = $id ? (int) $id : FALSE; + } + return $this->participantID ?: NULL; + } + + /** + * Get the selected Event ID. + * + * @return int|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpDocMissingThrowsInspection + * @noinspection PhpUnhandledExceptionInspection + */ + public function getEventID(): ?int { + return $this->getParticipantValue('event_id'); + } + + /** + * Get the relevant contact ID. + * + * @return int|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpDocMissingThrowsInspection + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContactID(): ?int { + return $this->getParticipantValue('contact_id'); + } + + /** + * Set variables up before form is built. + * + * @throws \CRM_Core_Exception + */ + public function preProcess(): void { + $this->setAction(CRM_Core_Action::DELETE); + $this->setTitle(ts('Delete participant record for %1', [1 => $this->getContactValue('display_name')])); + $contributionID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', + $this->getParticipantID(), 'contribution_id', 'participant_id' + ); + if ($contributionID && !CRM_Core_Permission::checkActionPermission('CiviContribute', CRM_Core_Action::DELETE)) { + CRM_Core_Error::statusBounce(ts("This Participant is linked to a contribution. You must have 'delete in CiviContribute' permission in order to delete this record.")); + } + } + + /** + * Build the form object. + * + * @throws \CRM_Core_Exception + */ + public function buildQuickForm(): void { + $additionalParticipant = (int) CRM_Core_DAO::singleValueQuery( + 'SELECT count(*) FROM civicrm_participant WHERE registered_by_id = %1 AND id <> registered_by_id', + [1 => [$this->getParticipantID(), 'Integer']] + ); + if ($additionalParticipant) { + $deleteParticipants = [ + 1 => ts('Delete this participant record along with associated participant record(s).'), + 2 => ts('Delete only this participant record.'), + ]; + $this->addRadio('delete_participant', NULL, $deleteParticipants, NULL, '
'); + $this->setDefaults(['delete_participant' => 1]); + } + $this->assign('additionalParticipant', $additionalParticipant); + $this->addButtons([ + [ + 'type' => 'next', + 'name' => ts('Delete'), + 'spacing' => '         ', + 'isDefault' => TRUE, + ], + [ + 'type' => 'cancel', + 'name' => ts('Cancel'), + ], + ]); + } + + /** + * Process the form submission. + * + * @throws \Civi\Core\Exception\DBQueryException + */ + public function postProcess(): void { + $deleteParticipantOption = (int) $this->getSubmittedValue('delete_participant'); + if ($deleteParticipantOption === 2) { + $additionalID = (CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->getParticipantID())); + $participantLinks = (CRM_Event_BAO_Participant::getAdditionalParticipantUrl($additionalID)); + } + if ($deleteParticipantOption === 1) { + $additionalIDs = CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->getParticipantID()); + foreach ($additionalIDs as $value) { + CRM_Event_BAO_Participant::deleteParticipant($value); + } + } + CRM_Event_BAO_Participant::deleteParticipant($this->getParticipantID()); + CRM_Core_Session::setStatus(ts('Selected participant was deleted successfully.'), ts('Record Deleted'), 'success'); + if (!empty($participantLinks)) { + $status = ts('The following participants no longer have an event fee recorded. You can edit their registration and record a replacement contribution by clicking the links below:') . '
' . $participantLinks; + CRM_Core_Session::setStatus($status, ts('Group Payment Deleted')); + } + } + +} diff --git a/CRM/Event/Form/ParticipantFeeSelection.php b/CRM/Event/Form/ParticipantFeeSelection.php index 1bfe38dee8d4..cbb5c49bc866 100644 --- a/CRM/Event/Form/ParticipantFeeSelection.php +++ b/CRM/Event/Form/ParticipantFeeSelection.php @@ -21,10 +21,17 @@ * */ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form { + use CRM_Event_Form_EventFormTrait; + use CRM_Contact_Form_ContactFormTrait; public $useLivePageJS = TRUE; - protected $_contactId = NULL; + /** + * @var int + * + * @deprecated + */ + protected $_contactId; protected $_contributorDisplayName = NULL; @@ -42,9 +49,12 @@ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form { public $_values = NULL; - public $_participantId = NULL; - - protected $_participantStatus = NULL; + /** + * @var int + * + * @deprecated use getParticipantID(). + */ + public $_participantId; protected $_paidAmount = NULL; @@ -53,26 +63,21 @@ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form { protected $contributionAmt = NULL; public function preProcess() { - $this->_participantId = CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE); - $this->_contactId = CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE); - $this->_eventId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', $this->_participantId, 'event_id'); - $this->_fromEmails = CRM_Event_BAO_Event::getFromEmailIds($this->_eventId); + $this->_fromEmails = CRM_Event_BAO_Event::getFromEmailIds($this->getEventID()); if ($this->getContributionID()) { $this->_isPaidEvent = TRUE; } $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, TRUE); - [$this->_contributorDisplayName, $this->_contributorEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactId); - $this->assign('displayName', $this->_contributorDisplayName); - $this->assign('email', $this->_contributorEmail); - - $this->_participantStatus = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $this->_participantId, 'status_id'); //set the payment mode - _mode property is defined in parent class $this->_mode = CRM_Utils_Request::retrieve('mode', 'String', $this); - $this->assign('contactId', $this->_contactId); - $this->assign('id', $this->_participantId); + [$this->_contributorDisplayName, $this->_contributorEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->getContactID()); + $this->assign('displayName', $this->getContactValue('display_name')); + $this->assign('email', $this->getContactValue('email_primary.email')); + $this->assign('contactId', $this->getContactID()); + $this->assign('id', $this->getParticipantID()); $paymentInfo = CRM_Contribute_BAO_Contribution::getPaymentInfo($this->_participantId, 'event'); $this->_paidAmount = $paymentInfo['paid']; @@ -103,10 +108,10 @@ public function preProcess() { */ public function getContributionID(): ?int { if ($this->contributionID === NULL) { - $this->contributionID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $this->_participantId, 'contribution_id', 'participant_id') ?: FALSE; + $this->contributionID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $this->getParticipantID(), 'contribution_id', 'participant_id') ?: FALSE; if (!$this->contributionID) { - $primaryParticipantID = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $this->_participantId, 'registered_by_id'); + $primaryParticipantID = $this->getParticipantValue('registered_by_id'); if ($primaryParticipantID) { $this->contributionID = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_ParticipantPayment', $primaryParticipantID, 'contribution_id', 'participant_id') ?: FALSE; } @@ -159,7 +164,7 @@ public function buildQuickForm() { $statuses = CRM_Event_PseudoConstant::participantStatus(); $this->assign('partiallyPaid', array_search('Partially paid', $statuses)); $this->assign('pendingRefund', array_search('Pending refund', $statuses)); - $this->assign('participantStatus', $this->_participantStatus); + $this->assign('participantStatus', $this->getParticipantValue('status_id')); $this->assign('currencySymbol', CRM_Core_BAO_Country::defaultCurrencySymbol()); @@ -365,11 +370,7 @@ private function emailReceipt(array $params): void { $this->assign('totalAmount', $this->contributionAmt); $this->assign('checkNumber', CRM_Utils_Array::value('check_number', $params)); } - // @todo isPrimary no longer used from 5.63 in core templates, remove - // once users have been 'pushed' to update their templates (via - // upgrade message - which we don't always do whenever we change - // a minor variable. - $this->assign('isPrimary', $this->_isPaidEvent); + $this->assign('register_date', $params['register_date']); // Retrieve the name and email of the contact - this will be the TO for receipt email @@ -420,7 +421,7 @@ private function emailReceipt(array $params): void { */ public function getEventID(): int { if (!$this->_eventId) { - $this->_eventId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', $this->_participantId, 'event_id'); + $this->_eventId = $this->getParticipantValue('event_id'); } return $this->_eventId; } @@ -451,4 +452,41 @@ public function getPriceSetID(): ?int { return $priceSetID; } + /** + * Get id of participant being acted on. + * + * @return int + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * No exception should be thrown... as it should be unreachable/overridden. + * @noinspection PhpUnhandledExceptionInspection + * @noinspection PhpDocMissingThrowsInspection + */ + public function getParticipantID(): int { + if (!$this->_participantId) { + $this->_participantId = (int) CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE); + } + return $this->_participantId; + } + + /** + * Get the contact ID. + * + * Override this for more complex retrieval as required by the form. + * + * @return int|null + * + * @noinspection PhpUnhandledExceptionInspection + * @noinspection PhpDocMissingThrowsInspection + */ + public function getContactID(): ?int { + if (!$this->_contactId) { + $this->_contactId = (int) $this->getParticipantValue('contact_id'); + } + return $this->_contactId; + } + } diff --git a/CRM/Event/Form/ParticipantView.php b/CRM/Event/Form/ParticipantView.php index 03406163fb59..c87906b92f89 100644 --- a/CRM/Event/Form/ParticipantView.php +++ b/CRM/Event/Form/ParticipantView.php @@ -180,8 +180,8 @@ public function preProcess() { ); } if (CRM_Core_Permission::check('delete in CiviEvent')) { - $recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/contact/view/participant', - "action=delete&reset=1&id={$values[$participantID]['id']}&cid={$values[$participantID]['contact_id']}&context=home" + $recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/participant/delete', + "reset=1&id={$values[$participantID]['id']}}" ); } diff --git a/CRM/Event/Form/Registration.php b/CRM/Event/Form/Registration.php index 84f61d77b5de..1595d77e05a2 100644 --- a/CRM/Event/Form/Registration.php +++ b/CRM/Event/Form/Registration.php @@ -20,20 +20,36 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { use CRM_Financial_Form_FrontEndPaymentFormTrait; + use CRM_Event_Form_EventFormTrait; /** * The id of the event we are processing. * * @var int + * + * @deprecated access via `getEventID` */ public $_eventId; /** - * Get the event it. + * Get the selected Event ID. + * + * @return int|null + * + * @throws \CRM_Core_Exception + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. * - * @return int */ - protected function getEventID(): int { + public function getEventID(): int { + if (!$this->_eventId) { + $this->_eventId = (int) CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE); + // this is the first time we are hitting this, so check for permissions here + if (!CRM_Core_Permission::event(CRM_Core_Permission::EDIT, $this->_eventId, 'register for events')) { + CRM_Core_Error::statusBounce(ts('You do not have permission to register for this event'), $this->getInfoPageUrl()); + } + } return $this->_eventId; } @@ -179,9 +195,11 @@ protected function getEventID(): int { /** * Set variables up before form is built. + * + * @throws \CRM_Core_Exception */ public function preProcess() { - $this->_eventId = (int) CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE); + $this->setTitle($this->getEventValue('title')); $this->_action = CRM_Utils_Request::retrieve('action', 'Alphanumeric', $this, FALSE, CRM_Core_Action::ADD); //CRM-4320 $this->_participantId = CRM_Utils_Request::retrieve('participantId', 'Positive', $this); @@ -221,20 +239,16 @@ public function preProcess() { $this->assign('showPaymentOnConfirm', $this->showPaymentOnConfirm); if (!$this->_values) { - // this is the first time we are hitting this, so check for permissions here - if (!CRM_Core_Permission::event(CRM_Core_Permission::EDIT, $this->_eventId, 'register for events')) { - CRM_Core_Error::statusBounce(ts('You do not have permission to register for this event'), $this->getInfoPageUrl()); - } // get all the values from the dao object $this->_values = $this->_fields = []; //retrieve event information - $params = ['id' => $this->_eventId]; + $params = ['id' => $this->getEventID()]; CRM_Event_BAO_Event::retrieve($params, $this->_values['event']); // check for is_monetary status - $isMonetary = $this->_values['event']['is_monetary'] ?? NULL; + $isMonetary = $this->getEventValue('is_monetary'); // check for ability to add contributions of type if ($isMonetary && CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() @@ -260,7 +274,7 @@ public function preProcess() { $this->set('additionalParticipantIds', $this->_additionalParticipantIds); } - $eventFull = CRM_Event_BAO_Participant::eventFull($this->_eventId, FALSE, + $eventFull = CRM_Event_BAO_Participant::eventFull($this->getEventID(), FALSE, $this->_values['event']['has_waitlist'] ?? NULL ); @@ -287,7 +301,7 @@ public function preProcess() { $participant_role = CRM_Core_OptionGroup::values('participant_role'); $this->_values['event']['participant_role'] = $participant_role["{$this->_values['event']['default_role_id']}"]; } - $isPayLater = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->_eventId, 'is_pay_later'); + $isPayLater = $this->getEventValue('is_pay_later'); $this->setPayLaterLabel($isPayLater ? $this->_values['event']['pay_later_text'] : ''); //check for various combinations for paylater, payment //process with paid event. @@ -369,8 +383,6 @@ public function preProcess() { $this->_contributeMode = $this->get('contributeMode'); $this->assign('contributeMode', $this->_contributeMode); - $this->setTitle($this->_values['event']['title']); - $this->assign('paidEvent', $this->_values['event']['is_monetary']); // we do not want to display recently viewed items on Registration pages @@ -461,8 +473,7 @@ public function assignToTemplate() { $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, $this->_bltID)); - // The concept of contributeMode is deprecated. - if ($this->_contributeMode === 'direct' && empty($params['is_pay_later'])) { + if ($this->getSubmittedValue('credit_card_number')) { if (isset($params['credit_card_exp_date'])) { $date = CRM_Utils_Date::format($params['credit_card_exp_date']); $date = CRM_Utils_Date::mysqlToIso($date); @@ -586,61 +597,54 @@ public static function initEventFee($form, $doNotIncludeExpiredFields, $priceSet } // get price info - if ($priceSetId) { - if ($form->_action & CRM_Core_Action::UPDATE) { - if (in_array(CRM_Utils_System::getClassName($form), ['CRM_Event_Form_Participant', 'CRM_Event_Form_Task_Register'])) { - $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_id, 'participant'); - } - else { - $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_participantId, 'participant'); - } - $required = FALSE; + if ($form->_action & CRM_Core_Action::UPDATE) { + if (in_array(CRM_Utils_System::getClassName($form), ['CRM_Event_Form_Participant', 'CRM_Event_Form_Task_Register'])) { + $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_id, 'participant'); } else { - $required = TRUE; + $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_participantId, 'participant'); } + } + $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId, NULL, $doNotIncludeExpiredFields); + $form->_priceSet = $priceSet[$priceSetId] ?? NULL; + $form->_values['fee'] = $form->_priceSet['fields'] ?? NULL; - $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId, $required, $doNotIncludeExpiredFields); - $form->_priceSet = $priceSet[$priceSetId] ?? NULL; - $form->_values['fee'] = $form->_priceSet['fields'] ?? NULL; - - //get the price set fields participant count. - //get option count info. - $form->_priceSet['optionsCountTotal'] = CRM_Price_BAO_PriceSet::getPricesetCount($priceSetId); - if ($form->_priceSet['optionsCountTotal']) { - $optionsCountDetails = []; - if (!empty($form->_priceSet['fields'])) { - foreach ($form->_priceSet['fields'] as $field) { - foreach ($field['options'] as $option) { - $count = CRM_Utils_Array::value('count', $option, 0); - $optionsCountDetails['fields'][$field['id']]['options'][$option['id']] = $count; - } - } - } - $form->_priceSet['optionsCountDetails'] = $optionsCountDetails; - } - - //get option max value info. - $optionsMaxValueTotal = 0; - $optionsMaxValueDetails = []; - + //get the price set fields participant count. + //get option count info. + $form->_priceSet['optionsCountTotal'] = CRM_Price_BAO_PriceSet::getPricesetCount($priceSetId); + if ($form->_priceSet['optionsCountTotal']) { + $optionsCountDetails = []; if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $maxVal = CRM_Utils_Array::value('max_value', $option, 0); - $optionsMaxValueDetails['fields'][$field['id']]['options'][$option['id']] = $maxVal; - $optionsMaxValueTotal += $maxVal; + $count = $option['count'] ?? 0; + $optionsCountDetails['fields'][$field['id']]['options'][$option['id']] = $count; } } } + $form->_priceSet['optionsCountDetails'] = $optionsCountDetails; + } + + //get option max value info. + $optionsMaxValueTotal = 0; + $optionsMaxValueDetails = []; - $form->_priceSet['optionsMaxValueTotal'] = $optionsMaxValueTotal; - if ($optionsMaxValueTotal) { - $form->_priceSet['optionsMaxValueDetails'] = $optionsMaxValueDetails; + if (!empty($form->_priceSet['fields'])) { + foreach ($form->_priceSet['fields'] as $field) { + foreach ($field['options'] as $option) { + $maxVal = $option['max_value'] ?? 0; + $optionsMaxValueDetails['fields'][$field['id']]['options'][$option['id']] = $maxVal; + $optionsMaxValueTotal += $maxVal; + } } - $form->set('priceSet', $form->_priceSet); } + $form->_priceSet['optionsMaxValueTotal'] = $optionsMaxValueTotal; + if ($optionsMaxValueTotal) { + $form->_priceSet['optionsMaxValueDetails'] = $optionsMaxValueDetails; + } + $form->set('priceSet', $form->_priceSet); + $eventFee = $form->_values['fee'] ?? NULL; if (!is_array($eventFee) || empty($eventFee)) { $form->_values['fee'] = []; @@ -1636,9 +1640,6 @@ private function sendMails($params, $registerByID, array $participantCount) { foreach ($additionalIDs as $participantID => $contactId) { if ($participantID == $registerByID) { - //set as Primary Participant - $this->assign('isPrimary', 1); - $customProfile = CRM_Event_BAO_Event::buildCustomProfile($participantID, $this->_values, NULL, $isTest); if (count($customProfile)) { @@ -1647,7 +1648,6 @@ private function sendMails($params, $registerByID, array $participantCount) { } } else { - $this->assign('isPrimary', 0); $this->assign('customProfile', NULL); } diff --git a/CRM/Event/Form/Registration/Confirm.php b/CRM/Event/Form/Registration/Confirm.php index 30161be569c1..5d84a66b683a 100644 --- a/CRM/Event/Form/Registration/Confirm.php +++ b/CRM/Event/Form/Registration/Confirm.php @@ -866,8 +866,6 @@ public function postProcess() { foreach ($additionalIDs as $participantID => $contactId) { $participantNum = 0; if ($participantID == $registerByID) { - //set as Primary Participant - $this->assign('isPrimary', 1); //build an array of custom profile and assigning it to template. $customProfile = CRM_Event_BAO_Event::buildCustomProfile($participantID, $this->_values, NULL, $isTest); @@ -887,8 +885,6 @@ public function postProcess() { $participantParams = ['id' => $participantID]; CRM_Event_BAO_Participant::getValues($participantParams, $participantValues, $ids); $this->_values['participant'] = $participantValues[$participantID]; - - $this->assign('isPrimary', 0); $this->assign('customProfile', NULL); //Additional Participant should get only it's payment information if (!empty($this->_amount)) { @@ -896,6 +892,7 @@ public function postProcess() { $params = $this->get('params'); $amount[$participantNum]['label'] = preg_replace('//', '', $params[$participantNum]['amount_level']); $amount[$participantNum]['amount'] = $params[$participantNum]['amount']; + // @todo - unused in core offline receipt template from 5.67. Remove at somepoint $this->assign('amounts', $amount); } if ($this->_lineItem) { @@ -1015,7 +1012,7 @@ private function processContribution( // The concept of contributeMode is deprecated. Elsewhere we use the function processBillingAddress() - although // currently that is only inherited by back-office forms. if ($form->_contributeMode != 'notify' && empty($params['is_pay_later'])) { - $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $form->_bltID); + $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); } $contribParams['skipLineItem'] = 1; @@ -1025,12 +1022,6 @@ private function processContribution( // CRM-11124 CRM_Event_BAO_Participant::createDiscountTrxn($form->_eventId, $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params)); - // process soft credit / pcp pages - if (!empty($params['pcp_made_through_id'])) { - CRM_Contribute_BAO_ContributionSoft::formatSoftCreditParams($params, $form); - CRM_Contribute_BAO_ContributionSoft::processSoftContribution($params, $contribution); - } - $transaction->commit(); return $contribution; @@ -1307,7 +1298,6 @@ public static function testSubmit($params) { $form->_values['custom_pre_id'] = $params['custom_pre_id'] ?? NULL; $form->_values['custom_post_id'] = $params['custom_post_id'] ?? NULL; $form->_values['event'] = $params['event'] ?? NULL; - $form->_contributeMode = $params['contributeMode']; $eventParams = ['id' => $params['id']]; CRM_Event_BAO_Event::retrieve($eventParams, $form->_values['event']); $form->set('registerByID', $params['registerByID']); diff --git a/CRM/Event/Form/Registration/Register.php b/CRM/Event/Form/Registration/Register.php index 1a3e3adc1491..a3614cfba521 100644 --- a/CRM/Event/Form/Registration/Register.php +++ b/CRM/Event/Form/Registration/Register.php @@ -189,7 +189,26 @@ public function preProcess() { // get the participant values from EventFees.php, CRM-4320 if ($this->_allowConfirmation) { - CRM_Event_Form_EventFees::preProcess($this); + $this->eventFeeWrangling($this); + } + } + + /** + * This is previously shared code which is probably of little value. + * + * @param CRM_Core_Form $form + * + * @throws \CRM_Core_Exception + */ + private function eventFeeWrangling($form) { + $form->_pId = CRM_Utils_Request::retrieve('participantId', 'Positive', $form); + $form->_discountId = CRM_Utils_Request::retrieve('discountId', 'Positive', $form); + + //CRM-6907 set event specific currency. + if ($this->getEventID() && + ($currency = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $form->_eventId, 'currency')) + ) { + CRM_Core_Config::singleton()->defaultCurrency = $currency; } } @@ -310,7 +329,7 @@ public function setDefaultValues() { if ($this->_allowConfirmation) { $this->_contactId = $contactID; $this->_discountId = $discountId; - $forcePayLater = CRM_Utils_Array::value('is_pay_later', $this->_defaults, FALSE); + $forcePayLater = $this->_defaults['is_pay_later'] ?? FALSE; $this->_defaults = array_merge($this->_defaults, CRM_Event_Form_EventFees::setDefaultValues($this)); $this->_defaults['is_pay_later'] = $forcePayLater; @@ -537,6 +556,10 @@ public function buildQuickForm() { /** * Build the radio/text form elements for the amount field * + * @internal function is not currently called by any extentions in our civi + * 'universe' and is not supported for such use. Signature has changed & will + * change again. + * * @param CRM_Event_Form_Registration_Register $form * Form object. * @param bool $required @@ -547,7 +570,7 @@ public function buildQuickForm() { * * @throws \CRM_Core_Exception */ - public static function buildAmount(&$form, $required = TRUE, $discountId = NULL, $priceSetID = NULL) { + public static function buildAmount($form, $required, $discountId, $priceSetID) { $feeFields = $form->_values['fee'] ?? NULL; if (is_array($feeFields)) { @@ -588,15 +611,8 @@ public static function buildAmount(&$form, $required = TRUE, $discountId = NULL, $form->add('hidden', 'priceSetId', $priceSetID); // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions - $adminFieldVisible = FALSE; - if (CRM_Core_Permission::check('administer CiviCRM data')) { - $adminFieldVisible = TRUE; - } - - $hideAdminValues = TRUE; - if (CRM_Core_Permission::check('edit event participants')) { - $hideAdminValues = FALSE; - } + $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM data'); + $hideAdminValues = !CRM_Core_Permission::check('edit event participants'); foreach ($form->_feeBlock as $field) { // public AND admin visibility fields are included for back-office registration and back-office change selections @@ -658,6 +674,7 @@ public static function buildAmount(&$form, $required = TRUE, $discountId = NULL, } else { // Is this reachable? + CRM_Core_Error::deprecatedWarning('code believed to be unreachable'); $eventFeeBlockValues = $elements = $elementJS = []; foreach ($form->_feeBlock as $fee) { if (is_array($fee)) { @@ -737,10 +754,10 @@ public static function formatFieldsForOptionFull(&$form) { } foreach ($field['options'] as & $option) { $optId = $option['id']; - $count = CRM_Utils_Array::value('count', $option, 0); - $maxValue = CRM_Utils_Array::value('max_value', $option, 0); - $dbTotalCount = CRM_Utils_Array::value($optId, $recordedOptionsCount, 0); - $currentTotalCount = CRM_Utils_Array::value($optId, $currentOptionsCount, 0); + $count = $option['count'] ?? 0; + $maxValue = $option['max_value'] ?? 0; + $dbTotalCount = $recordedOptionsCount[$optId] ?? 0; + $currentTotalCount = $currentOptionsCount[$optId] ?? 0; $totalCount = $currentTotalCount + $dbTotalCount; $isFull = FALSE; @@ -752,7 +769,7 @@ public static function formatFieldsForOptionFull(&$form) { $optionFullIds[$optId] = $optId; if ($field['html_type'] != 'Select') { if (in_array($optId, $defaultPricefieldIds)) { - $optionFullTotalAmount += CRM_Utils_Array::value('amount', $option); + $optionFullTotalAmount += $option['amount'] ?? 0; } } else { @@ -971,7 +988,7 @@ public function postProcess() { $this->set('is_pay_later', $params['is_pay_later']); // assign pay later stuff - $this->_params['is_pay_later'] = CRM_Utils_Array::value('is_pay_later', $params, FALSE); + $this->_params['is_pay_later'] = $params['is_pay_later'] ?? FALSE; $this->assign('is_pay_later', $params['is_pay_later']); $this->assign('pay_later_text', $params['is_pay_later'] ? $this->_values['event']['pay_later_text'] : NULL); $this->assign('pay_later_receipt', $params['is_pay_later'] ? $this->_values['event']['pay_later_receipt'] : NULL); diff --git a/CRM/Event/Form/SelfSvcUpdate.php b/CRM/Event/Form/SelfSvcUpdate.php index 149c88027638..ae9850714737 100644 --- a/CRM/Event/Form/SelfSvcUpdate.php +++ b/CRM/Event/Form/SelfSvcUpdate.php @@ -95,6 +95,10 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form { * @var bool */ protected $isBackoffice = FALSE; + /** + * @var string + */ + protected $_userContext; /** * Set variables up before form is built based on participant ID from URL diff --git a/CRM/Event/ICalendar.php b/CRM/Event/ICalendar.php index cb1faa778d2f..0d16cfe2ad26 100644 --- a/CRM/Event/ICalendar.php +++ b/CRM/Event/ICalendar.php @@ -69,25 +69,7 @@ public static function run() { $calendar = $template->fetch('CRM/Core/Calendar/GData.tpl'); } else { - if (count($info) > 0) { - $date_min = min( - array_map(function ($event) { - return strtotime($event['start_date']); - }, $info) - ); - $date_max = max( - array_map(function ($event) { - return strtotime($event['end_date'] ?? $event['start_date']); - }, $info) - ); - $template->assign('timezones', CRM_Utils_ICalendar::generate_timezones($timezones, $date_min, $date_max)); - } - else { - $template->assign('timezones', NULL); - } - - $calendar = $template->fetch('CRM/Core/Calendar/ICal.tpl'); - $calendar = preg_replace('/(?assign('registerClosed', !empty($values['event']['is_online_registration']) && !$isEventOpenForRegistration); + $this->assign('registerClosed', !empty($values['event']['is_online_registration']) && !$isEventOpenForRegistration && CRM_Core_Permission::check('register for events')); $this->assign('allowRegistration', $allowRegistration); $session = CRM_Core_Session::singleton(); diff --git a/CRM/Event/Page/Tab.php b/CRM/Event/Page/Tab.php index 7b918028ba6a..295953a30cf1 100644 --- a/CRM/Event/Page/Tab.php +++ b/CRM/Event/Page/Tab.php @@ -101,16 +101,8 @@ public function edit() { } public function delete() { - $controller = new CRM_Core_Controller_Simple( - 'CRM_Event_Form_Participant', - ts('Delete Participant'), - $this->_action - ); - - $controller->setEmbedded(TRUE); - $controller->set('id', $this->_id); - $controller->set('cid', $this->_contactId); - $controller->run(); + CRM_Core_Error::deprecatedFunctionWarning('use civicrm/participant/delete / CRM_Event_Form_Participant_Delete'); + CRM_Utils_System::redirect('civicrm/participant/delete', ['id' => CRM_Utils_Request::retrieveValue('id', NULL, TRUE), 'reset' => 1]); } public function preProcess() { diff --git a/CRM/Event/PseudoConstant.php b/CRM/Event/PseudoConstant.php index b8bd9f11a62b..8a67ed916d09 100644 --- a/CRM/Event/PseudoConstant.php +++ b/CRM/Event/PseudoConstant.php @@ -16,59 +16,10 @@ */ /** - * This class holds all the Pseudo constants that are specific to Event. This avoids - * polluting the core class and isolates the Event + * @deprecated functions. Use the API instead. */ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { - /** - * Event - * - * @var array - */ - private static $event; - - /** - * Participant Status - * - * @var array - */ - private static $participantStatus; - - /** - * Participant Role - * - * @var array - */ - private static $participantRole; - - /** - * Participant Listing - * @var array - * @deprecated - */ - private static $participantListing; - - /** - * Event Type. - * - * @var array - */ - private static $eventType; - - /** - * Event template titles - * @var array - */ - private static $eventTemplates; - - /** - * Personal campaign pages - * @var array - * @deprecated - */ - private static $pcPage; - /** * Get all events * @@ -81,28 +32,16 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * array of all events if any */ public static function event($id = NULL, $all = FALSE, $condition = NULL) { - $key = "{$id}_{$all}_{$condition}"; - - if (!isset(self::$event[$key])) { - self::$event[$key] = []; - } - - if (!self::$event[$key]) { - CRM_Core_PseudoConstant::populate(self::$event[$key], - 'CRM_Event_DAO_Event', - $all, 'title', 'is_active', $condition, NULL - ); - } + $options = []; + CRM_Core_PseudoConstant::populate($options, + 'CRM_Event_DAO_Event', + $all, 'title', 'is_active', $condition, NULL + ); if ($id) { - if (array_key_exists($id, self::$event[$key])) { - return self::$event[$key][$id]; - } - else { - return NULL; - } + return $options[$id] ?? NULL; } - return self::$event[$key]; + return $options; } /** @@ -119,26 +58,17 @@ public static function event($id = NULL, $all = FALSE, $condition = NULL) { * @return array|string * array reference of all participant statuses if any, or single value if $id was passed */ - public static function &participantStatus($id = NULL, $cond = NULL, $retColumn = 'name') { - if (self::$participantStatus === NULL) { - self::$participantStatus = []; - } - - $index = $cond ?: 'No Condition'; - $index = "{$index}_{$retColumn}"; - if (empty(self::$participantStatus[$index])) { - self::$participantStatus[$index] = []; - CRM_Core_PseudoConstant::populate(self::$participantStatus[$index], - 'CRM_Event_DAO_ParticipantStatusType', - FALSE, $retColumn, 'is_active', $cond, 'weight' - ); - } + public static function participantStatus($id = NULL, $cond = NULL, $retColumn = 'name') { + $statuses = []; + CRM_Core_PseudoConstant::populate($statuses, + 'CRM_Event_DAO_ParticipantStatusType', + FALSE, $retColumn, 'is_active', $cond, 'weight' + ); if ($id) { - return self::$participantStatus[$index][$id]; + return $statuses[$id] ?? NULL; } - - return self::$participantStatus[$index]; + return $statuses; } /** @@ -161,13 +91,9 @@ public static function participantStatusClassOptions() { * @return array * Array of status classes, keyed by status type */ - public static function &participantStatusClass() { - static $statusClasses = NULL; - - if ($statusClasses === NULL) { - self::populate($statusClasses, 'CRM_Event_DAO_ParticipantStatusType', TRUE, 'class'); - } - + public static function participantStatusClass() { + $statusClasses = []; + self::populate($statusClasses, 'CRM_Event_DAO_ParticipantStatusType', TRUE, 'class'); return $statusClasses; } @@ -182,26 +108,14 @@ public static function &participantStatusClass() { * @return array|string * array reference of all participant roles if any */ - public static function &participantRole($id = NULL, $cond = NULL) { - $index = $cond ?: 'No Condition'; - if (empty(self::$participantRole[$index])) { - self::$participantRole[$index] = []; - - $condition = NULL; - - if ($cond) { - $condition = "AND $cond"; - } - - self::$participantRole[$index] = CRM_Core_OptionGroup::values('participant_role', FALSE, FALSE, - FALSE, $condition - ); - } + public static function participantRole($id = NULL, $cond = NULL) { + $condition = empty($cond) ? NULL : "AND $cond"; + $options = CRM_Core_OptionGroup::values('participant_role', FALSE, FALSE, FALSE, $condition); if ($id) { - return self::$participantRole[$index][$id]; + return $options[$id] ?? NULL; } - return self::$participantRole[$index]; + return $options; } /** @@ -212,18 +126,14 @@ public static function &participantRole($id = NULL, $cond = NULL) { * @return array|string * array reference of all participant listings if any */ - public static function &participantListing($id = NULL) { + public static function participantListing($id = NULL) { CRM_Core_Error::deprecatedFunctionWarning('Function participantListing will be removed'); - if (!self::$participantListing) { - self::$participantListing = []; - self::$participantListing = CRM_Core_OptionGroup::values('participant_listing'); - } + $options = CRM_Core_OptionGroup::values('participant_listing'); if ($id) { - return self::$participantListing[$id]; + return $options[$id]; } - - return self::$participantListing; + return $options; } /** @@ -234,17 +144,13 @@ public static function &participantListing($id = NULL) { * @return array|string * array reference of all event types. */ - public static function &eventType($id = NULL) { - if (!self::$eventType) { - self::$eventType = []; - self::$eventType = CRM_Core_OptionGroup::values('event_type'); - } + public static function eventType($id = NULL) { + $options = CRM_Core_OptionGroup::values('event_type'); if ($id) { - return self::$eventType[$id]; + return $options[$id] ?? NULL; } - - return self::$eventType; + return $options; } /** @@ -257,21 +163,20 @@ public static function &eventType($id = NULL) { * * @deprecated Use the API instead */ - public static function &eventTemplates($id = NULL) { + public static function eventTemplates($id = NULL) { CRM_Core_Error::deprecatedFunctionWarning('Use the api'); - if (!self::$eventTemplates) { - CRM_Core_PseudoConstant::populate(self::$eventTemplates, - 'CRM_Event_DAO_Event', - FALSE, - 'template_title', - 'is_active', - 'is_template = 1' - ); - } + $options = []; + CRM_Core_PseudoConstant::populate($options, + 'CRM_Event_DAO_Event', + FALSE, + 'template_title', + 'is_active', + 'is_template = 1' + ); if ($id) { - return self::$eventTemplates[$id]; + return $options[$id]; } - return self::$eventTemplates; + return $options; } /** @@ -295,18 +200,17 @@ public static function flush($name = 'cache') { * @return array * array reference of all pcp if any */ - public static function &pcPage($id = NULL) { + public static function pcPage($id = NULL) { CRM_Core_Error::deprecatedFunctionWarning('Function pcPage will be removed'); - if (!self::$pcPage) { - CRM_Core_PseudoConstant::populate(self::$pcPage, - 'CRM_PCP_DAO_PCP', - FALSE, 'title' - ); - } + $options = []; + CRM_Core_PseudoConstant::populate($options, + 'CRM_PCP_DAO_PCP', + FALSE, 'title' + ); if ($id) { - return self::$pcPage[$id] ?? NULL; + return $options[$id] ?? NULL; } - return self::$pcPage; + return $options; } } diff --git a/CRM/Event/Selector/Search.php b/CRM/Event/Selector/Search.php index 9000dbbf90be..0b7c9273605f 100644 --- a/CRM/Event/Selector/Search.php +++ b/CRM/Event/Selector/Search.php @@ -200,7 +200,7 @@ public static function &links($qfKey = NULL, $context = NULL, $compContext = NUL if ($compContext) { $extraParams .= "&compContext={$compContext}"; } - elseif ($context == 'search') { + elseif ($context === 'search') { $extraParams .= '&compContext=participant'; } @@ -226,8 +226,8 @@ public static function &links($qfKey = NULL, $context = NULL, $compContext = NUL ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), - 'url' => 'civicrm/contact/view/participant', - 'qs' => 'reset=1&action=delete&id=%%id%%&cid=%%cid%%&context=%%cxt%%' . $extraParams, + 'url' => 'civicrm/participant/delete', + 'qs' => 'reset=1&id=%%id%%' . $extraParams, 'title' => ts('Delete Participation'), 'weight' => 100, ], @@ -337,16 +337,6 @@ public function &getRows($action, $offset, $rowCount, $sort, $output = NULL) { $row['campaign'] = $allCampaigns[$result->participant_campaign_id] ?? NULL; $row['campaign_id'] = $result->participant_campaign_id; - // gross hack to show extra information for pending status - $statusClass = NULL; - if ((isset($row['participant_status_id'])) && - ($statusId = array_search($row['participant_status_id'], $statusTypes)) - ) { - $statusClass = $statusClasses[$statusId]; - } - - $row['showConfirmUrl'] = $statusClass == 'Pending'; - if (!empty($row['participant_is_test'])) { $row['participant_status'] = CRM_Core_TestEntity::appendTestText($row['participant_status']); } diff --git a/CRM/Event/Tokens.php b/CRM/Event/Tokens.php index e7b9436f1cee..ed4f80665606 100644 --- a/CRM/Event/Tokens.php +++ b/CRM/Event/Tokens.php @@ -177,10 +177,9 @@ protected function getEventTokenValues(int $eventID = NULL): array { if (!Civi::cache('metadata')->has($cacheKey)) { $event = Event::get($this->checkPermissions)->addWhere('id', '=', $eventID) ->setSelect(array_merge([ - 'loc_block_id.address_id.street_address', - 'loc_block_id.address_id.city', + 'loc_block_id.address_id.*', 'loc_block_id.address_id.state_province_id:label', - 'loc_block_id.address_id.postal_code', + 'loc_block_id.address_id.country_id:label', 'loc_block_id.email_id.email', 'loc_block_id.email_2_id.email', 'loc_block_id.phone_id.phone', @@ -192,6 +191,9 @@ protected function getEventTokenValues(int $eventID = NULL): array { 'loc_block_id.phone_2_id.phone_ext', 'loc_block_id.phone_2_id.phone_type_id:label', 'is_show_location:label', + 'allow_selfcancelxfer', + 'allow_selfcancelxfer:label', + 'selfcancelxfer_time', 'is_public:label', 'is_share', 'is_share:label', @@ -205,12 +207,13 @@ protected function getEventTokenValues(int $eventID = NULL): array { 'custom.*', ], $this->getExposedFields())) ->execute()->first(); - $tokens['location']['text/plain'] = \CRM_Utils_Address::format([ - 'street_address' => $event['loc_block_id.address_id.street_address'], - 'city' => $event['loc_block_id.address_id.city'], - 'state_province' => $event['loc_block_id.address_id.state_province_id:label'], - 'postal_code' => $event['loc_block_id.address_id.postal_code'], - ]); + $addressValues = ['address_name' => $event['loc_block_id.address_id.name']]; + foreach ($event as $key => $value) { + if (strpos($key, 'loc_block_id.address_id.') === 0) { + $addressValues[str_replace('loc_block_id.address_id.', '', $key)] = $value; + } + } + $tokens['location']['text/plain'] = \CRM_Utils_Address::format($addressValues); $tokens['info_url']['text/html'] = \CRM_Utils_System::url('civicrm/event/info', 'reset=1&id=' . $eventID, TRUE, NULL, FALSE, TRUE); $tokens['registration_url']['text/html'] = \CRM_Utils_System::url('civicrm/event/register', 'reset=1&id=' . $eventID, TRUE, NULL, FALSE, TRUE); $tokens['start_date']['text/html'] = !empty($event['start_date']) ? new DateTime($event['start_date']) : ''; @@ -263,6 +266,8 @@ protected function getExposedFields(): array { 'description', 'is_show_location', 'is_public', + 'allow_selfcancelxfer', + 'selfcancelxfer_time', 'confirm_email_text', 'is_monetary', 'fee_label', @@ -285,6 +290,8 @@ protected function getTokenMetadataOverrides(): array { 'is_public' => ['audience' => 'sysadmin'], 'is_show_location' => ['audience' => 'sysadmin'], 'is_monetary' => ['audience' => 'sysadmin'], + 'allow_selfcancelxfer' => ['audience' => 'sysadmin'], + 'selfcancelxfer_time' => ['audience' => 'sysadmin'], ]; } diff --git a/CRM/Event/WorkflowMessage/EventExamples.php b/CRM/Event/WorkflowMessage/EventExamples.php index dbbdb6f589c3..9de84306fcae 100644 --- a/CRM/Event/WorkflowMessage/EventExamples.php +++ b/CRM/Event/WorkflowMessage/EventExamples.php @@ -1,5 +1,6 @@ $priceSet['is_multiple_registrations'], 'is_primary' => TRUE, 'price_set_id' => $priceSet['id'], + 'is_partially_paid' => FALSE, + ]; + yield [ + 'name' => 'workflow/' . $workflow . '/' . 'price_set_' . $priceSet['name'] . '_partially_paid', + 'title' => ts('Partially Paid Registration') . ($priceSet['is_multiple_registrations'] ? ' ' . ts('primary participant') : '') . ' : ' . $priceSet['title'], + 'tags' => ['preview'], + 'workflow' => $workflow, + 'is_show_line_items' => !$priceSet['is_quick_config'], + 'event_id' => $priceSet['event_id'], + 'is_multiple_registrations' => $priceSet['is_multiple_registrations'], + 'is_primary' => TRUE, + 'price_set_id' => $priceSet['id'], + 'is_partially_paid' => TRUE, ]; if ($priceSet['is_multiple_registrations']) { yield [ @@ -56,6 +72,7 @@ public function getExamples(): iterable { 'is_multiple_registrations' => $priceSet['is_multiple_registrations'], 'is_primary' => FALSE, 'price_set_id' => $priceSet['id'], + 'is_partially_paid' => FALSE, ]; } } @@ -87,6 +104,7 @@ public function build(array &$example): void { * @throws \Civi\API\Exception\UnauthorizedException */ private function addExampleData(GenericWorkflowMessage $messageTemplate, array $example): void { + $this->define('Event', 'event_' . $example['event_id'], ['id' => $example['event_id']]); $messageTemplate->setContact(\Civi\Test::example('entity/Contact/Barb')); $messageTemplate->setEventID($example['event_id']); $isPrimary = $example['is_primary']; @@ -112,10 +130,18 @@ private function addExampleData(GenericWorkflowMessage $messageTemplate, array $ $contribution['total_amount'] = $mockOrder->getTotalAmount(); $contribution['tax_amount'] = $mockOrder->getTotalTaxAmount() ? round($mockOrder->getTotalTaxAmount(), 2) : 0; $contribution['tax_exclusive_amount'] = $contribution['total_amount'] - $contribution['tax_amount']; + $contribution['address_id.name'] = 'Barbara Johnson'; + $contribution['address_id.display'] = '790L Lincoln St S +Baltimore, New York 10545 +United States'; + $contribution['is_pay_later'] = $example['is_partially_paid'] && $this->lookup('event_' . $example['event_id'], 'is_pay_later'); + $contribution['paid_amount'] = $example['is_partially_paid'] ? $contribution['total_amount'] / 2 : 0; + $contribution['balance_amount'] = $contribution['total_amount'] - $contribution['paid_amount']; $messageTemplate->setContribution($contribution); $messageTemplate->setOrder($mockOrder); $messageTemplate->setParticipantContacts($participantContacts); - $messageTemplate->setParticipant(['id' => $isPrimary ? $primaryParticipantID : $otherParticipantID, 'registered_by_id' => $isPrimary ? NULL : $primaryParticipantID, 'register_date' => date('Y-m-d')]); + $roleID = Event::get(FALSE)->addWhere('id', '=', $example['event_id'])->addSelect('default_role_id')->execute()->first()['default_role_id']; + $messageTemplate->setParticipant(['id' => $isPrimary ? $primaryParticipantID : $otherParticipantID, 'registered_by_id' => $isPrimary ? NULL : $primaryParticipantID, 'register_date' => date('Y-m-d'), 'role_id' => $roleID]); } /** diff --git a/CRM/Event/WorkflowMessage/EventOfflineReceipt.php b/CRM/Event/WorkflowMessage/EventOfflineReceipt.php index 38ba48d1e457..1fbec19de263 100644 --- a/CRM/Event/WorkflowMessage/EventOfflineReceipt.php +++ b/CRM/Event/WorkflowMessage/EventOfflineReceipt.php @@ -10,6 +10,7 @@ */ use Civi\WorkflowMessage\GenericWorkflowMessage; +use Civi\WorkflowMessage\Traits\CustomFieldTrait; /** * Receipt sent when confirming a back office participation record. @@ -22,7 +23,72 @@ class CRM_Event_WorkflowMessage_EventOfflineReceipt extends GenericWorkflowMessage { use CRM_Event_WorkflowMessage_ParticipantTrait; use CRM_Contribute_WorkflowMessage_ContributionTrait; + use CustomFieldTrait; public const WORKFLOW = 'event_offline_receipt'; + /** + * Viewable custom fields for the primary participant. + * + * This array is in the format + * + * ['customGroupLabel' => [['customFieldLabel' => 'customFieldValue'], ['customFieldLabel' => 'customFieldValue']] + * + * It is only added for the primary participant (which reflects historical + * form behaviour) and only fields were the group has is_public = TRUE + * and the field has is_view = FALSE. Fields are restricted to + * those viewable by the logged in user (reflecting the fact this + * is historically triggered by a back office user form submission + * and also preventing using an email to see acl-blocked custom fields). + * + * @var array + * + * @scope tplParams as customGroup + */ + public $customFields; + + /** + * Get the custom fields for display for the participant, if not primary. + * + * @return array + * @throws \CRM_Core_Exception + */ + public function getCustomFields(): array { + // Non-primary custom field info can't be gathered on the back office + // form so historically it has not shown up. This keeps that behaviour + // (although a future person could probably change it if they wanted + // to think through any potential downsides. + if (!$this->getIsPrimary()) { + return []; + } + $participant = $this->getParticipant(); + // We re-filter the custom fields to eliminate any custom groups + // not associated with the role, event_id etc. Realistically participants + // should not have such data. But, out of caution we do this becasue + // historical code did. + $filters = [ + 'ParticipantRole' => $participant['role_id'], + 'ParticipantEventName' => $participant['event_id'], + 'ParticipantEventType' => $participant['event_id.event_type_id'], + ]; + return $this->getCustomFieldDisplay($participant, 'Participant', $filters); + } + + /** + * Get the participant fields we need to load. + * + * @throws \CRM_Core_Exception + */ + protected function getFieldsToLoadForParticipant(): array { + $fields = ['registered_by_id', 'role_id', 'event_id', 'event_id.event_type_id']; + // Request the relevant custom fields. This list is + // restricted by view-ability but we don't have the information + // at this point to filter by the finer tuned entity extends information + // which relies on us knowing role etc. + foreach ($this->getFilteredCustomFields('Participant') as $field) { + $fields[] = $field['custom_group_id.name'] . '.' . $field['name']; + } + return $fields; + } + } diff --git a/CRM/Event/WorkflowMessage/ParticipantTrait.php b/CRM/Event/WorkflowMessage/ParticipantTrait.php index 92d5409c3a55..22c02d19265f 100644 --- a/CRM/Event/WorkflowMessage/ParticipantTrait.php +++ b/CRM/Event/WorkflowMessage/ParticipantTrait.php @@ -37,6 +37,19 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait { */ public $isPrimary; + /** + * Should a participant count column be shown. + * + * This would be true if there is a line item on the receipt + * with more than one participant in it. Otherwise it's confusing to + * show. + * + * @var bool + * + * @scope tplParams as isShowParticipantCount + */ + public $isShowParticipantCount; + /** * @var int * @@ -152,7 +165,26 @@ public function getPrimaryParticipantID(): int { } /** - * Set contribution object. + * It is a good idea to show the participant count column. + * + * This would be true if there is a line item on the receipt + * with more than one participant in it. Otherwise it's confusing to + * show. + * + * @return bool + * @throws \CRM_Core_Exception + */ + public function getIsShowParticipantCount(): bool { + foreach ($this->getLineItems() as $lineItem) { + if ((int) $lineItem['participant_count'] > 1) { + return TRUE; + } + } + return FALSE; + } + + /** + * Set participant object. * * @param array $participant * @@ -179,11 +211,18 @@ public function getParticipant(): array { if (!$this->participant) { $this->participant = Participant::get(FALSE) ->addWhere('id', '=', $this->participantID) - ->addSelect('registered_by_id')->execute()->first(); + ->setSelect($this->getFieldsToLoadForParticipant())->execute()->first(); } return $this->participant; } + /** + * Get the participant fields we need to load. + */ + protected function getFieldsToLoadForParticipant(): array { + return ['registered_by_id']; + } + /** * Get the line items and tax information indexed by participant. * diff --git a/CRM/Event/xml/Menu/Event.xml b/CRM/Event/xml/Menu/Event.xml index fad961b09140..032212ffd8db 100644 --- a/CRM/Event/xml/Menu/Event.xml +++ b/CRM/Event/xml/Menu/Event.xml @@ -270,6 +270,12 @@ CRM_Event_Page_Tab 4 + + civicrm/participant/delete + CRM_Event_Form_Participant_Delete + delete in CiviEvent + 4 + civicrm/ajax/eventFee CRM_Event_Page_AJAX::eventFee diff --git a/CRM/Extension/Info.php b/CRM/Extension/Info.php index 2546da5c5c67..6edd859057a7 100644 --- a/CRM/Extension/Info.php +++ b/CRM/Extension/Info.php @@ -261,8 +261,11 @@ public function parse($info) { // and deeper into arrays. An exception for URLS section, since // we want them in special format. foreach ($info as $attr => $val) { - if (count($val->children()) == 0) { - $this->$attr = trim((string) $val); + if (!property_exists($this, $attr)) { + continue; + } + if (!count($val->children())) { + $this->$attr = is_array($this->$attr) ? [] : trim((string) $val); } elseif ($attr === 'urls') { $this->urls = []; @@ -335,7 +338,7 @@ public function parse($info) { public function filterRequirements($requirements) { $filtered = []; $compatInfo = CRM_Extension_System::getCompatibilityInfo(); - foreach ($requirements->ext as $ext) { + foreach ($requirements->ext ?? [] as $ext) { $ext = (string) $ext; if (empty($compatInfo[$ext]['obsolete'])) { $filtered[] = $ext; diff --git a/CRM/Extension/Mapper.php b/CRM/Extension/Mapper.php index 8f0747387e9c..62fdd94ede8a 100644 --- a/CRM/Extension/Mapper.php +++ b/CRM/Extension/Mapper.php @@ -383,7 +383,7 @@ public function getActiveModuleUrls() { public function getKeysByPath($pattern) { $keys = []; - if (CRM_Utils_String::endsWith($pattern, '*')) { + if (str_ends_with($pattern, '*')) { $prefix = rtrim($pattern, '*'); foreach ($this->container->getKeys() as $key) { $path = CRM_Utils_File::addTrailingSlash($this->container->getPath($key)); diff --git a/CRM/Financial/BAO/FinancialType.php b/CRM/Financial/BAO/FinancialType.php index a8a47383fe8f..458114015022 100644 --- a/CRM/Financial/BAO/FinancialType.php +++ b/CRM/Financial/BAO/FinancialType.php @@ -347,6 +347,8 @@ public static function buildPermissionedClause(string $component): string { /** * Function to check if lineitems present in a contribution have permissioned FTs. * + * @deprecated since 5.68 not part of core - to be handled within financialacls extension + * * @param int $id * contribution id * @param string $op diff --git a/CRM/Financial/BAO/Order.php b/CRM/Financial/BAO/Order.php index b2d0931b7fa3..ca74b7d44c94 100644 --- a/CRM/Financial/BAO/Order.php +++ b/CRM/Financial/BAO/Order.php @@ -78,6 +78,18 @@ class CRM_Financial_BAO_Order { */ protected $overridableFinancialTypeID; + private $isExcludeExpiredFields = FALSE; + + /** + * @param bool $isExcludeExpiredFields + * + * @return CRM_Financial_BAO_Order + */ + public function setIsExcludeExpiredFields(bool $isExcludeExpiredFields): CRM_Financial_BAO_Order { + $this->isExcludeExpiredFields = $isExcludeExpiredFields; + return $this; + } + /** * Get overridable financial type id. * @@ -658,8 +670,30 @@ public function getPriceFieldMetadata(int $id): array { * * @param array $metadata */ - protected function setPriceFieldMetadata($metadata) { + protected function setPriceFieldMetadata(array $metadata): void { + foreach ($metadata as $index => $priceField) { + if ($this->isExcludeExpiredFields && !empty($priceField['active_on']) && time() < strtotime($priceField['active_on'])) { + unset($metadata[$index]); + } + elseif ($this->isExcludeExpiredFields && !empty($priceField['expire_on']) && strtotime($priceField['expire_on']) < time()) { + unset($metadata[$index]); + } + elseif (!empty($priceField['options'])) { + foreach ($priceField['options'] as $optionID => $option) { + if (!empty($option['membership_type_id'])) { + $membershipType = CRM_Member_BAO_MembershipType::getMembershipType((int) $option['membership_type_id']); + $metadata[$index]['options'][$optionID]['auto_renew'] = (int) $membershipType['auto_renew']; + if ($membershipType['auto_renew'] && empty($this->priceSetMetadata['auto_renew_membership_field'])) { + // Quick form layer supports one auto-renew membership type per price set. If we + // want more for any reason we can add another array property. + $this->priceSetMetadata['auto_renew_membership_field'] = (int) $option['price_field_id']; + } + } + } + } + } $this->priceFieldMetadata = $metadata; + if ($this->getForm()) { CRM_Utils_Hook::buildAmount($this->form->getFormContext(), $this->form, $this->priceFieldMetadata); } @@ -668,18 +702,18 @@ protected function setPriceFieldMetadata($metadata) { /** * Get the metadata for the fields in the price set. * + * @return array + * @throws \CRM_Core_Exception * @internal use in tested core code only. * - * @return array */ public function getPriceSetMetadata(): array { if (empty($this->priceSetMetadata)) { - $priceSetMetadata = CRM_Price_BAO_PriceSet::getCachedPriceSetDetail($this->getPriceSetID()); - // @todo - make sure this is an array - commented out for now as this PR is against the rc. - // $priceSetMetadata['extends'] = explode(CRM_Core_DAO::VALUE_SEPARATOR, $priceSetMetadata['extends']); - $this->setPriceFieldMetadata($priceSetMetadata['fields']); - unset($priceSetMetadata['fields']); - $this->priceSetMetadata = $priceSetMetadata; + $this->priceSetMetadata = CRM_Price_BAO_PriceSet::getCachedPriceSetDetail($this->getPriceSetID()); + $this->priceSetMetadata['id'] = $this->getPriceSetID(); + $this->priceSetMetadata['auto_renew_membership_field'] = NULL; + $this->setPriceFieldMetadata($this->priceSetMetadata['fields']); + unset($this->priceSetMetadata['fields']); } return $this->priceSetMetadata; } @@ -688,8 +722,9 @@ public function isMembershipPriceSet() { if (!CRM_Core_Component::isEnabled('CiviMember')) { return FALSE; } - $extends = explode(CRM_Core_DAO::VALUE_SEPARATOR, $this->getPriceSetMetadata()['extends']); - return in_array(CRM_Core_Component::getComponentID('CiviMember'), $extends, FALSE); + // Access the property if set, to avoid a potential loop when the hook is called. + $priceSetMetadata = $this->priceSetMetadata ?: $this->getPriceSetMetadata(); + return in_array(CRM_Core_Component::getComponentID('CiviMember'), $priceSetMetadata['extends'], FALSE); } /** @@ -913,6 +948,7 @@ protected function calculateLineItems(): array { $lineItem['tax_amount'] = ($taxRate / 100) * $lineItem['line_total']; } $lineItem['title'] = $this->getLineItemTitle($lineItem); + $lineItem['line_total_inclusive'] = $lineItem['line_total'] + $lineItem['tax_amount']; } return $lineItems; } @@ -1040,6 +1076,7 @@ public function setLineItem(array $lineItem, $index): void { } $lineItem['tax_rate'] = $this->getTaxRate($lineItem['financial_type_id']); $lineItem['tax_amount'] = ($lineItem['tax_rate'] / 100) * $lineItem['line_total']; + $lineItem['line_total_inclusive'] = $lineItem['tax_amount'] + $lineItem['line_total']; } if (!empty($lineItem['membership_type_id'])) { $lineItem['entity_table'] = 'civicrm_membership'; diff --git a/CRM/Financial/BAO/Payment.php b/CRM/Financial/BAO/Payment.php index b9643f824389..82da1f25805b 100644 --- a/CRM/Financial/BAO/Payment.php +++ b/CRM/Financial/BAO/Payment.php @@ -223,7 +223,7 @@ public static function create(array $params): CRM_Financial_DAO_FinancialTrxn { // change status to refunded. self::updateContributionStatus($contribution['id'], 'Refunded'); } - CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], CRM_Utils_Array::value('participant_id', $params), $params['total_amount'], $trxn->currency, $trxn->trxn_date); + CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], $params['participant_id'] ?? NULL, $params['total_amount'], $trxn->currency, $trxn->trxn_date); return $trxn; } @@ -463,7 +463,6 @@ public static function filterUntestedTemplateVariables($params) { // and assign. Note we should update the tpl to use {if $billingName} // and ditch contributeMode - although it might need to be deprecated rather than removed. $todoParams = [ - 'contributeMode', 'billingName', 'address', 'credit_card_type', diff --git a/CRM/Financial/Form/BatchTransaction.php b/CRM/Financial/Form/BatchTransaction.php index dee4265809c0..08870c4883e9 100644 --- a/CRM/Financial/Form/BatchTransaction.php +++ b/CRM/Financial/Form/BatchTransaction.php @@ -38,7 +38,7 @@ class CRM_Financial_Form_BatchTransaction extends CRM_Contribute_Form_Search { public function preProcess() { // This reuses some styles from search forms CRM_Core_Resources::singleton()->addStyleFile('civicrm', 'css/searchForm.css', 1, 'html-header'); - self::$_entityID = CRM_Utils_Request::retrieve('bid', 'Positive') ? CRM_Utils_Request::retrieve('bid', 'Positive') : CRM_Utils_Array::value('batch_id', $_POST); + self::$_entityID = CRM_Utils_Request::retrieve('bid', 'Positive') ?: $_POST['batch_id'] ?? NULL; $this->assign('entityID', self::$_entityID); if (isset(self::$_entityID)) { $this->_batchStatusId = CRM_Core_DAO::getFieldValue('CRM_Batch_BAO_Batch', self::$_entityID, 'status_id'); diff --git a/CRM/Financial/Form/FinancialAccount.php b/CRM/Financial/Form/FinancialAccount.php index 7878fadb8e4b..727c2335e345 100644 --- a/CRM/Financial/Form/FinancialAccount.php +++ b/CRM/Financial/Form/FinancialAccount.php @@ -206,7 +206,7 @@ public function postProcess() { 'is_tax', 'is_default', ] as $field) { - $params[$field] = CRM_Utils_Array::value($field, $params, FALSE); + $params[$field] = $params[$field] ?? FALSE; } $financialAccount = CRM_Financial_BAO_FinancialAccount::writeRecord($params); CRM_Core_Session::setStatus(ts('The Financial Account \'%1\' has been saved.', [1 => $financialAccount->name]), ts('Saved'), 'success'); diff --git a/CRM/Financial/Form/FinancialBatch.php b/CRM/Financial/Form/FinancialBatch.php index 7ab2c650826e..fbcf4bb3c784 100644 --- a/CRM/Financial/Form/FinancialBatch.php +++ b/CRM/Financial/Form/FinancialBatch.php @@ -77,11 +77,6 @@ public function buildQuickForm() { 'name' => ts('Save'), 'isDefault' => TRUE, ], - [ - 'type' => 'next', - 'name' => ts('Save and New'), - 'subName' => 'new', - ], [ 'type' => 'cancel', 'name' => ts('Cancel'), diff --git a/CRM/Financial/Form/FinancialType.php b/CRM/Financial/Form/FinancialType.php index 2b6f1079dde3..4521ca3afc41 100644 --- a/CRM/Financial/Form/FinancialType.php +++ b/CRM/Financial/Form/FinancialType.php @@ -122,7 +122,7 @@ public function postProcess() { 'is_reserved', 'is_deductible', ] as $field) { - $params[$field] = CRM_Utils_Array::value($field, $params, FALSE); + $params[$field] = $params[$field] ?? FALSE; } $financialType = civicrm_api3('FinancialType', 'create', $params); if ($this->_action & CRM_Core_Action::UPDATE) { diff --git a/CRM/Financial/Page/BatchTransaction.php b/CRM/Financial/Page/BatchTransaction.php index 381e5cdf21ef..39f5606a2e5a 100644 --- a/CRM/Financial/Page/BatchTransaction.php +++ b/CRM/Financial/Page/BatchTransaction.php @@ -63,11 +63,13 @@ public function &links() { 'url' => 'civicrm/contact/view/contribution', 'qs' => 'reset=1&id=%%contid%%&cid=%%cid%%&action=view&context=contribution&selectedChild=contribute', 'title' => ts('View Contribution'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], 'remove' => [ 'name' => ts('Remove'), 'title' => ts('Remove Transaction'), 'extra' => 'onclick = "removeFromBatch(%%id%%);"', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/CRM/Friend/BAO/Friend.php b/CRM/Friend/BAO/Friend.php index 6e97730cce81..2a0945ea4d9a 100644 --- a/CRM/Friend/BAO/Friend.php +++ b/CRM/Friend/BAO/Friend.php @@ -320,7 +320,7 @@ public static function sendMail($contactID, &$values) { public static function addTellAFriend(&$params) { $friendDAO = new CRM_Friend_DAO_Friend(); $friendDAO->copyValues($params); - $friendDAO->is_active = CRM_Utils_Array::value('is_active', $params, FALSE); + $friendDAO->is_active = $params['is_active'] ?? FALSE; $friendDAO->save(); return $friendDAO; diff --git a/CRM/Friend/Form/Contribute.php b/CRM/Friend/Form/Contribute.php index 0a85b96a1ada..5aa5cbcdd7ba 100644 --- a/CRM/Friend/Form/Contribute.php +++ b/CRM/Friend/Form/Contribute.php @@ -95,7 +95,7 @@ public function postProcess() { $formValues['entity_table'] = 'civicrm_contribution_page'; $formValues['entity_id'] = $this->_id; $formValues['title'] = $formValues['tf_title']; - $formValues['is_active'] = CRM_Utils_Array::value('tf_is_active', $formValues, FALSE); + $formValues['is_active'] = $formValues['tf_is_active'] ?? FALSE; $formValues['thankyou_title'] = $formValues['tf_thankyou_title'] ?? NULL; $formValues['thankyou_text'] = $formValues['tf_thankyou_text'] ?? NULL; diff --git a/CRM/Friend/Form/Event.php b/CRM/Friend/Form/Event.php index cad46dde25c1..f87e0c68d54f 100644 --- a/CRM/Friend/Form/Event.php +++ b/CRM/Friend/Form/Event.php @@ -103,7 +103,7 @@ public function postProcess() { $formValues['entity_table'] = 'civicrm_event'; $formValues['entity_id'] = $this->_id; $formValues['title'] = $formValues['tf_title']; - $formValues['is_active'] = CRM_Utils_Array::value('tf_is_active', $formValues, FALSE); + $formValues['is_active'] = $formValues['tf_is_active'] ?? FALSE; $formValues['thankyou_title'] = $formValues['tf_thankyou_title'] ?? NULL; $formValues['thankyou_text'] = $formValues['tf_thankyou_text'] ?? NULL; diff --git a/CRM/Group/Form/Edit.php b/CRM/Group/Form/Edit.php index 772cda0786c5..a850add6ead3 100644 --- a/CRM/Group/Form/Edit.php +++ b/CRM/Group/Form/Edit.php @@ -201,6 +201,8 @@ public function setDefaultValues() { } } + $parentGroupIds = explode(',', $this->_groupValues['parents']); + $defaults['parents'] = $parentGroupIds; if (empty($defaults['parents'])) { $defaults['parents'] = CRM_Core_BAO_Domain::getGroupId(); } @@ -254,15 +256,9 @@ public function buildQuickForm() { //build custom data CRM_Custom_Form_CustomData::buildQuickForm($this); - $doParentCheck = FALSE; - if (CRM_Core_Permission::isMultisiteEnabled()) { - $doParentCheck = !($this->_id && CRM_Core_BAO_Domain::isDomainGroup($this->_id)); - } - $options = [ 'selfObj' => $this, 'parentGroups' => $parentGroups, - 'doParentCheck' => $doParentCheck, ]; $this->addFormRule(['CRM_Group_Form_Edit', 'formRule'], $options); } @@ -281,29 +277,8 @@ public function buildQuickForm() { public static function formRule($fields, $fileParams, $options) { $errors = []; - $doParentCheck = $options['doParentCheck']; $self = &$options['selfObj']; - if ($doParentCheck) { - $parentGroups = $options['parentGroups']; - - $grpRemove = 0; - foreach ($fields as $key => $val) { - if (substr($key, 0, 20) == 'remove_parent_group_') { - $grpRemove++; - } - } - - $grpAdd = 0; - if (!empty($fields['parents'])) { - $grpAdd++; - } - - if ((count($parentGroups) >= 1) && (($grpRemove - $grpAdd) >= count($parentGroups))) { - $errors['parents'] = ts('Make sure at least one parent group is set.'); - } - } - // do check for both name and title uniqueness if (!empty($fields['title'])) { $title = trim($fields['title']); @@ -356,8 +331,8 @@ public function postProcess() { $params['group_type'] = []; } - $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_reserved'] = $params['is_reserved'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $this->_id, 'Group' @@ -402,9 +377,6 @@ public static function buildParentGroups(&$form) { $parentGroups[$parentGroupId] = $groupNames[$parentGroupId]; if (array_key_exists($parentGroupId, $groupNames)) { $parentGroupElements[$parentGroupId] = $groupNames[$parentGroupId]; - $form->addElement('checkbox', "remove_parent_group_$parentGroupId", - $groupNames[$parentGroupId] - ); } } } @@ -412,6 +384,10 @@ public static function buildParentGroups(&$form) { if (isset($form->_id)) { $potentialParentGroupIds = CRM_Contact_BAO_GroupNestingCache::getPotentialCandidates($form->_id, $groupNames); + // put back current groups because they are selected by default + if (!empty($parentGroupIds)) { + $potentialParentGroupIds = array_merge($potentialParentGroupIds, $parentGroupIds); + } } else { $potentialParentGroupIds = array_keys($groupNames); @@ -431,7 +407,7 @@ public static function buildParentGroups(&$form) { else { $required = FALSE; } - $form->add('select', 'parents', ts('Add Parent'), $parentGroupSelectValues, $required, ['class' => 'crm-select2', 'multiple' => TRUE]); + $form->add('select', 'parents', ts('Parents'), $parentGroupSelectValues, $required, ['class' => 'crm-select2', 'multiple' => TRUE]); } return $parentGroups; diff --git a/CRM/Import/ImportProcessor.php b/CRM/Import/ImportProcessor.php index fbbe9d85ee42..4938dff9b742 100644 --- a/CRM/Import/ImportProcessor.php +++ b/CRM/Import/ImportProcessor.php @@ -583,11 +583,6 @@ protected function isValidRelationshipKey($key) { public function getSavedQuickformDefaultsForColumn($column) { $fieldMapping = []; - // $sel1 is either unmapped, a relationship or a target field. - if ($this->getFieldName($column) === 'do_not_import') { - return $fieldMapping; - } - if ($this->getValidRelationshipKey($column)) { $fieldMapping[] = $this->getValidRelationshipKey($column); } diff --git a/CRM/Mailing/BAO/Mailing.php b/CRM/Mailing/BAO/Mailing.php index 82e4010d09a9..5270a8a666fc 100644 --- a/CRM/Mailing/BAO/Mailing.php +++ b/CRM/Mailing/BAO/Mailing.php @@ -816,10 +816,11 @@ private function _getTokens($prop) { * * @param array $testParams * Contains form values. + * @param int $mailingID * - * @return void + * @throws \Civi\Core\Exception\DBQueryException */ - public function getTestRecipients($testParams) { + public static function getTestRecipients(array $testParams, int $mailingID): void { if (!empty($testParams['test_group']) && array_key_exists($testParams['test_group'], CRM_Core_PseudoConstant::group())) { $contacts = civicrm_api('contact', 'get', [ 'version' => 3, @@ -852,6 +853,8 @@ public function getTestRecipients($testParams) { 'job_id' => $testParams['job_id'], 'email_id' => $dao->email_id, 'contact_id' => $groupContact, + 'mailing_id' => $mailingID, + 'is_test' => TRUE, ]; CRM_Mailing_Event_BAO_MailingEventQueue::create($params); } @@ -908,7 +911,7 @@ public static function addMessageIdHeader(&$headers, $prefix, $job_id, $event_qu $fields = []; $fields[] = 'Message-ID'; // CRM-17754 check if Resent-Message-id is set also if not add it in when re-laying reply email - if ($prefix == 'r') { + if ($prefix === 'r') { $fields[] = 'Resent-Message-ID'; } foreach ($fields as $field) { @@ -916,7 +919,6 @@ public static function addMessageIdHeader(&$headers, $prefix, $job_id, $event_qu $headers[$field] = '<' . implode($config->verpSeparator, [ $localpart . $prefix, - $job_id, $event_queue_id, $hash, ] @@ -1017,12 +1019,14 @@ public function getVerpAndUrlsAndHeaders($job_id, $event_queue_id, $hash, $email $verp['reply'] = "\"{$this->from_name}\" <{$this->from_email}>"; } + // Generating URLs is expensive, so we only call it once for each of these 5 URLs. + $genericURL = CRM_Utils_System::url('civicrm/mailing/genericUrlPath', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE); $urls = [ - 'forward' => CRM_Utils_System::url('civicrm/mailing/forward', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'unsubscribeUrl' => CRM_Utils_System::url('civicrm/mailing/unsubscribe', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'resubscribeUrl' => CRM_Utils_System::url('civicrm/mailing/resubscribe', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'optOutUrl' => CRM_Utils_System::url('civicrm/mailing/optout', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'subscribeUrl' => CRM_Utils_System::url('civicrm/mailing/subscribe', 'reset=1', TRUE, NULL, TRUE, TRUE), + 'forward' => str_replace('genericUrlPath', 'forward', $genericURL), + 'unsubscribeUrl' => str_replace('genericUrlPath', 'unsubscribe', $genericURL), + 'resubscribeUrl' => str_replace('genericUrlPath', 'resubscribe', $genericURL), + 'optOutUrl' => str_replace('genericUrlPath', 'optout', $genericURL), + 'subscribeUrl' => str_replace('genericUrlPath', 'subscribe', $genericURL), ]; $headers = [ @@ -2859,7 +2863,7 @@ public static function getContactMailingSelector(&$params) { $mailing['openstats'] = "Opens: " . CRM_Utils_Array::value($values['mailing_id'], $openCounts, 0) . "
Clicks: " . - CRM_Utils_Array::value($values['mailing_id'], $clickCounts, 0); + $clickCounts[$values['mailing_id']] ?? 0; $actionLinks = [ CRM_Core_Action::VIEW => [ diff --git a/CRM/Mailing/BAO/MailingJob.php b/CRM/Mailing/BAO/MailingJob.php index ce90b95a6727..3d7598007937 100644 --- a/CRM/Mailing/BAO/MailingJob.php +++ b/CRM/Mailing/BAO/MailingJob.php @@ -45,7 +45,7 @@ public static function create($params) { throw new CRM_Core_Exception("Failed to create job: Unknown mailing ID"); } $op = empty($params['id']) ? 'create' : 'edit'; - CRM_Utils_Hook::pre($op, 'MailingJob', CRM_Utils_Array::value('id', $params), $params); + CRM_Utils_Hook::pre($op, 'MailingJob', $params['id'] ?? NULL, $params); $jobDAO = new CRM_Mailing_BAO_MailingJob(); $jobDAO->copyValues($params); @@ -407,23 +407,17 @@ private static function split_job(int $offset, int $jobID, int $mailingID, strin } /** - * @param array $testParams + * @param ?array $testParams */ - public function queue($testParams = NULL) { - $mailing = new CRM_Mailing_BAO_Mailing(); - $mailing->id = $this->mailing_id; + public function queue(?array $testParams = NULL) { if (!empty($testParams)) { - $mailing->getTestRecipients($testParams); + CRM_Mailing_BAO_Mailing::getTestRecipients($testParams, (int) $this->mailing_id); } else { // We are still getting all the recipients from the parent job // so we don't mess with the include/exclude logic. $recipients = CRM_Mailing_BAO_MailingRecipients::mailingQuery($this->mailing_id, $this->job_offset, $this->job_limit); - // FIXME: this is not very smart, we should move this to one DB call - // INSERT INTO ... SELECT FROM .. - // the thing we need to figure out is how to generate the hash automatically - $now = time(); $params = []; $count = 0; // dev/core#1768 Get the mail sync interval. @@ -434,31 +428,40 @@ public function queue($testParams = NULL) { if (empty($recipients->email_id) && empty($recipients->phone_id)) { continue; } - - if ($recipients->phone_id) { - $recipients->email_id = "null"; - } - else { - $recipients->phone_id = "null"; - } - $params[] = [ - $this->id, - $recipients->email_id, - $recipients->contact_id, - $recipients->phone_id, + 'job_id' => $this->id, + 'email_id' => $recipients->email_id ? (int) $recipients->email_id : NULL, + 'phone_id' => $recipients->phone_id ? (int) $recipients->phone_id : NULL, + 'contact_id' => $recipients->contact_id ? (int) $recipients->contact_id : NULL, + 'mailing_id' => (int) $this->mailing_id, + 'is_test' => !empty($testParams), ]; $count++; - // dev/core#1768 Mail sync interval is now configurable. - if ($count % $mail_sync_interval == 0) { - CRM_Mailing_Event_BAO_MailingEventQueue::bulkCreate($params, $now); + /* + The mail sync interval is used here to determine how + many rows to insert in each insert statement. + The discussion & name of the setting implies that the intent of the + setting is the frequency with which the mailing tables are updated + with information about actions taken on the mailings (ie if you send + an email & quickly update the delivered table that impacts information + availability. + + However, here it is used to manage the size of each individual + insert statement. It is unclear why as the trade offs are out of sync + ie. you want you insert statements here to be 'big, but not so big they + stall out' but in the delivery context it's a trade off between + information availability & performance. + https://github.com/civicrm/civicrm-core/pull/17367 */ + + if ($count % $mail_sync_interval === 0) { + CRM_Mailing_Event_BAO_MailingEventQueue::writeRecords($params); $count = 0; $params = []; } } if (!empty($params)) { - CRM_Mailing_Event_BAO_MailingEventQueue::bulkCreate($params, $now); + CRM_Mailing_Event_BAO_MailingEventQueue::writeRecords($params); } } } diff --git a/CRM/Mailing/DAO/Mailing.php b/CRM/Mailing/DAO/Mailing.php index 894028116b85..2bb67e0253ba 100644 --- a/CRM/Mailing/DAO/Mailing.php +++ b/CRM/Mailing/DAO/Mailing.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Mailing/Mailing.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:7370dea62ce328244525bac141d7fb62) + * (GenCodeChecksum:62a218e043b9abab2e816bf69272cca1) */ /** @@ -51,8 +51,9 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO { * @var string[] */ protected static $_paths = [ - 'add' => 'civicrm/a/#/mailing/new', - 'update' => 'civicrm/a/#/mailing/[id]', + 'add' => 'civicrm/mailing/send', + 'update' => 'civicrm/mailing/send?mid=[id]&continue=true', + 'copy' => 'civicrm/mailing/send?mid=[id]', 'view' => 'civicrm/mailing/report?mid=[id]&reset=1', 'preview' => 'civicrm/mailing/view?id=[id]&reset=1', ]; @@ -830,7 +831,7 @@ public static function &fields() { 'pseudoconstant' => [ 'callback' => 'CRM_Mailing_BAO_Mailing::getTemplateTypeNames', ], - 'add' => '4.7.16', + 'add' => '4.7', ], 'template_options' => [ 'name' => 'template_options', @@ -849,7 +850,7 @@ public static function &fields() { 'bao' => 'CRM_Mailing_BAO_Mailing', 'localizable' => 0, 'serialize' => self::SERIALIZE_JSON, - 'add' => '4.7.16', + 'add' => '4.7', ], 'subject' => [ 'name' => 'subject', diff --git a/CRM/Mailing/DAO/MailingTrackableURL.php b/CRM/Mailing/DAO/MailingTrackableURL.php index 599cda1ef707..985b1cac7da5 100644 --- a/CRM/Mailing/DAO/MailingTrackableURL.php +++ b/CRM/Mailing/DAO/MailingTrackableURL.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Mailing/MailingTrackableURL.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:5da2465e098de06d8a90975560c1cd91) + * (GenCodeChecksum:f446966734b2d351d7a1f8e7557dc08c) */ /** @@ -136,6 +136,9 @@ public static function &fields() { 'entity' => 'MailingTrackableURL', 'bao' => 'CRM_Mailing_BAO_MailingTrackableURL', 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], 'add' => NULL, ], 'mailing_id' => [ diff --git a/CRM/Mailing/Event/BAO/MailingEventQueue.php b/CRM/Mailing/Event/BAO/MailingEventQueue.php index 056e159db396..d3f27f5aad48 100644 --- a/CRM/Mailing/Event/BAO/MailingEventQueue.php +++ b/CRM/Mailing/Event/BAO/MailingEventQueue.php @@ -31,6 +31,16 @@ public static function create($params) { if (empty($params['id']) && empty($params['hash'])) { $eq->hash = self::hash(); } + if (empty($params['id']) && !empty($params['job_id']) && empty($params['mailing_id'])) { + // mailing_id is a new field in 5.67. Calling code should pass it in going forwards + // but temporary handling will set it. (We should make the field required + // when we remove this in future) + CRM_Core_Error::deprecatedWarning('mailing_id should be passed into EventQueue create calls. Temporary handling has set it for now'); + $query = CRM_Core_DAO::executeQuery('SELECT mailing_id, is_test + FROM civicrm_mailing_job job LEFT JOIN civicrm_mailing m ON m.id = mailing_id WHERE job.id = %1', [1 => [$params['job_id'], 'Integer']]); + $eq->mailing_id = $query->mailing_id; + $eq->is_test = $query->is_test; + } $eq->save(); return $eq; } @@ -84,33 +94,6 @@ public static function verify($job_id, $queue_id, $hash) { return $success; } - /** - * Given a queue event ID, find the corresponding email address. - * - * @param int $queue_id - * The queue event ID. - * - * @return string - * The email address - */ - public static function getEmailAddress($queue_id) { - $email = CRM_Core_BAO_Email::getTableName(); - $eq = self::getTableName(); - $query = " SELECT $email.email as email - FROM $email - INNER JOIN $eq - ON $eq.email_id = $email.id - WHERE $eq.id = " . CRM_Utils_Type::rule($queue_id, 'Integer'); - - $q = new CRM_Mailing_Event_BAO_MailingEventQueue(); - $q->query($query); - if (!$q->fetch()) { - return NULL; - } - - return $q->email; - } - /** * Count up events given a mailing id and optional job id. * @@ -287,10 +270,39 @@ public static function getContactInfo($queueID) { } /** + * Bulk save multiple records. + * + * For performance reasons hooks are not called here. + * + * @param array[] $records + * + * @return array + */ + public static function writeRecords(array $records): array { + $rows = []; + foreach ($records as $record) { + $record['hash'] = self::hash(); + $rows[] = $record; + if (count($rows) >= CRM_Core_DAO::BULK_INSERT_COUNT) { + CRM_Utils_SQL_Insert::into('civicrm_mailing_event_queue')->rows($rows)->execute(); + $rows = []; + } + } + if ($rows) { + CRM_Utils_SQL_Insert::into('civicrm_mailing_event_queue')->rows($rows)->execute(); + } + // No point returning a big array but the standard function signature is to return an array + // records + return []; + } + + /** + * @deprecated * @param array $params * @param null $now */ public static function bulkCreate($params, $now = NULL) { + CRM_Core_Error::deprecatedFunctionWarning('writeRecords'); if (!$now) { $now = time(); } diff --git a/CRM/Mailing/Info.php b/CRM/Mailing/Info.php index bffbd7ca798e..2eec29a4382e 100644 --- a/CRM/Mailing/Info.php +++ b/CRM/Mailing/Info.php @@ -137,14 +137,6 @@ public function getInfo() { * @see CRM_Utils_Hook::angularModules */ public function getAngularModules() { - // load angular files only if valid permissions are granted to the user - if (!CRM_Core_Permission::check('access CiviMail') - && !CRM_Core_Permission::check('create mailings') - && !CRM_Core_Permission::check('schedule mailings') - && !CRM_Core_Permission::check('approve mailings') - ) { - return []; - } global $civicrm_root; $result = []; diff --git a/CRM/Member/Form.php b/CRM/Member/Form.php index 9be5fbf658f2..f0a2ecba2126 100644 --- a/CRM/Member/Form.php +++ b/CRM/Member/Form.php @@ -346,22 +346,25 @@ public function buildQuickForm() { ]); } else { - $this->addButtons([ + $buttons = [ [ 'type' => 'upload', 'name' => ts('Save'), 'isDefault' => TRUE, ], - [ + ]; + if (!$this->_id) { + $buttons[] = [ 'type' => 'upload', 'name' => ts('Save and New'), 'subName' => 'new', - ], - [ - 'type' => 'cancel', - 'name' => ts('Cancel'), - ], - ]); + ]; + }; + $buttons[] = [ + 'type' => 'cancel', + 'name' => ts('Cancel'), + ]; + $this->addButtons($buttons); } } diff --git a/CRM/Member/Form/Membership.php b/CRM/Member/Form/Membership.php index 9a4cf9b0beed..e6e1debc70c2 100644 --- a/CRM/Member/Form/Membership.php +++ b/CRM/Member/Form/Membership.php @@ -377,8 +377,8 @@ public function buildQuickForm() { NULL, ['onchange' => "buildAmount( this.value );"] ); } - $this->assign('hasPriceSets', $buildPriceSet); } + $this->assign('hasPriceSets', $buildPriceSet ?? NULL); if ($this->_action & CRM_Core_Action::DELETE) { $this->addButtons([ diff --git a/CRM/Member/Form/MembershipBlock.php b/CRM/Member/Form/MembershipBlock.php index 7910ad9d4695..72dd3f22c1ad 100644 --- a/CRM/Member/Form/MembershipBlock.php +++ b/CRM/Member/Form/MembershipBlock.php @@ -127,6 +127,7 @@ public function buildQuickForm() { } $membership = $membershipDefault = $params = []; + $renewOption = []; foreach ($membershipTypes as $k => $v) { $membership[] = $this->createElement('advcheckbox', $k, NULL, $v); $membershipDefault[$k] = NULL; @@ -143,7 +144,7 @@ public function buildQuickForm() { $this->freeze("auto_renew_$k"); $params['id'] = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipBlock', $this->_id, 'id', 'entity_id'); } - $this->_renewOption[$k] = $autoRenew; + $renewOption[$k] = $autoRenew; } } } @@ -155,9 +156,7 @@ public function buildQuickForm() { } $this->add('hidden', "mem_price_field_id", '', ['id' => "mem_price_field_id"]); $this->assign('is_recur', $isRecur); - if (isset($this->_renewOption)) { - $this->assign('auto_renew', $this->_renewOption); - } + $this->assign('auto_renew', $renewOption); $this->addGroup($membership, 'membership_type', ts('Membership Types')); $this->addRadio('membership_type_default', ts('Membership Types Default'), $membershipDefault, ['allowClear' => TRUE]); diff --git a/CRM/Member/Form/MembershipType.php b/CRM/Member/Form/MembershipType.php index 9dc8251cc090..9781f1931957 100644 --- a/CRM/Member/Form/MembershipType.php +++ b/CRM/Member/Form/MembershipType.php @@ -53,7 +53,8 @@ protected function setEntityFields() { 'auto_renew' => [ 'name' => 'auto_renew', 'options' => CRM_Core_SelectValues::memberAutoRenew(), - 'place_holder' => ts('You will need to select and configure a supported payment processor (currently Authorize.Net, PayPal Pro, or PayPal Website Standard) in order to offer automatically renewing memberships.'), + // Note this doesn't get used currently because the template has its own code for this field. Note also the documentation link that you see in the template is added later here down below. + 'description' => ts('You will need to select and configure a supported payment processor (currently Authorize.Net, PayPal Pro, or PayPal Website Standard) in order to offer automatically renewing memberships.'), ], 'duration_interval' => [ 'name' => 'duration_interval', @@ -99,7 +100,7 @@ protected function setEntityFields() { if (!CRM_Financial_BAO_PaymentProcessor::hasPaymentProcessorSupporting(['Recurring'])) { $this->entityFields['auto_renew']['not-auto-addable'] = TRUE; - $this->entityFields['auto_renew']['documentation_link'] = ['page' => 'user/contributions/payment-processors']; + $this->entityFields['auto_renew']['documentation_link'] = ['page' => 'user/contributions/payment-processors', 'resource' => '']; } } diff --git a/CRM/Member/Page/Tab.php b/CRM/Member/Page/Tab.php index 2433005403ac..e6c543f1cd66 100644 --- a/CRM/Member/Page/Tab.php +++ b/CRM/Member/Page/Tab.php @@ -240,7 +240,6 @@ public function browse() { // Refresh other tabs with related data $this->ajaxResponse['updateTabs'] = [ '#tab_activity' => CRM_Contact_BAO_Contact::getCountComponent('activity', $this->_contactId), - '#tab_rel' => CRM_Contact_BAO_Contact::getCountComponent('rel', $this->_contactId), ]; if (CRM_Core_Permission::access('CiviContribute')) { $this->ajaxResponse['updateTabs']['#tab_contribute'] = CRM_Contact_BAO_Contact::getCountComponent('contribution', $this->_contactId); diff --git a/CRM/Note/Form/Note.php b/CRM/Note/Form/Note.php index 33addb0e3785..b243a2719a08 100644 --- a/CRM/Note/Form/Note.php +++ b/CRM/Note/Form/Note.php @@ -41,26 +41,15 @@ class CRM_Note_Form_Note extends CRM_Core_Form { */ protected $_entityId; - /** - * The parent note id, used when adding a comment to a note - * - * @var int - */ - protected $_parentId; - public function preProcess() { - $this->_entityTable = $this->get('entityTable'); - $this->_entityId = $this->get('entityId'); - $this->_id = $this->get('id'); - $this->_parentId = CRM_Utils_Array::value('parentId', $_GET, 0); - if ($this->_parentId) { - $this->assign('parentId', $this->_parentId); - } + $this->_id = CRM_Utils_Request::retrieve('id', 'Integer', $this); + $this->_entityTable = CRM_Utils_Request::retrieve('entity_table', 'String', $this); + $this->_entityId = CRM_Utils_Request::retrieve('entity_id', 'Integer', $this); if ($this->_id && CRM_Core_BAO_Note::getNotePrivacyHidden($this->_id)) { CRM_Core_Error::statusBounce(ts('You do not have access to this note.')); } - $this->setPageTitle($this->_parentId ? ts('Comment') : ts('Note')); + $this->setPageTitle($this->_entityTable === 'civicrm_note' ? ts('Comment') : ts('Note')); } /** @@ -78,15 +67,12 @@ public function setDefaultValues() { $params['id'] = $this->_id; CRM_Core_DAO::commonRetrieve('CRM_Core_DAO_Note', $params, $defaults); } - if ($defaults['entity_table'] == 'civicrm_note') { - $defaults['parent_id'] = $defaults['entity_id']; - } } elseif ($this->_action & CRM_Core_Action::ADD) { + $defaults['privacy'] = '0'; $defaults['note_date'] = date('Y-m-d H:i:s'); - if ($this->_parentId) { - $defaults['parent_id'] = $this->_parentId; - $defaults['subject'] = 'Re: ' . CRM_Core_BAO_Note::getNoteSubject($this->_parentId); + if ($this->_entityTable === 'civicrm_note') { + $defaults['subject'] = ts('Re: %1', [1 => CRM_Core_BAO_Note::getNoteSubject($this->_entityId)]); } } return $defaults; @@ -130,8 +116,10 @@ public function buildQuickForm() { $this->addField('subject'); $this->addField('note_date', [], TRUE, FALSE); $this->addField('note', [], TRUE); - $this->addField('privacy'); - $this->add('hidden', 'parent_id'); + $this->addField('privacy', [ + 'placeholder' => NULL, + 'option_url' => NULL, + ]); // add attachments part CRM_Core_BAO_File::buildAttachment($this, 'civicrm_note', $this->_id, NULL, TRUE); @@ -161,11 +149,7 @@ public function postProcess() { $session = CRM_Core_Session::singleton(); $params['contact_id'] = $session->get('userID'); - if (!empty($params['parent_id'])) { - $params['entity_table'] = 'civicrm_note'; - $params['entity_id'] = $params['parent_id']; - } - else { + if ($this->_action & CRM_Core_Action::ADD) { $params['entity_table'] = $this->_entityTable; $params['entity_id'] = $this->_entityId; } @@ -185,8 +169,7 @@ public function postProcess() { // add attachments as needed CRM_Core_BAO_File::formatAttachment($params, $params, 'civicrm_note', $params['id']); - $ids = []; - $note = CRM_Core_BAO_Note::add($params, $ids); + $note = CRM_Core_BAO_Note::add($params); // Required for postProcess hooks $this->setEntityId($note->id); diff --git a/CRM/PCP/BAO/PCP.php b/CRM/PCP/BAO/PCP.php index 3f78c9539242..3540790485e5 100644 --- a/CRM/PCP/BAO/PCP.php +++ b/CRM/PCP/BAO/PCP.php @@ -344,7 +344,11 @@ public static function &pcpLinks($pcpId = NULL) { ], ]; + // pcp.user.actions emits a malformed set of $links. But it is locked-in via unit-test, so we'll grandfather + // the bad one and fire new variants that are well-formed. CRM_Utils_Hook::links('pcp.user.actions', 'Pcp', $pcpId, self::$_pcpLinks); + CRM_Utils_Hook::links('pcp.user.actions.add', 'Pcp', $pcpId, self::$_pcpLinks['add']); + CRM_Utils_Hook::links('pcp.user.actions.all', 'Pcp', $pcpId, self::$_pcpLinks['all']); } return self::$_pcpLinks; } @@ -388,7 +392,7 @@ public static function buildPCPForm($form) { $form->assign('profile', $profile); } - $form->add('select', 'supporter_profile_id', ts('Supporter Profile'), ['' => ts('- select -')] + $profile, TRUE, ['class' => 'crm-select2']); + $form->add('select', 'supporter_profile_id', ts('Supporter Profile'), ['' => ts('- select -')] + $profile, FALSE, ['class' => 'crm-select2']); //CRM-15821 - To add new option for PCP "Owner" notification $ownerNotifications = CRM_Core_OptionGroup::values('pcp_owner_notify'); diff --git a/CRM/PCP/Form/Contribute.php b/CRM/PCP/Form/Contribute.php index 19f484099672..86bc12ba7944 100644 --- a/CRM/PCP/Form/Contribute.php +++ b/CRM/PCP/Form/Contribute.php @@ -72,11 +72,8 @@ public function setDefaultValues() { * @return void */ public function buildQuickForm() { - $this->_last = TRUE; CRM_PCP_BAO_PCP::buildPCPForm($this); - $this->addElement('checkbox', 'pcp_active', ts('Enable Personal Campaign Pages? (for this contribution page)'), NULL, ['onclick' => "return showHideByValue('pcp_active',true,'pcpFields','table-row','radio',false);"]); - parent::buildQuickForm(); $this->addFormRule(['CRM_PCP_Form_Contribute', 'formRule'], $this); } @@ -95,7 +92,7 @@ public function buildQuickForm() { */ public static function formRule($params, $files, $self) { $errors = []; - if (!empty($params['is_active'])) { + if (!empty($params['pcp_active'])) { if (!empty($params['is_tellfriend_enabled']) && (CRM_Utils_Array::value('tellfriend_limit', $params) <= 0) @@ -147,9 +144,9 @@ public function postProcess() { $dao->entity_id = $this->_id; $dao->find(TRUE); $params['id'] = $dao->id; - $params['is_active'] = CRM_Utils_Array::value('pcp_active', $params, FALSE); - $params['is_approval_needed'] = CRM_Utils_Array::value('is_approval_needed', $params, FALSE); - $params['is_tellfriend_enabled'] = CRM_Utils_Array::value('is_tellfriend_enabled', $params, FALSE); + $params['is_active'] = $params['pcp_active'] ?? FALSE; + $params['is_approval_needed'] = $params['is_approval_needed'] ?? FALSE; + $params['is_tellfriend_enabled'] = $params['is_tellfriend_enabled'] ?? FALSE; CRM_PCP_BAO_PCPBlock::writeRecord($params); diff --git a/CRM/PCP/Form/Event.php b/CRM/PCP/Form/Event.php index 636968f8a05d..5448225acc03 100644 --- a/CRM/PCP/Form/Event.php +++ b/CRM/PCP/Form/Event.php @@ -125,13 +125,19 @@ public function buildQuickForm() { */ public static function formRule($params, $files, $self) { $errors = []; - if (!empty($params['is_active'])) { + if (!empty($params['pcp_active'])) { - if (!empty($params['is_tellfriend_enabled']) && - (CRM_Utils_Array::value('tellfriend_limit', $params) <= 0) - ) { - $errors['tellfriend_limit'] = ts('if Tell Friend is enable, Maximum recipients limit should be greater than zero.'); + if (!empty($params['is_tellfriend_enabled']) && ($params['is_tellfriend_enabled'] <= 0)) { + $errors['tellfriend_limit'] = ts('If Tell a Friend is enabled, maximum recipients limit should be greater than zero.'); + } + + if (empty($params['target_entity_type'])) { + $errors['target_entity_type'] = ts('Campaign Type is a required field.'); } + elseif (($params['target_entity_type'] === 'contribute') && (empty($params['target_entity_id']))) { + $errors['target_entity_id'] = ts('Online Contribution Page is a required field.'); + } + if (empty($params['supporter_profile_id'])) { $errors['supporter_profile_id'] = ts('Supporter profile is a required field.'); } @@ -181,9 +187,9 @@ public function postProcess() { $dao->entity_id = $this->_id; $dao->find(TRUE); $params['id'] = $dao->id; - $params['is_active'] = CRM_Utils_Array::value('pcp_active', $params, FALSE); - $params['is_approval_needed'] = CRM_Utils_Array::value('is_approval_needed', $params, FALSE); - $params['is_tellfriend_enabled'] = CRM_Utils_Array::value('is_tellfriend_enabled', $params, FALSE); + $params['is_active'] = $params['pcp_active'] ?? FALSE; + $params['is_approval_needed'] = $params['is_approval_needed'] ?? FALSE; + $params['is_tellfriend_enabled'] = $params['is_tellfriend_enabled'] ?? FALSE; CRM_PCP_BAO_PCPBlock::writeRecord($params); diff --git a/CRM/PCP/Page/PCP.php b/CRM/PCP/Page/PCP.php index 2fb8c5f822c6..d18e6354d3d8 100644 --- a/CRM/PCP/Page/PCP.php +++ b/CRM/PCP/Page/PCP.php @@ -54,18 +54,21 @@ public function &links() { 'url' => 'civicrm/pcp/info', 'qs' => 'action=update&reset=1&id=%%id%%&context=dashboard', 'title' => ts('Edit Personal Campaign Page'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::RENEW => [ 'name' => ts('Approve'), 'url' => 'civicrm/admin/pcp', 'qs' => 'action=renew&id=%%id%%', 'title' => ts('Approve Personal Campaign Page'), + 'weight' => 30, ], CRM_Core_Action::REVERT => [ 'name' => ts('Reject'), 'url' => 'civicrm/admin/pcp', 'qs' => 'action=revert&id=%%id%%', 'title' => ts('Reject Personal Campaign Page'), + 'weight' => 30, ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), @@ -73,18 +76,21 @@ public function &links() { 'qs' => 'action=delete&id=%%id%%', 'extra' => 'onclick = "return confirm(\'' . $deleteExtra . '\');"', 'title' => ts('Delete Personal Campaign Page'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'url' => 'civicrm/admin/pcp', 'qs' => 'action=enable&id=%%id%%', 'title' => ts('Enable'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'url' => 'civicrm/admin/pcp', 'qs' => 'action=disable&id=%%id%%', 'title' => ts('Disable'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], ]; } @@ -296,7 +302,7 @@ public function browse($action = NULL) { 'page_title' => $title, 'page_url' => $pageUrl, 'page_type' => $page_type, - 'action' => CRM_Core_Action::formLink(self::links(), $action, + 'action' => CRM_Core_Action::formLink($this->links(), $action, ['id' => $pcp->id], ts('more'), FALSE, 'contributionpage.pcp.list', 'PCP', $pcp->id ), 'title' => $pcp->title, diff --git a/CRM/Pledge/BAO/PledgeBlock.php b/CRM/Pledge/BAO/PledgeBlock.php index 052a23fbbda6..e6e867dfbadd 100644 --- a/CRM/Pledge/BAO/PledgeBlock.php +++ b/CRM/Pledge/BAO/PledgeBlock.php @@ -118,8 +118,11 @@ public static function getPledgeBlock($pageID) { * @param CRM_Core_Form $form * * @throws \CRM_Core_Exception + * + * @deprecated since 5.68 will be removed around 5.74 */ public static function buildPledgeBlock($form) { + CRM_Core_Error::deprecatedFunctionWarning('no alternative'); //build pledge payment fields. if (!empty($form->_values['pledge_id'])) { //get all payments required details. diff --git a/CRM/Pledge/Form/Pledge.php b/CRM/Pledge/Form/Pledge.php index aa454fe5866c..ab873baa75fa 100644 --- a/CRM/Pledge/Form/Pledge.php +++ b/CRM/Pledge/Form/Pledge.php @@ -43,7 +43,7 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { * The Pledge values if an existing pledge. * @var array */ - public $_values; + public $_values = []; /** * The Pledge frequency Units. @@ -195,33 +195,28 @@ public function buildQuickForm(): void { $contactField->freeze(); } - $showAdditionalInfo = FALSE; - $formType = CRM_Utils_Request::retrieveValue('form_type', 'String'); - $defaults = []; + $formType = CRM_Utils_Request::retrieveValue('formType', 'String'); - $paneNames = [ - ts('Payment Reminders') => 'PaymentReminders', + $allPanes[ts('Payment Reminders')] = [ + 'open' => 'false', + 'id' => 'PaymentReminders', ]; - foreach ($paneNames as $name => $type) { - $urlParams = "snippet=4&formType={$type}"; - $allPanes[$name] = [ - 'url' => CRM_Utils_System::url('civicrm/contact/view/pledge', $urlParams), - 'open' => 'false', - 'id' => $type, - ]; - // see if we need to include this paneName in the current form - if ($formType == $type || !empty($_POST["hidden_{$type}"]) || - !empty($defaults["hidden_{$type}"]) - ) { - $showAdditionalInfo = TRUE; - $allPanes[$name]['open'] = 'true'; - } - $fnName = "build{$type}"; - CRM_Contribute_Form_AdditionalInfo::$fnName($this); + // see if we need to include this paneName in the current form + if ($formType === 'PaymentReminders' || !empty($_POST['hidden_PaymentReminders']) + ) { + $allPanes[ts('Payment Reminders')]['open'] = 'true'; } + $this->add('hidden', 'hidden_PaymentReminders', 1); + $this->add('text', 'initial_reminder_day', ts('Send Initial Reminder'), ['size' => 3]); + $this->addRule('initial_reminder_day', ts('Please enter a valid reminder day.'), 'positiveInteger'); + $this->add('text', 'max_reminders', ts('Send up to'), ['size' => 3]); + $this->addRule('max_reminders', ts('Please enter a valid No. of reminders.'), 'positiveInteger'); + $this->add('text', 'additional_reminder_day', ts('Send additional reminders'), ['size' => 3]); + $this->addRule('additional_reminder_day', ts('Please enter a valid additional reminder day.'), 'positiveInteger'); + $this->assign('allPanes', $allPanes); - $this->assign('showAdditionalInfo', $showAdditionalInfo); + $this->assign('showAdditionalInfo', TRUE); $this->assign('formType', $formType); if ($formType) { @@ -297,8 +292,8 @@ public function buildQuickForm(): void { $frequencyUnit->freeze(); $frequencyDay->freeze(); $eachPaymentAmount = $this->_values['original_installment_amount']; - $this->assign('eachPaymentAmount', $eachPaymentAmount); } + $this->assign('eachPaymentAmount', $eachPaymentAmount ?? NULL); if (($this->_values['status_id'] ?? NULL) != CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_Pledge', 'status_id', 'Cancelled') @@ -345,25 +340,28 @@ public function buildQuickForm(): void { // make this form an upload since we dont know if the custom data injected dynamically // is of type file etc $uploadNames = $this->get( 'uploadNames' ); - $this->addButtons([ - [ - 'type' => 'upload', - 'name' => ts('Save'), - 'js' => ['onclick' => 'return verify( );'], - 'isDefault' => TRUE, - ], - [ - 'type' => 'upload', - 'name' => ts('Save and New'), - 'js' => ['onclick' => 'return verify( );'], - 'subName' => 'new', - ], - [ - 'type' => 'cancel', - 'name' => ts('Cancel'), - ], - ]); + $buttons = [ + [ + 'type' => 'upload', + 'name' => ts('Save'), + 'js' => ['onclick' => 'return verify();'], + 'isDefault' => TRUE, + ], + ]; + if (!$this->_id) { + $buttons[] = [ + 'type' => 'upload', + 'name' => ts('Save and New'), + 'js' => ['onclick' => 'return verify();'], + 'subName' => 'new', + ]; + } + $buttons[] = [ + 'type' => 'cancel', + 'name' => ts('Cancel'), + ]; + $this->addButtons($buttons); $this->addFormRule(['CRM_Pledge_Form_Pledge', 'formRule'], $this); if ($this->_action & CRM_Core_Action::VIEW) { diff --git a/CRM/Pledge/Selector/Search.php b/CRM/Pledge/Selector/Search.php index 49b5c25c2b6d..8dba0e80336e 100644 --- a/CRM/Pledge/Selector/Search.php +++ b/CRM/Pledge/Selector/Search.php @@ -262,8 +262,8 @@ public function getTotalCount($action) { * @param string $output * What should the result set include (web/email/csv). * - * @return int - * the total number of rows for this action + * @return array + * Rows number of rows for this action */ public function &getRows($action, $offset, $rowCount, $sort, $output = NULL) { $result = $this->_query->searchQuery($offset, $rowCount, $sort, @@ -276,9 +276,6 @@ public function &getRows($action, $offset, $rowCount, $sort, $output = NULL) { // process the result of the query $rows = []; - // get all pledge status - $pledgeStatuses = CRM_Pledge_BAO_Pledge::buildOptions('status_id'); - // get all campaigns. $allCampaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE); @@ -302,29 +299,30 @@ public function &getRows($action, $offset, $rowCount, $sort, $output = NULL) { // the columns we are interested in foreach (self::$_properties as $property) { - if (isset($result->$property)) { - $row[$property] = $result->$property; + if (in_array($property, ['pledge_amount', 'pledge_total_paid', 'pledge_next_pay_amount', 'pledge_outstanding_amount'])) { + $row[$property] = $result->$property ? (float) $result->$property : 0; + } + else { + $row[$property] = $result->$property ?? NULL; } } // carry campaign on selectors. $row['campaign'] = $allCampaigns[$result->pledge_campaign_id] ?? NULL; $row['campaign_id'] = $result->pledge_campaign_id; - - // add pledge status name - if (!empty($row['pledge_status_id'])) { - $row['pledge_status_name'] = CRM_Utils_Array::value($row['pledge_status_id'], - $pledgeStatuses - ); + if (isset($row['pledge_total_paid'])) { + $row['pledge_balance_amount'] = $row['pledge_amount'] - $row['pledge_total_paid']; } + // add pledge status name + $statusID = $row['pledge_status_id'] ?? NULL; + $row['pledge_status_name'] = CRM_Core_PseudoConstant::getLabel('CRM_Pledge_BAO_Pledge', 'status_id', $statusID); + // append (test) to status label if (!empty($row['pledge_is_test'])) { $row['pledge_status'] = CRM_Core_TestEntity::appendTestText($row['pledge_status']); } $hideOption = []; - if (CRM_Utils_Array::key('Cancelled', $row) || - CRM_Utils_Array::key('Completed', $row) - ) { + if (in_array(CRM_Core_PseudoConstant::getName('CRM_Pledge_BAO_Pledge', 'status_id', $statusID), ['Completed', 'Cancelled'])) { $hideOption[] = 'Cancel'; } diff --git a/CRM/Price/BAO/LineItem.php b/CRM/Price/BAO/LineItem.php index 4d4069054a5e..4a1a81c85abe 100644 --- a/CRM/Price/BAO/LineItem.php +++ b/CRM/Price/BAO/LineItem.php @@ -311,7 +311,7 @@ public static function format($fid, $params, $fields, &$values, $amount_override $qty = (float) $qty; $price = (float) ($amount_override === NULL ? $options[$oid]['amount'] : $amount_override); - $participantsPerField = (int) CRM_Utils_Array::value('count', $options[$oid], 0); + $participantsPerField = (int) ($options[$oid]['count'] ?? 0); $values[$oid] = [ 'price_field_id' => $fid, @@ -329,7 +329,7 @@ public static function format($fid, $params, $fields, &$values, $amount_override 'auto_renew' => $options[$oid]['auto_renew'] ?? NULL, 'html_type' => $fields['html_type'], 'financial_type_id' => $options[$oid]['financial_type_id'] ?? NULL, - 'tax_amount' => CRM_Utils_Array::value('tax_amount', $options[$oid], 0), + 'tax_amount' => $options[$oid]['tax_amount'] ?? 0, 'non_deductible_amount' => $options[$oid]['non_deductible_amount'] ?? NULL, ]; diff --git a/CRM/Price/BAO/PriceField.php b/CRM/Price/BAO/PriceField.php index 0fb1c2e60907..39803c6d4f6a 100644 --- a/CRM/Price/BAO/PriceField.php +++ b/CRM/Price/BAO/PriceField.php @@ -236,6 +236,8 @@ public static function getTitle($id) { * * @param null $fieldOptions * @param array $freezeOptions + * @param array $extra + * Passed through to the add element function, use to add js. * * @return null */ @@ -247,18 +249,20 @@ public static function addQuickFormElement( $useRequired = TRUE, $label = NULL, $fieldOptions = NULL, - $freezeOptions = [] + $freezeOptions = [], + array $extra = [] ) { - + $incomingExtra = $extra; $field = new CRM_Price_DAO_PriceField(); $field->id = $fieldId; if (!$field->find(TRUE)) { /* FIXME: failure! */ return NULL; } - + $label = $label ?: $field->label; $is_pay_later = 0; $isQuickConfig = CRM_Price_BAO_PriceSet::isQuickConfig($field->price_set_id); + // @todo - pass is_pay_later in rather than checking form properties if (isset($qf->_mode) && empty($qf->_mode)) { $is_pay_later = 1; } @@ -274,10 +278,7 @@ public static function addQuickFormElement( // get currency name for price field and option attributes $currencyName = $config->defaultCurrency; - if (!isset($label)) { - $label = (!empty($qf->_membershipBlock) && $field->name === 'contribution_amount') ? ts('Additional Contribution') : $field->label; - } - + // @todo - pass useRequired in rather than checking form properties if (isset($qf->_online) && $qf->_online) { $useRequired = FALSE; } @@ -310,21 +311,16 @@ public static function addQuickFormElement( $max_value, ]); - $extra = []; if (!empty($fieldOptions[$optionKey]['label'])) { //check for label. - $label = $fieldOptions[$optionKey]['label']; + $label = CRM_Utils_String::purifyHTML($fieldOptions[$optionKey]['label']); } + // @todo - move this back to the only calling function on Contribution_Form_Main.php if ($isQuickConfig && $field->name === 'other_amount') { if (!empty($qf->_membershipBlock)) { $useRequired = 0; } $label .= ' ' . $currencySymbol; - $qf->assign('priceset', $elementName); - $extra = [ - 'onclick' => 'useAmountOther();', - 'autocomplete' => 'off', - ]; } $element = &$qf->add('text', $elementName, $label, @@ -353,7 +349,7 @@ public static function addQuickFormElement( $type = 'money'; } else { - $message = ts('%1 must be a number (with or without decimal point).', [1 => $label]); + $message = ts('%1 must be a number (with or without decimals).', [1 => $label]); $type = 'numeric'; } // integers will have numeric rule applied to them. @@ -363,10 +359,6 @@ public static function addQuickFormElement( case 'Radio': $choice = []; - if ($isQuickConfig && $field->name === 'contribution_amount') { - $qf->assign('contriPriceset', $elementName); - } - foreach ($customOption as $opId => $opt) { $priceOptionText = self::buildPriceOptionText($opt, $field->is_display_amounts, $valueFieldName); if (isset($opt['visibility_id'])) { @@ -381,10 +373,8 @@ public static function addQuickFormElement( 'data-currency' => $currencyName, 'data-price-field-values' => json_encode($customOption), 'visibility' => $visibility_id, - ]; - if ($isQuickConfig && $field->name == 'contribution_amount') { - $extra += ['onclick' => 'clearAmountOther();']; - } + ] + $incomingExtra; + // @todo - move this back to the only calling function on Contribution_Form_Main.php if ($field->name == 'membership_amount') { $extra += [ 'onclick' => "return showHideAutoRenew({$opt['membership_type_id']});", @@ -393,12 +383,13 @@ public static function addQuickFormElement( $qf->assign('membershipFieldID', $field->id); } - $choice[$opt['id']] = $priceOptionText['label']; + $choice[$opt['id']] = CRM_Utils_String::purifyHTML($priceOptionText['label']); $choiceAttrs[$opt['id']] = $extra; if ($is_pay_later) { $qf->add('text', 'txt-' . $elementName, $label, ['size' => '4']); } } + // @todo - move this back to the only calling function on Contribution_Form_Main.php if (!empty($qf->_membershipBlock) && $field->name == 'contribution_amount') { $choice['-1'] = ts('No thank you'); $choiceAttrs['-1'] = [ @@ -435,6 +426,7 @@ public static function addQuickFormElement( } // make contribution field required for quick config when membership block is enabled + // @todo - move this back to the only calling function on Contribution_Form_Main.php if (($field->name == 'membership_amount' || $field->name == 'contribution_amount') && !empty($qf->_membershipBlock) && !$field->is_required ) { @@ -528,6 +520,7 @@ public static function addQuickFormElement( } break; } + // @todo - move this action back to the calling function if (isset($qf->_online) && $qf->_online) { $element->freeze(); } @@ -737,11 +730,11 @@ public static function priceSetValidation($priceSetId, $fields, &$error, $allowN } } - list($componentName) = explode(':', $fields['_qf_default']); + [$componentName] = explode(':', $fields['_qf_default']); // now we have all selected amount in hand. $totalAmount = array_sum($selectedAmounts); // The form offers a field to enter the amount paid. This may differ from the amount that is due to complete the purchase - $totalPaymentAmountEnteredOnForm = CRM_Utils_Array::value('total_amount', $fields); + $totalPaymentAmountEnteredOnForm = $fields['total_amount'] ?? NULL; if ($totalAmount < 0) { $error['_qf_default'] = ts('%1 amount can not be less than zero. Please select the options accordingly.', [1 => $componentName]); } @@ -778,12 +771,12 @@ public static function priceSetValidation($priceSetId, $fields, &$error, $allowN */ public static function buildPriceOptionText($opt, $isDisplayAmounts, $valueFieldName) { $preHelpText = $postHelpText = ''; - $optionLabel = !empty($opt['label']) ? '' . $opt['label'] . '' : ''; - if (!empty($opt['help_pre'])) { - $preHelpText = '' . $opt['help_pre'] . ''; + $optionLabel = !empty($opt['label']) ? '' . CRM_Utils_String::purifyHTML($opt['label']) . '' : ''; + if (CRM_Utils_String::purifyHTML($opt['help_pre'] ?? '')) { + $preHelpText = '' . CRM_Utils_String::purifyHTML($opt['help_pre']) . ''; } - if (!empty($opt['help_post'])) { - $postHelpText = '' . $opt['help_post'] . ''; + if (CRM_Utils_String::purifyHTML($opt['help_post'] ?? '')) { + $postHelpText = '' . CRM_Utils_String::purifyHTML($opt['help_post']) . ''; } $invoicing = Civi::settings()->get('invoicing'); diff --git a/CRM/Price/BAO/PriceSet.php b/CRM/Price/BAO/PriceSet.php index 874fcd208547..8d5661c9216d 100644 --- a/CRM/Price/BAO/PriceSet.php +++ b/CRM/Price/BAO/PriceSet.php @@ -15,6 +15,10 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ +use Civi\Api4\PriceField; +use Civi\Api4\PriceFieldValue; +use Civi\Api4\PriceSet; + /** * Business object for managing price sets. * @@ -449,7 +453,7 @@ public static function getSetDetail($setID, $required = TRUE, $doNotIncludeExpir $visibility = CRM_Core_PseudoConstant::visibility('name'); while ($dao->fetch()) { - $fieldID = $dao->id; + $fieldID = (int) $dao->id; $setTree[$setID]['fields'][$fieldID] = []; $setTree[$setID]['fields'][$fieldID]['id'] = $fieldID; @@ -459,7 +463,7 @@ public static function getSetDetail($setID, $required = TRUE, $doNotIncludeExpir continue; } - if ($field == 'visibility_id') { + if ($field === 'visibility_id') { $setTree[$setID]['fields'][$fieldID]['visibility'] = $visibility[$dao->$field]; } $setTree[$setID]['fields'][$fieldID][$field] = $dao->$field; @@ -475,11 +479,11 @@ public static function getSetDetail($setID, $required = TRUE, $doNotIncludeExpir $dao = CRM_Core_DAO::executeQuery($sql, $params); if ($dao->fetch()) { $setTree[$setID]['extends'] = $dao->extends; - $setTree[$setID]['financial_type_id'] = $dao->financial_type_id; + $setTree[$setID]['financial_type_id'] = (int) $dao->financial_type_id; $setTree[$setID]['help_pre'] = $dao->help_pre; $setTree[$setID]['help_post'] = $dao->help_post; - $setTree[$setID]['is_quick_config'] = $dao->is_quick_config; - $setTree[$setID]['min_amount'] = $dao->min_amount; + $setTree[$setID]['is_quick_config'] = (bool) $dao->is_quick_config; + $setTree[$setID]['min_amount'] = (float) $dao->min_amount; } return $setTree; } @@ -595,7 +599,7 @@ public static function initSet(&$form, $entityTable = 'civicrm_event', $doNotInc if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $count = CRM_Utils_Array::value('count', $option, 0); + $count = $option['count'] ?? 0; $optionsCountDetails['fields'][$field['id']]['options'][$option['id']] = $count; } } @@ -610,7 +614,7 @@ public static function initSet(&$form, $entityTable = 'civicrm_event', $doNotInc if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $maxVal = CRM_Utils_Array::value('max_value', $option, 0); + $maxVal = $option['max_value'] ?? 0; $optionsMaxValueDetails['fields'][$field['id']]['options'][$option['id']] = $maxVal; $optionsMaxValueTotal += $maxVal; } @@ -757,30 +761,50 @@ public static function filterPriceFieldsFromParams($priceSetID, $params) { } /** - * Wrapper for getSetDetail with caching. + * Get PriceSet + Fields + FieldValues nested, with caching. + * + * This gets the same values as getSet but uses apiv4 for more + * predictability & better variable typing. * * We seem to be passing this array around in a painful way - presumably to avoid the hit * of loading it - so lets make it callable with caching. * - * Why not just add caching to the other function? We could do - it just seemed a bit unclear the best caching pattern - * & the function was already pretty fugly. Also, I feel like we need to migrate the interaction with price-sets into - * a more granular interaction - ie. retrieve specific data using specific functions on this class & have the form - * think less about the price sets. - * * @param int $priceSetID * * @return array + * + * @noinspection PhpUnhandledExceptionInspection */ - public static function getCachedPriceSetDetail($priceSetID) { + public static function getCachedPriceSetDetail(int $priceSetID): array { $cacheKey = __CLASS__ . __FUNCTION__ . '_' . $priceSetID; $cache = CRM_Utils_Cache::singleton(); - $values = $cache->get($cacheKey); - if (empty($values)) { - $data = self::getSetDetail($priceSetID); - $values = $data[$priceSetID]; - $cache->set($cacheKey, $values); + $data = $cache->get($cacheKey); + if (empty($data)) { + $data = PriceSet::get(FALSE) + ->addWhere('id', '=', $priceSetID) + ->addSelect('*', 'visibility_id:name', 'extends:name') + ->execute()->first(); + $data['fields'] = (array) PriceField::get(FALSE) + ->addWhere('price_set_id', '=', $priceSetID) + ->addSelect('*', 'visibility_id:name') + ->execute()->indexBy('id'); + foreach ($data['fields'] as &$field) { + $field['options'] = []; + // Add in visibility because Smarty templates expect it and it is hard to adjust them to colon format. + $field['visibility'] = $field['visibility_id:name']; + } + $options = PriceFieldValue::get(FALSE) + ->addWhere('price_field_id', 'IN', array_keys($data['fields'])) + ->addSelect('*', 'membership_type_id.name', 'visibility_id:name') + ->execute(); + foreach ($options as $option) { + // Add in visibility because Smarty templates expect it and it is hard to adjust them to colon format. + $option['visibility'] = $option['visibility_id:name']; + $data['fields'][$option['price_field_id']]['options'][$option['id']] = $option; + } + $cache->set($cacheKey, $data); } - return $values; + return $data; } /** @@ -791,7 +815,8 @@ public static function getCachedPriceSetDetail($priceSetID) { * @param bool $validFieldsOnly * * @return void - * @throws \CRM_Core_Exception + * + * @deprecated since 5.68. Will be removed around 5.80. */ public static function buildPriceSet(&$form, $component = NULL, $validFieldsOnly = TRUE) { $priceSetId = $form->get('priceSetId'); @@ -840,22 +865,53 @@ public static function buildPriceSet(&$form, $component = NULL, $validFieldsOnly // Call the buildAmount hook. CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock); - self::addPriceFieldsToForm($form, $feeBlock, $validFieldsOnly, $className, $validPriceFieldIds); - } + $hideAdminValues = !CRM_Core_Permission::check('edit contributions'); + // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions + $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); + $checklifetime = FALSE; + foreach ($feeBlock as $id => $field) { + if (($field['visibility'] ?? NULL) == 'public' || + (($field['visibility'] ?? NULL) == 'admin' && $adminFieldVisible == TRUE) || + !$validFieldsOnly + ) { + $options = $field['options'] ?? NULL; + if ($className == 'CRM_Contribute_Form_Contribution_Main' && $component = 'membership') { + $contactId = $form->getVar('_membershipContactID'); + if ($contactId && $options) { + $contactsLifetimeMemberships = CRM_Member_BAO_Membership::getAllContactMembership($contactId, FALSE, TRUE); + $contactsLifetimeMembershipTypes = array_column($contactsLifetimeMemberships, 'membership_type_id'); + $memTypeIdsInPriceField = array_column($options, 'membership_type_id'); + $isCurrentMember = (bool) array_intersect($memTypeIdsInPriceField, $contactsLifetimeMembershipTypes); + $checklifetime = $checklifetime ?: $isCurrentMember; + } + } + + $formClasses = ['CRM_Contribute_Form_Contribution', 'CRM_Member_Form_Membership']; + + if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { + continue; + } + elseif ($hideAdminValues && !in_array($className, $formClasses)) { + foreach ($options as $key => $currentOption) { + if ($currentOption['visibility_id'] == CRM_Price_BAO_PriceField::getVisibilityOptionID('admin')) { + unset($options[$key]); + } + } + } + if (!empty($options)) { + CRM_Price_BAO_PriceField::addQuickFormElement($form, + 'price_' . $field['id'], + $field['id'], + FALSE, + $field['is_required'] ?? FALSE, + NULL, + $options + ); + } + } + } + $form->assign('ispricelifetime', $checklifetime); - /** - * Check for lifetime membership types this contact has that are in this price field. - * - * @param array $options - * @param int $contactId - * - * @return bool - */ - private static function checkCurrentMembership(array $options, int $contactId) : bool { - $contactsLifetimeMemberships = CRM_Member_BAO_Membership::getAllContactMembership($contactId, FALSE, TRUE); - $contactsLifetimeMembershipTypes = array_column($contactsLifetimeMemberships, 'membership_type_id'); - $memTypeIdsInPriceField = array_column($options, 'membership_type_id'); - return (bool) array_intersect($memTypeIdsInPriceField, $contactsLifetimeMembershipTypes); } /** @@ -1579,7 +1635,7 @@ public static function getLine(&$params, &$lineItem, $priceSetID, $field, $id): $amount_override = NULL; if ($priceSetID && count(self::filterPriceFieldsFromParams($priceSetID, $params)) === 1) { - $amount_override = CRM_Utils_Array::value('total_amount', $params); + $amount_override = $params['total_amount'] ?? NULL; } CRM_Price_BAO_LineItem::format($id, $params, $field, $lineItem, $amount_override); if (!empty($field['options'][$optionValueId]['tax_rate'])) { @@ -1613,60 +1669,6 @@ public static function getLine(&$params, &$lineItem, $priceSetID, $field, $id): return [$params, $lineItem]; } - /** - * Add the relevant price fields to the form. - * - * @param \CRM_Core_Form $form - * @param array $feeBlock - * @param bool $validFieldsOnly - * @param string $className - * @param array $validPriceFieldIds - */ - protected static function addPriceFieldsToForm(CRM_Core_Form $form, $feeBlock, bool $validFieldsOnly, string $className, array $validPriceFieldIds) { - $hideAdminValues = !CRM_Core_Permission::check('edit contributions'); - // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions - $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); - $checklifetime = FALSE; - foreach ($feeBlock as $id => $field) { - if (($field['visibility'] ?? NULL) == 'public' || - (($field['visibility'] ?? NULL) == 'admin' && $adminFieldVisible == TRUE) || - !$validFieldsOnly - ) { - $options = $field['options'] ?? NULL; - if ($className == 'CRM_Contribute_Form_Contribution_Main' && $component = 'membership') { - $contactId = $form->getVar('_membershipContactID'); - if ($contactId && $options) { - $checklifetime = $checklifetime ?: self::checkCurrentMembership($options, $contactId); - } - } - - $formClasses = ['CRM_Contribute_Form_Contribution', 'CRM_Member_Form_Membership']; - - if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { - continue; - } - elseif ($hideAdminValues && !in_array($className, $formClasses)) { - foreach ($options as $key => $currentOption) { - if ($currentOption['visibility_id'] == CRM_Price_BAO_PriceField::getVisibilityOptionID('admin')) { - unset($options[$key]); - } - } - } - if (!empty($options)) { - CRM_Price_BAO_PriceField::addQuickFormElement($form, - 'price_' . $field['id'], - $field['id'], - FALSE, - CRM_Utils_Array::value('is_required', $field, FALSE), - NULL, - $options - ); - } - } - } - $form->assign('ispricelifetime', $checklifetime); - } - /** * Pseudoconstant options for the `extends` field * diff --git a/CRM/Price/Form/Field.php b/CRM/Price/Form/Field.php index 3f2b2bd6a747..5496fdabd089 100644 --- a/CRM/Price/Form/Field.php +++ b/CRM/Price/Form/Field.php @@ -666,12 +666,12 @@ public function submit($params) { $params['option_amount'][$key] = CRM_Utils_Rule::cleanMoney($amount); } - $params['is_display_amounts'] = CRM_Utils_Array::value('is_display_amounts', $params, FALSE); - $params['is_required'] = CRM_Utils_Array::value('is_required', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['financial_type_id'] = CRM_Utils_Array::value('financial_type_id', $params, FALSE); - $params['visibility_id'] = CRM_Utils_Array::value('visibility_id', $params, FALSE); - $params['count'] = CRM_Utils_Array::value('count', $params, FALSE); + $params['is_display_amounts'] = $params['is_display_amounts'] ?? FALSE; + $params['is_required'] = $params['is_required'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['financial_type_id'] = $params['financial_type_id'] ?? FALSE; + $params['visibility_id'] = $params['visibility_id'] ?? FALSE; + $params['count'] = $params['count'] ?? FALSE; // need the FKEY - price set id $params['price_set_id'] = $this->_sid; @@ -689,7 +689,7 @@ public function submit($params) { if (isset($params['option_name'])) { $params['option_value'] = $params['option_name']; } - $params['is_enter_qty'] = CRM_Utils_Array::value('is_enter_qty', $params, FALSE); + $params['is_enter_qty'] = $params['is_enter_qty'] ?? FALSE; if ($params['html_type'] === 'Text') { // if html type is Text, force is_enter_qty on diff --git a/CRM/Price/Form/Option.php b/CRM/Price/Form/Option.php index 94e4f0d9a8f5..3aeecdc00f4c 100644 --- a/CRM/Price/Form/Option.php +++ b/CRM/Price/Form/Option.php @@ -328,9 +328,9 @@ public function postProcess() { $params[$field] = CRM_Utils_Rule::cleanMoney(trim($params[$field])); } $params['price_field_id'] = $this->_fid; - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['visibility_id'] = CRM_Utils_Array::value('visibility_id', $params, FALSE); + $params['is_default'] = $params['is_default'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['visibility_id'] = $params['visibility_id'] ?? FALSE; $ids = []; if ($this->_oid) { $params['id'] = $this->_oid; diff --git a/CRM/Price/Form/Set.php b/CRM/Price/Form/Set.php index 5abbc00ca027..c9e630058ac4 100644 --- a/CRM/Price/Form/Set.php +++ b/CRM/Price/Form/Set.php @@ -243,8 +243,8 @@ public function postProcess() { // get the submitted form values. $params = $this->controller->exportValues('Set'); $nameLength = CRM_Core_DAO::getAttribute('CRM_Price_DAO_PriceSet', 'name'); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['financial_type_id'] = CRM_Utils_Array::value('financial_type_id', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['financial_type_id'] = $params['financial_type_id'] ?? FALSE; $compIds = []; $extends = $params['extends'] ?? NULL; diff --git a/CRM/Price/Page/Field.php b/CRM/Price/Page/Field.php index b519c129d657..fb4611979629 100644 --- a/CRM/Price/Page/Field.php +++ b/CRM/Price/Page/Field.php @@ -62,28 +62,33 @@ public static function &actionLinks() { 'url' => 'civicrm/admin/price/field/edit', 'qs' => 'action=update&reset=1&sid=%%sid%%&fid=%%fid%%', 'title' => ts('Edit Price'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Preview Field'), 'url' => 'civicrm/admin/price/field/edit', 'qs' => 'action=preview&reset=1&sid=%%sid%%&fid=%%fid%%', 'title' => ts('Preview Price'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Price'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Price'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/price/field/edit', 'qs' => 'action=delete&reset=1&sid=%%sid%%&fid=%%fid%%', 'title' => ts('Delete Price'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/CRM/Price/Page/Set.php b/CRM/Price/Page/Set.php index 039952f44bca..860b6f9e08d6 100644 --- a/CRM/Price/Page/Set.php +++ b/CRM/Price/Page/Set.php @@ -50,28 +50,33 @@ public function &actionLinks() { 'url' => 'civicrm/admin/price/field', 'qs' => 'reset=1&action=browse&sid=%%sid%%', 'title' => ts('View and Edit Price Fields'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Preview'), 'url' => 'civicrm/admin/price/edit', 'qs' => 'action=preview&reset=1&sid=%%sid%%', 'title' => ts('Preview Price Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW), ], CRM_Core_Action::UPDATE => [ 'name' => ts('Settings'), 'url' => 'civicrm/admin/price/edit', 'qs' => 'action=update&reset=1&sid=%%sid%%', 'title' => ts('Edit Price Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Price Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Price Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), @@ -79,6 +84,7 @@ public function &actionLinks() { 'qs' => 'action=delete&reset=1&sid=%%sid%%', 'title' => ts('Delete Price Set'), 'extra' => 'onclick = "return confirm(\'' . $deleteExtra . '\');"', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], CRM_Core_Action::COPY => [ 'name' => ts('Copy Price Set'), @@ -86,6 +92,7 @@ public function &actionLinks() { 'qs' => 'action=copy&sid=%%sid%%', 'title' => ts('Make a Copy of Price Set'), 'extra' => 'onclick = "return confirm(\'' . $copyExtra . '\');"', + 'weight' => 120, ], ]; } diff --git a/CRM/Profile/Form.php b/CRM/Profile/Form.php index 80605866ecbc..e20bd8d40b92 100644 --- a/CRM/Profile/Form.php +++ b/CRM/Profile/Form.php @@ -889,13 +889,10 @@ public function buildQuickForm(): void { $this->setDefaultsValues(); $action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, NULL); - if ($this->_mode == self::MODE_CREATE || $this->_mode == self::MODE_EDIT) { CRM_Core_BAO_CMSUser::buildForm($this, $this->_gid, $emailPresent, $action); } - else { - $this->assign('showCMS', FALSE); - } + $this->assign('showCMS', FALSE); $this->assign('groupId', $this->_gid); diff --git a/CRM/Profile/Page/MultipleRecordFieldsListing.php b/CRM/Profile/Page/MultipleRecordFieldsListing.php index 00e507f139cd..0a2454c1c66d 100644 --- a/CRM/Profile/Page/MultipleRecordFieldsListing.php +++ b/CRM/Profile/Page/MultipleRecordFieldsListing.php @@ -228,7 +228,7 @@ public function browse(): array { if ($returnValues['data_type'] == 'Date') { $dateFields[$fieldIDs[$key]] = 1; $actualPHPFormats = CRM_Utils_Date::datePluginToPHPFormats(); - $dateFormat = (array) CRM_Utils_Array::value($returnValues['date_format'], $actualPHPFormats); + $dateFormat = (array) ($actualPHPFormats[$returnValues['date_format']] ?? []); $timeFormat = $returnValues['time_format'] ?? NULL; } diff --git a/CRM/Queue/ErrorPolicy.php b/CRM/Queue/ErrorPolicy.php index 178591bbd209..9246036f9bc2 100644 --- a/CRM/Queue/ErrorPolicy.php +++ b/CRM/Queue/ErrorPolicy.php @@ -26,7 +26,21 @@ * will be necessary to get reuse from the other parts of this class. */ class CRM_Queue_ErrorPolicy { - public $active; + + /** + * @var bool + */ + protected $active; + + /** + * @var int + */ + protected $level; + + /** + * @var array + */ + protected $backup; /** * @param null|int $level @@ -43,7 +57,7 @@ public function __construct($level = NULL) { /** * Enable the error policy. */ - public function activate() { + protected function activate() { $this->active = TRUE; $this->backup = []; foreach ([ @@ -55,14 +69,12 @@ public function activate() { ini_set($key, 0); } set_error_handler([$this, 'onError'], $this->level); - // FIXME make this temporary/reversible } /** * Disable the error policy. */ - public function deactivate() { - $this->errorScope = NULL; + protected function deactivate() { restore_error_handler(); foreach ([ 'display_errors', @@ -137,7 +149,7 @@ public function onShutdown() { * @param array $error * The PHP error (with "type", "message", etc). */ - public function reportError($error) { + protected function reportError($error) { $response = [ 'is_error' => 1, 'is_continue' => 0, @@ -158,7 +170,7 @@ public function reportError($error) { * @param Exception $e * The unhandled exception. */ - public function reportException(Exception $e) { + protected function reportException(Exception $e) { CRM_Core_Error::debug_var('CRM_Queue_ErrorPolicy_reportException', CRM_Core_Error::formatTextException($e)); $response = [ diff --git a/CRM/Queue/Queue.php b/CRM/Queue/Queue.php index 9ad305a92809..a7774f20d9a2 100644 --- a/CRM/Queue/Queue.php +++ b/CRM/Queue/Queue.php @@ -59,9 +59,29 @@ public function __construct($queueSpec) { * @throws \CRM_Core_Exception */ public function isActive(): bool { + return ($this->getStatus() === 'active'); + } + + /** + * @return string|null + * @throws \CRM_Core_Exception + * @see \CRM_Queue_BAO_Queue::getStatuses() + */ + public function getStatus() { + // Queues work with concurrent processes. We want to make sure status info is up-to-date (never cached). $status = CRM_Core_DAO::getFieldValue('CRM_Queue_DAO_Queue', $this->_name, 'status', 'name', TRUE); - // Note: In the future, we may want to incorporate other data (like maintenance-mode or upgrade-status) in deciding active queues. - return ($status === 'active'); + if ($status === 'active') { + $suspend = CRM_Core_DAO::singleValueQuery('SELECT value FROM civicrm_setting WHERE name = "queue_paused" AND domain_id = %1', [ + 1 => [CRM_Core_BAO_Domain::getDomain()->id, 'Positive'], + ]); + if (!empty(CRM_Utils_String::unserialize($suspend))) { + $status = 'paused'; + } + } + CRM_Utils_Hook::queueActive($status, $this->getName(), $this->queueSpec); + // Note in future we might want to consider whether an upgrade is in progress. + // Should we set the setting at that point? + return $status; } /** diff --git a/CRM/Queue/Runner.php b/CRM/Queue/Runner.php index f89e31912777..2be2ceed648f 100644 --- a/CRM/Queue/Runner.php +++ b/CRM/Queue/Runner.php @@ -119,7 +119,7 @@ public function __construct($runnerSpec) { $this->title = CRM_Utils_Array::value('title', $runnerSpec, ts('Queue Runner')); $this->queue = $runnerSpec['queue']; $this->errorMode = CRM_Utils_Array::value('errorMode', $runnerSpec, $this->pickErrorMode($this->queue)); - $this->isMinimal = CRM_Utils_Array::value('isMinimal', $runnerSpec, FALSE); + $this->isMinimal = $runnerSpec['isMinimal'] ?? FALSE; $this->onEnd = $runnerSpec['onEnd'] ?? NULL; $this->onEndUrl = $runnerSpec['onEndUrl'] ?? NULL; $this->pathPrefix = CRM_Utils_Array::value('pathPrefix', $runnerSpec, 'civicrm/queue'); diff --git a/CRM/Report/BAO/ReportInstance.php b/CRM/Report/BAO/ReportInstance.php index eb7ff8fd6fb0..5024788f40cc 100644 --- a/CRM/Report/BAO/ReportInstance.php +++ b/CRM/Report/BAO/ReportInstance.php @@ -47,7 +47,7 @@ public static function add(&$params) { } if (!$instanceID || !isset($params['id'])) { - $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE); + $params['is_reserved'] = $params['is_reserved'] ?? FALSE; $params['domain_id'] = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID()); // CRM-17256 set created_id on report creation. $params['created_id'] = $params['created_id'] ?? CRM_Core_Session::getLoggedInContactID(); @@ -240,7 +240,7 @@ public static function self_hook_civicrm_pre(\Civi\Core\Event\PreEvent $event) { // When deleting a report, also delete from navigation menu $navId = CRM_Core_DAO::getFieldValue('CRM_Report_DAO_ReportInstance', $event->id, 'navigation_id'); if ($navId) { - CRM_Core_BAO_Navigation::processDelete($navId); + CRM_Core_BAO_Navigation::deleteRecord(['id' => $navId]); CRM_Core_BAO_Navigation::resetNavigation(); } } diff --git a/CRM/Report/Form.php b/CRM/Report/Form.php index 29f0a4dad897..2c2605ce4f4d 100644 --- a/CRM/Report/Form.php +++ b/CRM/Report/Form.php @@ -1084,7 +1084,7 @@ public function setDefaultValues($freeze = TRUE) { $order_by = [ 'column' => $fieldName, 'order' => CRM_Utils_Array::value('default_order', $field, 'ASC'), - 'section' => CRM_Utils_Array::value('default_is_section', $field, 0), + 'section' => $field['default_is_section'] ?? 0, ]; if (!empty($field['default_weight'])) { @@ -3531,8 +3531,9 @@ public function filterStat(&$statistics) { $val[$key] = $options[$valIds]; } } - $pair[$op] = (count($val) == 1) ? (($op == 'notin' || $op == - 'mnot') ? ts('Is Not') : ts('Is')) : CRM_Utils_Array::value($op, $pair); + $pair[$op] = (count($val) == 1) ? + (($op == 'notin' || $op == 'mnot') ? ts('Is Not') : ts('Is')) : + ($pair[$op] ?? ''); $val = implode(', ', $val); $value = "{$pair[$op]} " . $val; } @@ -3540,8 +3541,7 @@ public function filterStat(&$statistics) { isset($field['options']) && is_array($field['options']) && !empty($field['options']) ) { - $value = ($pair[$op] ?? '') . " " . - CRM_Utils_Array::value($val, $field['options'], $val); + $value = ($pair[$op] ?? '') . ' ' . ($field['options'][$val] ?? $val); } elseif ($val || $val == '0') { $value = ($pair[$op] ?? '') . " " . $val; @@ -3649,8 +3649,8 @@ public function getTemplateFileName() { public function compileContent() { $templateFile = $this->getHookedTemplateFileName(); return ($this->_formValues['report_header'] ?? '') . - CRM_Core_Form::$_template->fetch($templateFile) . - CRM_Utils_Array::value('report_footer', $this->_formValues); + CRM_Core_Form::$_template->fetch($templateFile) . + ($this->_formValues['report_footer'] ?? ''); } /** @@ -5038,7 +5038,7 @@ public function getBasicContactFilters($defaults = []) { 'is_deceased' => [ 'title' => ts('Deceased'), 'type' => CRM_Utils_Type::T_BOOLEAN, - 'default' => CRM_Utils_Array::value('deceased', $defaults, 0), + 'default' => $defaults['deceased'] ?? 0, ], 'do_not_email' => [ 'title' => ts('Do not email'), diff --git a/CRM/Report/Form/Campaign/SurveyDetails.php b/CRM/Report/Form/Campaign/SurveyDetails.php index 0f8cc4fc343f..fe56fbdc8053 100644 --- a/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/CRM/Report/Form/Campaign/SurveyDetails.php @@ -318,9 +318,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } @@ -357,11 +357,11 @@ public function where() { public function compileContent() { $coverSheet = $this->_surveyCoverSheet() . - "
"; + "
"; $templateFile = $this->getHookedTemplateFileName(); return $coverSheet . CRM_Core_Form::$_template->fetch($templateFile) . - CRM_Utils_Array::value('report_footer', $this->_formValues); + ($this->_formValues['report_footer'] ?? ''); } /** diff --git a/CRM/Report/Form/Case/Demographics.php b/CRM/Report/Form/Case/Demographics.php index bba34f581024..0ef45be865c3 100644 --- a/CRM/Report/Form/Case/Demographics.php +++ b/CRM/Report/Form/Case/Demographics.php @@ -329,9 +329,9 @@ public function where() { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Case/Detail.php b/CRM/Report/Form/Case/Detail.php index f6307b165609..bc90feede728 100644 --- a/CRM/Report/Form/Case/Detail.php +++ b/CRM/Report/Form/Case/Detail.php @@ -449,8 +449,8 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, CRM_Utils_Array::value("{$fieldName}_max", $this->_params) ); } diff --git a/CRM/Report/Form/Case/TimeSpent.php b/CRM/Report/Form/Case/TimeSpent.php index 432bf8d7061b..fb929b7a04da 100644 --- a/CRM/Report/Form/Case/TimeSpent.php +++ b/CRM/Report/Form/Case/TimeSpent.php @@ -262,9 +262,9 @@ public function where() { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Contact/CurrentEmployer.php b/CRM/Report/Form/Contact/CurrentEmployer.php index be2d0ef48cb2..d04f9b9a0887 100644 --- a/CRM/Report/Form/Contact/CurrentEmployer.php +++ b/CRM/Report/Form/Contact/CurrentEmployer.php @@ -249,9 +249,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Contact/Detail.php b/CRM/Report/Form/Contact/Detail.php index ac71cce24596..e1348f6c31ec 100644 --- a/CRM/Report/Form/Contact/Detail.php +++ b/CRM/Report/Form/Contact/Detail.php @@ -606,9 +606,9 @@ public function where(): void { $op = $this->_params["{$fieldName}_op"] ?? NULL; $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } if (!empty($clause)) { diff --git a/CRM/Report/Form/Contact/Log.php b/CRM/Report/Form/Contact/Log.php index 65589629d73f..652b3ad6a066 100644 --- a/CRM/Report/Form/Contact/Log.php +++ b/CRM/Report/Form/Contact/Log.php @@ -194,9 +194,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Contact/Relationship.php b/CRM/Report/Form/Contact/Relationship.php index 4cc4512c716d..62240a6010d2 100644 --- a/CRM/Report/Form/Contact/Relationship.php +++ b/CRM/Report/Form/Contact/Relationship.php @@ -485,8 +485,8 @@ public function where() { $clause = $this->whereClause($field, $op, $contactTypes, - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } @@ -496,8 +496,8 @@ public function where() { $subTypeClause = $this->whereClause($field, $op, $contactSubTypes, - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); if ($clause) { $clause = '(' . $clause . ' OR ' . $subTypeClause . ')'; @@ -514,9 +514,9 @@ public function where() { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Contribute/History.php b/CRM/Report/Form/Contribute/History.php index fb2141aa221f..658db8e0ffeb 100644 --- a/CRM/Report/Form/Contribute/History.php +++ b/CRM/Report/Form/Contribute/History.php @@ -424,9 +424,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } @@ -661,7 +661,7 @@ public function buildRows($sql, &$rows) { $total = []; $total['civicrm_contact_sort_name'] = ts('Total'); foreach ($summaryYears as $year) { - $total[$year] = CRM_Utils_Array::value($year, $primaryRow, 0); + $total[$year] = $primaryRow[$year] ?? 0; } $relatedContact = FALSE; @@ -673,7 +673,7 @@ public function buildRows($sql, &$rows) { $relatedContact = TRUE; $relatedRow = $relatedContributions[$relcid]; foreach ($summaryYears as $year) { - $total[$year] += CRM_Utils_Array::value($year, $relatedRow, 0); + $total[$year] += $relatedRow[$year] ?? 0; } foreach (array_keys($this->_relationshipColumns) as $col) { diff --git a/CRM/Report/Form/Contribute/HouseholdSummary.php b/CRM/Report/Form/Contribute/HouseholdSummary.php index 474ce68efcfb..4003b58cee10 100644 --- a/CRM/Report/Form/Contribute/HouseholdSummary.php +++ b/CRM/Report/Form/Contribute/HouseholdSummary.php @@ -273,9 +273,9 @@ public function where() { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Contribute/Lybunt.php b/CRM/Report/Form/Contribute/Lybunt.php index a8ec85026199..ee3c8d808ea9 100644 --- a/CRM/Report/Form/Contribute/Lybunt.php +++ b/CRM/Report/Form/Contribute/Lybunt.php @@ -644,9 +644,9 @@ public function buildChart(&$rows) { foreach ($rows as $key => $row) { // The final row contains the totals so we don't need to include it here. if (!empty($row['civicrm_contribution_contact_id'])) { - $display['life_time'] = CRM_Utils_Array::value('life_time', $display) + + $display['life_time'] = ($display['life_time'] ?? 0) + $row['civicrm_contribution_civicrm_life_time_total']; - $display[$previous_year] = CRM_Utils_Array::value($previous_year, $display) + $row['civicrm_contribution_last_year_total_amount']; + $display[$previous_year] = ($display[$previous_year] ?? 0) + $row['civicrm_contribution_last_year_total_amount']; } } diff --git a/CRM/Report/Form/Contribute/OrganizationSummary.php b/CRM/Report/Form/Contribute/OrganizationSummary.php index 109eb68841b2..ad54d42e08ca 100644 --- a/CRM/Report/Form/Contribute/OrganizationSummary.php +++ b/CRM/Report/Form/Contribute/OrganizationSummary.php @@ -291,9 +291,9 @@ public function where() { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Contribute/PCP.php b/CRM/Report/Form/Contribute/PCP.php index f3effc38a379..ba48655fa0fb 100644 --- a/CRM/Report/Form/Contribute/PCP.php +++ b/CRM/Report/Form/Contribute/PCP.php @@ -259,9 +259,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Contribute/Repeat.php b/CRM/Report/Form/Contribute/Repeat.php index f5e33a14ef45..ea83b16e7da6 100644 --- a/CRM/Report/Form/Contribute/Repeat.php +++ b/CRM/Report/Form/Contribute/Repeat.php @@ -407,9 +407,9 @@ public function whereContribution($replaceAliasWith = 'contribution1') { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } @@ -464,9 +464,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } if (!empty($clause)) { @@ -877,15 +877,15 @@ public function postProcess() { // hack to fix title list($from1, $to1) = $this->getFromTo(CRM_Utils_Array::value("receive_date1_relative", $this->_params), - CRM_Utils_Array::value("receive_date1_from", $this->_params), - CRM_Utils_Array::value("receive_date1_to", $this->_params) + $this->_params["receive_date1_from"] ?? NULL, + $this->_params["receive_date1_to"] ?? NULL ); $from1 = CRM_Utils_Date::customFormat($from1, NULL, ['d']); $to1 = CRM_Utils_Date::customFormat($to1, NULL, ['d']); list($from2, $to2) = $this->getFromTo(CRM_Utils_Array::value("receive_date2_relative", $this->_params), - CRM_Utils_Array::value("receive_date2_from", $this->_params), - CRM_Utils_Array::value("receive_date2_to", $this->_params) + $this->_params["receive_date2_from"] ?? NULL, + $this->_params["receive_date2_to"] ?? NULL ); $from2 = CRM_Utils_Date::customFormat($from2, NULL, ['d']); $to2 = CRM_Utils_Date::customFormat($to2, NULL, ['d']); @@ -914,13 +914,13 @@ public function postProcess() { * Rows generated by SQL, with an array for each row. */ public function alterDisplay(&$rows) { - list($from1, $to1) = $this->getFromTo(CRM_Utils_Array::value("receive_date1_relative", $this->_params), - CRM_Utils_Array::value("receive_date1_from", $this->_params), - CRM_Utils_Array::value("receive_date1_to", $this->_params) + [$from1, $to1] = $this->getFromTo(CRM_Utils_Array::value("receive_date1_relative", $this->_params), + $this->_params["receive_date1_from"] ?? NULL, + $this->_params["receive_date1_to"] ?? NULL ); - list($from2, $to2) = $this->getFromTo(CRM_Utils_Array::value("receive_date2_relative", $this->_params), - CRM_Utils_Array::value("receive_date2_from", $this->_params), - CRM_Utils_Array::value("receive_date2_to", $this->_params) + [$from2, $to2] = $this->getFromTo(CRM_Utils_Array::value("receive_date2_relative", $this->_params), + $this->_params["receive_date2_from"] ?? NULL, + $this->_params["receive_date2_to"] ?? NULL ); $dateUrl = ""; diff --git a/CRM/Report/Form/Contribute/SoftCredit.php b/CRM/Report/Form/Contribute/SoftCredit.php index 3def8e31888e..7fa7cee8574d 100644 --- a/CRM/Report/Form/Contribute/SoftCredit.php +++ b/CRM/Report/Form/Contribute/SoftCredit.php @@ -308,11 +308,7 @@ public function __construct() { parent::__construct(); } - public function preProcess() { - parent::preProcess(); - } - - public function select() { + public function select(): void { $select = []; $this->_columnHeaders = []; foreach ($this->_columns as $tableName => $table) { @@ -376,24 +372,12 @@ public function select() { } } } - $this->selectClause = $select; + $this->_selectClauses = $select; $this->_select = 'SELECT ' . implode(', ', $select) . ' '; } - /** - * @param array $fields - * @param array $files - * @param CRM_Core_Form $self - * - * @return array - */ - public static function formRule($fields, $files, $self) { - $errors = $grouping = []; - return $errors; - } - - public function from() { + public function from(): void { $alias_constituent = 'constituentname'; $alias_creditor = 'contact_civireport'; $this->_from = " @@ -457,7 +441,7 @@ public function from() { public function groupBy() { $this->_rollup = 'WITH ROLLUP'; - $this->_select = CRM_Contact_BAO_Query::appendAnyValueToSelect($this->selectClause, ["{$this->_aliases['civicrm_contribution_soft']}.contact_id", "constituentname.id"]); + $this->_select = CRM_Contact_BAO_Query::appendAnyValueToSelect($this->_selectClauses, ["{$this->_aliases['civicrm_contribution_soft']}.contact_id", "constituentname.id"]); $this->_groupBy = " GROUP BY {$this->_aliases['civicrm_contribution_soft']}.contact_id, constituentname.id {$this->_rollup}"; } diff --git a/CRM/Report/Form/Contribute/Summary.php b/CRM/Report/Form/Contribute/Summary.php index 474c4e21da34..32b51586568d 100644 --- a/CRM/Report/Form/Contribute/Summary.php +++ b/CRM/Report/Form/Contribute/Summary.php @@ -58,6 +58,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { * Class constructor. */ public function __construct() { + $batches = CRM_Batch_BAO_Batch::getBatches(); $this->_columns = [ 'civicrm_contact' => [ 'dao' => 'CRM_Contact_DAO_Contact', @@ -155,12 +156,6 @@ public function __construct() { 'default' => [1], 'type' => CRM_Utils_Type::T_INT, ], - 'contribution_page_id' => [ - 'title' => ts('Contribution Page'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Contribute_PseudoConstant::contributionPage(), - 'type' => CRM_Utils_Type::T_INT, - ], 'currency' => [ 'title' => ts('Currency'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, @@ -276,7 +271,7 @@ public function __construct() { 'batch_id' => [ 'title' => ts('Batch Title'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Batch_BAO_Batch::getBatches(), + 'options' => $batches, 'type' => CRM_Utils_Type::T_INT, ], ], @@ -342,6 +337,9 @@ public function __construct() { $this->addCampaignFields('civicrm_contribution', TRUE); + if (!$batches) { + unset($this->_columns['civicrm_batch']); + } // Add charts support $this->_charts = [ '' => ts('Tabular'), @@ -383,7 +381,7 @@ public function select() { case 'FISCALYEAR': $config = CRM_Core_Config::singleton(); $fy = $config->fiscalYearStart; - $fiscal = self::fiscalYearOffset($field['dbAlias']); + $fiscal = $this->fiscalYearOffset($field['dbAlias']); $select[] = "DATE_ADD(MAKEDATE({$fiscal}, 1), INTERVAL ({$fy['M']})-1 MONTH) AS {$tableName}_{$fieldName}_start"; $select[] = "{$fiscal} AS {$tableName}_{$fieldName}_subtotal"; @@ -750,7 +748,7 @@ public function statistics(&$rows) { foreach ($currencies as $currency) { $softTotalAmount[] = CRM_Utils_Money::format($currSoftAmount[$currency], $currency) . - " (" . $currSoftCount[$currency] . ")"; + ' (' . $currSoftCount[$currency] . ')'; $softAverage[] = CRM_Utils_Money::format(($currSoftAverage[$currency] / $averageSoftCount[$currency]), $currency); } } diff --git a/CRM/Report/Form/Contribute/Sybunt.php b/CRM/Report/Form/Contribute/Sybunt.php index ed9a2080a1c3..318e007cacc3 100644 --- a/CRM/Report/Form/Contribute/Sybunt.php +++ b/CRM/Report/Form/Contribute/Sybunt.php @@ -370,9 +370,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); if (($fieldName == 'contribution_status_id' || $fieldName == 'financial_type_id') && !empty($clause) @@ -526,13 +526,13 @@ public function buildChart(&$rows) { foreach ($rows as $key => $row) { $display["upto_{$upto}"] - = CRM_Utils_Array::value("upto_{$upto}", $display) + CRM_Utils_Array::value("civicrm_upto_{$upto}", $row); + = ($display["upto_{$upto}"] ?? 0) + ($row["civicrm_upto_{$upto}"] ?? 0); $display[$previous_year] - = CRM_Utils_Array::value($previous_year, $display) + CRM_Utils_Array::value($previous_year, $row); + = ($display[$previous_year] ?? 0) + ($row[$previous_year] ?? 0); $display[$previous_two_year] - = CRM_Utils_Array::value($previous_two_year, $display) + CRM_Utils_Array::value($previous_two_year, $row); + = ($display[$previous_two_year] ?? 0) + ($row[$previous_two_year] ?? 0); $display[$previous_three_year] - = CRM_Utils_Array::value($previous_three_year, $display) + CRM_Utils_Array::value($previous_three_year, $row); + = ($display[$previous_three_year] ?? 0) + ($row[$previous_three_year] ?? 0); } $graphRows['value'] = $display; diff --git a/CRM/Report/Form/Contribute/TopDonor.php b/CRM/Report/Form/Contribute/TopDonor.php index 0dcff4a211c2..6d2f7beb754a 100644 --- a/CRM/Report/Form/Contribute/TopDonor.php +++ b/CRM/Report/Form/Contribute/TopDonor.php @@ -266,9 +266,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Event/IncomeCountSummary.php b/CRM/Report/Form/Event/IncomeCountSummary.php index e42e0036fa1c..d0865aa4eae1 100644 --- a/CRM/Report/Form/Event/IncomeCountSummary.php +++ b/CRM/Report/Form/Event/IncomeCountSummary.php @@ -218,9 +218,9 @@ public function where(): void { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Event/Summary.php b/CRM/Report/Form/Event/Summary.php index ca86340dcd82..c11d4935864f 100644 --- a/CRM/Report/Form/Event/Summary.php +++ b/CRM/Report/Form/Event/Summary.php @@ -132,50 +132,48 @@ public function select() { $this->_select = 'SELECT ' . implode(', ', $select); } - public function from() { + public function from(): void { $this->_from = " FROM civicrm_event {$this->_aliases['civicrm_event']} "; } - public function where() { + public function where(): void { $clauses = []; - $this->_participantWhere = ""; - foreach ($this->_columns as $tableName => $table) { + foreach ($this->_columns as $table) { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { - $clause = NULL; if (($field['type'] ?? 0) & CRM_Utils_Type::T_DATE) { $relative = $this->_params["{$fieldName}_relative"] ?? NULL; $from = $this->_params["{$fieldName}_from"] ?? NULL; $to = $this->_params["{$fieldName}_to"] ?? NULL; if ($relative || $from || $to) { - $clause = $this->dateClause($field['name'], $relative, $from, $to, $field['type']); + $clauses[] = $this->dateClause($field['name'], $relative, $from, $to, $field['type']); } } else { $op = $this->_params["{$fieldName}_op"] ?? NULL; if ($op) { - $clause = $this->whereClause($field, + $clauses[] = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL, ); } } - if (!empty($this->_params['id_value'])) { - $idValue = is_array($this->_params['id_value']) ? implode(',', $this->_params['id_value']) : $this->_params['id_value']; - $this->_participantWhere = " AND civicrm_participant.event_id IN ( $idValue ) "; - } - - if (!empty($clause)) { - $clauses[] = $clause; - } } } } $clauses[] = "{$this->_aliases['civicrm_event']}.is_template = 0"; - $this->_where = 'WHERE ' . implode(' AND ', $clauses); + $this->_where = 'WHERE ' . implode(' AND ', array_filter($clauses)); + } + + public function getEventFilter(): string { + $eventID = array_filter((array) $this->_params['id_value']); + if (empty($eventID)) { + return ''; + } + return ' AND civicrm_participant.event_id IN ( ' . implode(',', $eventID) . ') '; } public function groupBy() { @@ -192,7 +190,7 @@ public function participantInfo() { $statusType1 = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 1'); $statusType2 = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 0'); - $sql = " + $sql = ' SELECT civicrm_participant.event_id AS event_id, civicrm_participant.status_id AS statusId, COUNT( civicrm_participant.id ) AS participant, @@ -202,11 +200,11 @@ public function participantInfo() { FROM civicrm_participant WHERE civicrm_participant.is_test = 0 - $this->_participantWhere + ' . $this->getEventFilter() . ' GROUP BY civicrm_participant.event_id, civicrm_participant.status_id, - civicrm_participant.fee_currency"; + civicrm_participant.fee_currency'; $info = CRM_Core_DAO::executeQuery($sql); $participant_data = $participant_info = $currency = []; @@ -306,8 +304,8 @@ public function postProcess() { while ($dao->fetch()) { $row = []; foreach ($this->_columnHeaders as $key => $value) { - if (($key == 'civicrm_event_start_date') || - ($key == 'civicrm_event_end_date') + if (($key === 'civicrm_event_start_date') || + ($key === 'civicrm_event_end_date') ) { //get event start date and end date in custom datetime format $row[$key] = CRM_Utils_Date::customFormat($dao->$key); diff --git a/CRM/Report/Form/Instance.php b/CRM/Report/Form/Instance.php index ecd39427156b..fe77273cfcae 100644 --- a/CRM/Report/Form/Instance.php +++ b/CRM/Report/Form/Instance.php @@ -318,7 +318,7 @@ public static function postProcess(&$form, $redirect = TRUE) { // Delete navigation if exists. $navId = CRM_Core_DAO::getFieldValue('CRM_Report_DAO_ReportInstance', $instanceID, 'navigation_id', 'id'); if ($navId) { - CRM_Core_BAO_Navigation::processDelete($navId); + CRM_Core_BAO_Navigation::deleteRecord(['id' => $navId]); CRM_Core_BAO_Navigation::resetNavigation(); } } diff --git a/CRM/Report/Form/Mailing/Bounce.php b/CRM/Report/Form/Mailing/Bounce.php index ebe9d1a84644..67bd05b1adc9 100644 --- a/CRM/Report/Form/Mailing/Bounce.php +++ b/CRM/Report/Form/Mailing/Bounce.php @@ -349,9 +349,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } diff --git a/CRM/Report/Form/Mailing/Summary.php b/CRM/Report/Form/Mailing/Summary.php index d2e4e61942a3..7125920631a5 100644 --- a/CRM/Report/Form/Mailing/Summary.php +++ b/CRM/Report/Form/Mailing/Summary.php @@ -436,9 +436,9 @@ public function where() { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Member/Lapse.php b/CRM/Report/Form/Member/Lapse.php index 236c4cd30987..d2443dd7e3b6 100644 --- a/CRM/Report/Form/Member/Lapse.php +++ b/CRM/Report/Form/Member/Lapse.php @@ -232,9 +232,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Membership/Summary.php b/CRM/Report/Form/Membership/Summary.php index 4ba26fb9d8ef..68fc16695cf5 100644 --- a/CRM/Report/Form/Membership/Summary.php +++ b/CRM/Report/Form/Membership/Summary.php @@ -197,9 +197,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Form/Walklist/Walklist.php b/CRM/Report/Form/Walklist/Walklist.php index 14b40773b37a..de15f85827c2 100644 --- a/CRM/Report/Form/Walklist/Walklist.php +++ b/CRM/Report/Form/Walklist/Walklist.php @@ -130,9 +130,9 @@ public function where() { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/CRM/Report/Page/Options.php b/CRM/Report/Page/Options.php index a82c931d7cf9..4fb9d81b1361 100644 --- a/CRM/Report/Page/Options.php +++ b/CRM/Report/Page/Options.php @@ -94,22 +94,26 @@ public function &links() { 'url' => 'civicrm/admin/report/register/' . self::$_gName, 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit %1', [1 => self::$_gLabel]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable %1', [1 => self::$_gLabel]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable %1', [1 => self::$_gLabel]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/report/register/' . self::$_gName, 'qs' => 'action=delete&id=%%id%%&reset=1', 'title' => ts('Delete %1 Type', [1 => self::$_gLabel]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/CRM/SMS/Form/Provider.php b/CRM/SMS/Form/Provider.php index 1f5e2313e125..602f0e68475d 100644 --- a/CRM/SMS/Form/Provider.php +++ b/CRM/SMS/Form/Provider.php @@ -157,8 +157,8 @@ public function postProcess() { } $recData = $values = $this->controller->exportValues($this->_name); - $recData['is_active'] = CRM_Utils_Array::value('is_active', $recData, 0); - $recData['is_default'] = CRM_Utils_Array::value('is_default', $recData, 0); + $recData['is_active'] = $recData['is_active'] ?? 0; + $recData['is_default'] = $recData['is_default'] ?? 0; if ($this->_action && (CRM_Core_Action::UPDATE || CRM_Core_Action::ADD)) { if ($this->_id) { diff --git a/CRM/Tag/Form/Edit.php b/CRM/Tag/Form/Edit.php index 09d38c00f06f..6fa36b90f284 100644 --- a/CRM/Tag/Form/Edit.php +++ b/CRM/Tag/Form/Edit.php @@ -102,13 +102,9 @@ public function buildQuickForm() { $this->applyFilter('__ALL__', 'trim'); - $this->add('text', 'name', ts('Name'), - CRM_Core_DAO::getAttribute('CRM_Core_DAO_Tag', 'name'), TRUE + $this->add('text', 'label', ts('Label'), + CRM_Core_DAO::getAttribute('CRM_Core_DAO_Tag', 'label'), TRUE ); - $this->addRule('name', ts('Name already exists in Database.'), 'objectExists', [ - 'CRM_Core_DAO_Tag', - $this->_id, - ]); $this->add('text', 'description', ts('Description'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_Tag', 'description') @@ -142,7 +138,7 @@ public function setDefaultValues() { if (empty($this->_id) && $cloneFrom) { $params = ['id' => $cloneFrom]; CRM_Core_BAO_Tag::retrieve($params, $this->_values); - $this->_values['name'] .= ' (' . ts('copy') . ')'; + $this->_values['label'] .= ' (' . ts('copy') . ')'; if (!empty($this->_values['is_reserved']) && !CRM_Core_Permission::check('administer reserved tags')) { $this->_values['is_reserved'] = 0; } @@ -171,10 +167,10 @@ public function postProcess() { } if (count($this->_id) == 1 && $deleted == 1) { if ($tag['is_tagset']) { - CRM_Core_Session::setStatus(ts("The tag set '%1' has been deleted.", [1 => $tag['name']]), ts('Deleted'), 'success'); + CRM_Core_Session::setStatus(ts("The tag set '%1' has been deleted.", [1 => $tag['label']]), ts('Deleted'), 'success'); } else { - CRM_Core_Session::setStatus(ts("The tag '%1' has been deleted.", [1 => $tag['name']]), ts('Deleted'), 'success'); + CRM_Core_Session::setStatus(ts("The tag '%1' has been deleted.", [1 => $tag['label']]), ts('Deleted'), 'success'); } } else { @@ -211,7 +207,7 @@ public function postProcess() { $params['is_selectable'] = 0; } $tag = CRM_Core_BAO_Tag::add($params); - CRM_Core_Session::setStatus(ts("The tag '%1' has been saved.", [1 => $tag->name]), ts('Saved'), 'success'); + CRM_Core_Session::setStatus(ts("The tag '%1' has been saved.", [1 => $tag->label]), ts('Saved'), 'success'); $this->ajaxResponse['tag'] = $tag->toArray(); } CRM_Core_Session::singleton()->pushUserContext(CRM_Utils_System::url('civicrm/tag')); diff --git a/CRM/Tag/Page/Tag.php b/CRM/Tag/Page/Tag.php index 772439b7c4e1..6d4a26c69431 100644 --- a/CRM/Tag/Page/Tag.php +++ b/CRM/Tag/Page/Tag.php @@ -40,7 +40,7 @@ public function run() { } $result = civicrm_api3('Tag', 'get', [ - 'return' => ["name", "used_for", "description", "created_id.display_name", "created_date", "is_reserved"], + 'return' => ["name", "label", "used_for", "description", "created_id.display_name", "created_date", "is_reserved"], 'is_tagset' => 1, 'options' => ['limit' => 0], ]); diff --git a/CRM/UF/Form/Field.php b/CRM/UF/Form/Field.php index 5e9e87a22987..053e61c13a26 100644 --- a/CRM/UF/Form/Field.php +++ b/CRM/UF/Form/Field.php @@ -725,11 +725,11 @@ public static function formRulePrimaryCheck($fields, $profileFieldName, $groupFi * list of errors to be posted back to the form */ public static function formRule($fields, $files, $self) { - $is_required = CRM_Utils_Array::value('is_required', $fields, FALSE); - $is_registration = CRM_Utils_Array::value('is_registration', $fields, FALSE); - $is_view = CRM_Utils_Array::value('is_view', $fields, FALSE); - $in_selector = CRM_Utils_Array::value('in_selector', $fields, FALSE); - $is_active = CRM_Utils_Array::value('is_active', $fields, FALSE); + $is_required = $fields['is_required'] ?? FALSE; + $is_registration = $fields['is_registration'] ?? FALSE; + $is_view = $fields['is_view'] ?? FALSE; + $in_selector = $fields['in_selector'] ?? FALSE; + $is_active = $fields['is_active'] ?? FALSE; $errors = []; if ($is_view && $is_registration) { diff --git a/CRM/Upgrade/Form.php b/CRM/Upgrade/Form.php index 87ad4c5cc31e..27cfa35e24be 100644 --- a/CRM/Upgrade/Form.php +++ b/CRM/Upgrade/Form.php @@ -141,34 +141,6 @@ public function checkVersionRelease($version, $release) { return ($versionParts[2] == $release); } - /** - * @param $constraints - * - * @return array - */ - public function checkSQLConstraints(&$constraints) { - $pass = $fail = 0; - foreach ($constraints as $constraint) { - if ($this->checkSQLConstraint($constraint)) { - $pass++; - } - else { - $fail++; - } - return [$pass, $fail]; - } - } - - /** - * @param $constraint - * - * @return bool - */ - public function checkSQLConstraint($constraint) { - // check constraint here - return TRUE; - } - /** * @param string $fileName * @param bool $isQueryString diff --git a/CRM/Upgrade/Incremental/MessageTemplates.php b/CRM/Upgrade/Incremental/MessageTemplates.php index 58e605a1e9dd..22ae1f1098a7 100644 --- a/CRM/Upgrade/Incremental/MessageTemplates.php +++ b/CRM/Upgrade/Incremental/MessageTemplates.php @@ -359,6 +359,15 @@ protected function getTemplateUpdates() { ['name' => 'petition_sign', 'type' => 'subject'], ], ], + [ + 'version' => '5.68.alpha1', + 'upgrade_descriptor' => ts('Significant changes to the template and available variables. Text version is discontinued'), + 'templates' => [ + ['name' => 'event_offline_receipt', 'type' => 'text'], + ['name' => 'event_offline_receipt', 'type' => 'html'], + ['name' => 'event_offline_receipt', 'type' => 'subject'], + ], + ], ]; } @@ -572,7 +581,7 @@ public static function updateReservedAndMaybeDefaultTemplates(CRM_Queue_TaskCont continue; } $content = file_get_contents($filePath); - if ($content) { + if ($content !== FALSE) { CRM_Core_DAO::executeQuery( "UPDATE civicrm_msg_template SET msg_{$type} = %1 WHERE id = %2", [ 1 => [$content, 'String'], diff --git a/CRM/Upgrade/Incremental/php/FiveFour.php b/CRM/Upgrade/Incremental/php/FiveFour.php index b327366a14ec..07ce677392de 100644 --- a/CRM/Upgrade/Incremental/php/FiveFour.php +++ b/CRM/Upgrade/Incremental/php/FiveFour.php @@ -69,7 +69,7 @@ public static function addActivityDefaultAssigneeOptions() { 'option_group_id' => 'activity_default_assignee', 'name' => $option['name'], 'label' => $option['label'], - 'is_default' => CRM_Utils_Array::value('is_default', $option, 0), + 'is_default' => $option['is_default'] ?? 0, 'is_active' => TRUE, ]); } diff --git a/CRM/Upgrade/Incremental/php/FiveSixtyEight.php b/CRM/Upgrade/Incremental/php/FiveSixtyEight.php new file mode 100644 index 000000000000..c1bedfa946ad --- /dev/null +++ b/CRM/Upgrade/Incremental/php/FiveSixtyEight.php @@ -0,0 +1,44 @@ +addTask('Add Tag.label field', 'addColumn', 'civicrm_tag', 'label', "varchar(64) NOT NULL COMMENT 'User-facing tag name' AFTER `name`"); + $this->addTask('Update Tag.name field', 'alterColumn', 'civicrm_tag', 'name', "varchar(64) NOT NULL COMMENT 'Unique machine name'"); + $this->addTask('Update Tag.created_date field', 'alterColumn', 'civicrm_tag', 'created_date', "datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time that tag was created.'"); + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + $this->addTask('Update civicrm_managed.entity_id', 'alterColumn', 'civicrm_managed', 'entity_id', "int unsigned COMMENT 'Soft foreign key to the referenced item.'"); + $this->addTask('Update civicrm_managed.module', 'alterColumn', 'civicrm_managed', 'module', "varchar(255) NOT NULL COMMENT 'Name of the module which declared this object (soft FK to civicrm_extension.full_name)'"); + $this->addTask('Update civicrm_managed.name', 'alterColumn', 'civicrm_managed', 'name', "varchar(255) NOT NULL COMMENT 'Symbolic name used by the module to identify the object'"); + $this->addTask('Update civicrm_managed.cleanup', 'alterColumn', 'civicrm_managed', 'cleanup', "varchar(16) NOT NULL DEFAULT 'always' COMMENT 'Policy on when to cleanup entity (always, never, unused)'"); + $this->addTask('Update civicrm_acl.is_active', 'alterColumn', 'civicrm_acl', 'is_active', "tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?'"); + $this->addTask('Update civicrm_dashboard_contact.is_active', 'alterColumn', 'civicrm_dashboard_contact', 'is_active', "tinyint NOT NULL DEFAULT 0 COMMENT 'Is this widget active?'"); + } + +} diff --git a/CRM/Upgrade/Incremental/php/FiveSixtySeven.php b/CRM/Upgrade/Incremental/php/FiveSixtySeven.php index 4ed4c2b2e301..1f4941cf7776 100644 --- a/CRM/Upgrade/Incremental/php/FiveSixtySeven.php +++ b/CRM/Upgrade/Incremental/php/FiveSixtySeven.php @@ -21,6 +21,8 @@ */ class CRM_Upgrade_Incremental_php_FiveSixtySeven extends CRM_Upgrade_Incremental_Base { + const MAILING_BATCH_SIZE = 500000; + public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { parent::setPreUpgradeMessage($preUpgradeMessage, $rev, $currentVer); if ($rev === '5.67.alpha1') { @@ -54,7 +56,41 @@ public function upgrade_5_67_alpha1($rev): void { $this->addTask('Add cache_fill_took column to Group table', 'addColumn', 'civicrm_group', 'cache_fill_took', 'DOUBLE DEFAULT NULL COMMENT "Seconds taken to fill smart group cache, not always related to cache_date"', FALSE); - $this->addTask('Update civicrm_mailing_event_queue to permit deleting records from civicrm_mailing_job', 'updateMailingEventQueueTable', 'updateMailingEventQueueTable'); + $this->addTask('Update civicrm_mailing_event_queue to permit deleting records from civicrm_mailing_job', 'updateMailingEventQueueTable'); + $this->addTask('Update CiviMail menus labels', 'updateMailingMenuLabels'); + } + + /** + * Upgrade step; adds tasks including 'runSql'. + * + * @param string $rev + * The version number matching this function name + */ + public function upgrade_5_67_beta2($rev): void { + // Repeat step from 5.66 because it was added late in the release-cycle + $this->addTask('Make ActionSchedule.name required', 'alterColumn', 'civicrm_action_schedule', 'name', "varchar(128) NOT NULL COMMENT 'Name of the scheduled action'"); + $this->addTask('Make Discount.entity_table required', 'alterColumn', 'civicrm_discount', 'entity_table', "varchar(64) NOT NULL COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event'"); + } + + /** + * Some time ago, the labels for Mailing menu items were simplified for new + * installs. Now that the old strings have been removed from Transifex, it + * breaks translations, so we force the update, but only if the label was not + * customized (if name=label). + */ + public static function updateMailingMenuLabels(CRM_Queue_TaskContext $ctx): bool { + $changes = [ + 'Draft and Unscheduled Mailings' => 'Draft Mailings', + 'Scheduled and Sent Mailings' => 'Sent Mailings', + ]; + foreach ($changes as $old => $new) { + CRM_Core_DAO::executeQuery('UPDATE civicrm_navigation SET label = %1 WHERE name = %2 AND label = %3', [ + 1 => [$new, 'String'], + 2 => [$old, 'String'], + 3 => [$old, 'String'], + ]); + } + return TRUE; } /** @@ -85,6 +121,16 @@ public static function updateMailingEventQueueTable(CRM_Queue_TaskContext $ctx): FOREIGN KEY (`job_id`) REFERENCES `civicrm_mailing_job`(`id`) ON DELETE SET NULL ', [], FALSE, FALSE, FALSE, FALSE); + + [$minId, $maxId] = CRM_Core_DAO::executeQuery("SELECT coalesce(min(id),0), coalesce(max(id),0) + FROM civicrm_mailing_event_queue ")->getDatabaseResult()->fetchRow(); + for ($startId = $minId; $startId <= $maxId; $startId += self::MAILING_BATCH_SIZE) { + $endId = min($maxId, $startId + self::MAILING_BATCH_SIZE - 1); + $task = new CRM_Queue_Task([static::class, 'fillMailingEvents'], + [$startId, $endId], + sprintf('Backfill civicrm_mailing_event_queue (%d => %d)', $startId, $endId)); + $ctx->queue->createItem($task, ['weight' => -1]); + } } catch (\Civi\Core\Exception\DBQueryException $e) { throw new CRM_Core_Exception( @@ -103,6 +149,20 @@ public static function updateMailingEventQueueTable(CRM_Queue_TaskContext $ctx): return TRUE; } + public static function fillMailingEvents(CRM_Queue_TaskContext $ctx, int $startId, int $endId): bool { + CRM_Core_DAO::executeQuery(' +UPDATE civicrm_mailing_event_queue q +INNER JOIN civicrm_mailing_job job ON job.id = q.job_id +SET q.mailing_id = job.mailing_id, q.is_test=job.is_test +WHERE q.id >= %1 AND q.id <= %2 AND q.mailing_id IS NULL', + [ + 1 => [$startId, 'Int'], + 2 => [$endId, 'Int'], + ] + ); + return TRUE; + } + public static function addNoteNote(CRM_Queue_TaskContext $ctx): bool { CRM_Core_BAO_OptionValue::ensureOptionValueExists([ 'option_group_id' => 'note_used_for', diff --git a/CRM/Upgrade/Incremental/php/FiveSixtySix.php b/CRM/Upgrade/Incremental/php/FiveSixtySix.php index 55c6d1df36d0..cc0bdd2853c8 100644 --- a/CRM/Upgrade/Incremental/php/FiveSixtySix.php +++ b/CRM/Upgrade/Incremental/php/FiveSixtySix.php @@ -35,12 +35,12 @@ public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NU * The version number matching this function name */ public function upgrade_5_66_alpha1($rev): void { + // Increase column length before the upgrade sql writes to it + $this->addTask('Increase ActionSchedule.name length', 'alterColumn', 'civicrm_action_schedule', 'name', "varchar(128) COMMENT 'Name of the scheduled action'"); $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + // These run after the sql file $this->addTask('Make Contribution.tax_amount required', 'alterColumn', 'civicrm_contribution', 'tax_amount', "decimal(20,2) DEFAULT 0 NOT NULL COMMENT 'Total tax amount of this contribution.'"); $this->addTask('Make LineItem.tax_amount required', 'alterColumn', 'civicrm_line_item', 'tax_amount', "decimal(20,2) DEFAULT 0 NOT NULL COMMENT 'tax of each item'"); - // These run after the sql file - $this->addTask('Make Discount.entity_table required', 'alterColumn', 'civicrm_discount', 'entity_table', "varchar(64) NOT NULL COMMENT 'Name of the action(reminder)'"); - $this->addTask('Make ActionSchedule.name required', 'alterColumn', 'civicrm_action_schedule', 'name', "varchar(64) NOT NULL COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event'"); $this->addTask(ts('Create index %1', [1 => 'civicrm_action_schedule.UI_name']), 'addIndex', 'civicrm_action_schedule', 'name', 'UI'); $this->addTask('Add fields to civicrm_mail_settings to allow more flexibility for email to activity', 'addMailSettingsFields'); $this->addTask('Move serialized contents of civicrm_survey.recontact_interval into civicrm_option_value.filter', 'migrateRecontactInterval'); diff --git a/CRM/Upgrade/Incremental/sql/5.67.alpha1.mysql.tpl b/CRM/Upgrade/Incremental/sql/5.67.alpha1.mysql.tpl index 4b47ee98b060..54afcfc924a4 100644 --- a/CRM/Upgrade/Incremental/sql/5.67.alpha1.mysql.tpl +++ b/CRM/Upgrade/Incremental/sql/5.67.alpha1.mysql.tpl @@ -5,7 +5,9 @@ UPDATE civicrm_note SET privacy = 0 WHERE privacy IS NULL; {* NULL values would be nonsensical and useless - no reason to keep them *} DELETE FROM civicrm_entity_file WHERE entity_table IS NULL; -SELECT @country_id := id from civicrm_country where name = 'India' AND iso_code = 'IN'; +{* Delete navigation links to old campaign dashboard *} +DELETE FROM `civicrm_navigation` WHERE `url` LIKE 'civicrm/campaign?reset=1%'; +SELECT @country_id := id from civicrm_country where name = 'India' AND iso_code = 'IN'; UPDATE `civicrm_state_province` SET abbreviation = 'MH' WHERE name = 'Maharashtra' AND country_id = @country_id; UPDATE `civicrm_state_province` SET abbreviation = 'CG' WHERE name = 'Chhattisgarh' AND country_id = @country_id; diff --git a/CRM/Upgrade/Incremental/sql/5.68.alpha1.mysql.tpl b/CRM/Upgrade/Incremental/sql/5.68.alpha1.mysql.tpl new file mode 100644 index 000000000000..ddfb5373fbe9 --- /dev/null +++ b/CRM/Upgrade/Incremental/sql/5.68.alpha1.mysql.tpl @@ -0,0 +1,11 @@ +{* file to handle db changes in 5.68.alpha1 during upgrade *} + +UPDATE `civicrm_acl` SET `is_active` = 0 WHERE `is_active` IS NULL; +UPDATE `civicrm_dashboard_contact` SET `is_active` = 0 WHERE `is_active` IS NULL; + +UPDATE `civicrm_tag` SET `label` = `name` WHERE `label` = ''; + +{* This column is now required. Delete any null values; a managed entity without a name is useless *} +DELETE FROM civicrm_managed WHERE name IS NULL; +{* This column is now required. Set to default value if null or invalid *} +UPDATE civicrm_managed SET cleanup = 'always' WHERE cleanup IS NULL OR cleanup NOT IN ('always', 'never', 'unused'); diff --git a/CRM/Utils/Address.php b/CRM/Utils/Address.php index 62c5b2a88faa..aa0703e518be 100644 --- a/CRM/Utils/Address.php +++ b/CRM/Utils/Address.php @@ -32,7 +32,7 @@ class CRM_Utils_Address { * The desired address format. * @param bool $microformat * If true indicates, the address to be built in hcard-microformat standard. - * @param bool $mailing + * @param bool $unused * Should ALWAYS be false. * @param string[] $tokenFields * @@ -44,24 +44,18 @@ public static function format( $fields, $format = NULL, $microformat = FALSE, - $mailing = FALSE, + $unused = FALSE, $tokenFields = NULL ) { - $mailing = FALSE; if (!$format) { $format = Civi::settings()->get('address_format'); } - - if ($mailing) { - $format = Civi::settings()->get('mailing_format'); - } - $formatted = $format; $fullPostalCode = $fields['postal_code'] ?? NULL; if (!empty($fields['postal_code_suffix'])) { - $fullPostalCode .= "-$fields[postal_code_suffix]"; + $fullPostalCode .= '-' . $fields['postal_code_suffix']; } // make sure that some of the fields do have values @@ -78,47 +72,29 @@ public static function format( } } - //CRM-16876 Display countries in all caps when in mailing mode. - if ($mailing && !empty($fields['country'])) { - if (Civi::settings()->get('hideCountryMailingLabels')) { - $domain = CRM_Core_BAO_Domain::getDomain(); - $domainLocation = CRM_Core_BAO_Location::getValues(['contact_id' => $domain->contact_id]); - $domainAddress = $domainLocation['address'][1]; - $domainCountryId = $domainAddress['country_id']; - if ($fields['country'] == CRM_Core_PseudoConstant::country($domainCountryId)) { - $fields['country'] = NULL; - } - else { - //Capitalization display on uppercase to contries with special characters - $fields['country'] = mb_convert_case($fields['country'], MB_CASE_UPPER, "UTF-8"); - } - } - else { - $fields['country'] = mb_convert_case($fields['country'], MB_CASE_UPPER, "UTF-8"); - } - } - if (!$microformat) { // replacements in case of Individual Name Format $replacements = [ 'contact.display_name' => $fields['display_name'] ?? NULL, - 'contact.individual_prefix' => $fields['individual_prefix'] ?? NULL, 'contact.formal_title' => $fields['formal_title'] ?? NULL, 'contact.first_name' => $fields['first_name'] ?? NULL, 'contact.middle_name' => $fields['middle_name'] ?? NULL, 'contact.last_name' => $fields['last_name'] ?? NULL, - 'contact.individual_suffix' => $fields['individual_suffix'] ?? NULL, + 'contact.individual_prefix' => $fields['prefix_id:label'] ?? ($fields['individual_prefix'] ?? NULL), + 'contact.prefix_id:label' => $fields['prefix_id:label'] ?? ($fields['individual_prefix'] ?? NULL), + 'contact.individual_suffix' => $fields['suffix_id:label'] ?? ($fields['individual_suffix'] ?? NULL), + 'contact.suffix_id:label' => $fields['suffix_id:label'] ?? ($fields['individual_suffix'] ?? NULL), 'contact.address_name' => $fields['address_name'] ?? NULL, 'contact.street_address' => $fields['street_address'] ?? NULL, 'contact.supplemental_address_1' => $fields['supplemental_address_1'] ?? NULL, 'contact.supplemental_address_2' => $fields['supplemental_address_2'] ?? NULL, 'contact.supplemental_address_3' => $fields['supplemental_address_3'] ?? NULL, 'contact.city' => $fields['city'] ?? NULL, - 'contact.state_province_name' => $fields['state_province_name'] ?? NULL, - 'contact.county' => $fields['county'] ?? NULL, - 'contact.state_province' => $fields['state_province'] ?? NULL, + 'contact.state_province_name' => $fields['state_province_id:label'] ?? ($fields['state_province_name'] ?? NULL), + 'contact.county' => $fields['county_id:label'] ?? ($fields['county'] ?? NULL), + 'contact.state_province' => $fields['state_province_id:label'] ?? ($fields['state_province'] ?? NULL), 'contact.postal_code' => $fullPostalCode, - 'contact.country' => $fields['country'] ?? NULL, + 'contact.country' => $fields['country_id:label'] ?? ($fields['country'] ?? NULL), 'contact.world_region' => $fields['world_region'] ?? NULL, 'contact.geo_code_1' => $fields['geo_code_1'] ?? NULL, 'contact.geo_code_2' => $fields['geo_code_2'] ?? NULL, diff --git a/CRM/Utils/Array.php b/CRM/Utils/Array.php index da71c1197120..b4aad583b6c9 100644 --- a/CRM/Utils/Array.php +++ b/CRM/Utils/Array.php @@ -43,18 +43,23 @@ public static function cast($value) { } /** - * Returns $list[$key] if such element exists, or a default value otherwise. + * Returns $list[$key] if such element exists, or $default otherwise. * - * If $list is not actually an array at all, then the default value is - * returned. We hope to deprecate this behaviour. + * If $list is not an array or ArrayAccess object, $default is returned. * + * @deprecated + * In most cases this can be replaced with + * $list[$key] ?? $default + * with the minor difference that when $list[$key] exists and is NULL, this function will always + * return NULL. * * @param string $key * Key value to look up in the array. * @param array|ArrayAccess $list * Array from which to look up a value. * @param mixed $default - * (optional) Value to return $list[$key] does not exist. + * (optional) Value to return when $list[$key] does not exist. If $default + * is not specified, NULL is used. * * @return mixed * Can return any type, since $list might contain anything. @@ -64,11 +69,8 @@ public static function value($key, $list, $default = NULL) { return array_key_exists($key, $list) ? $list[$key] : $default; } if ($list instanceof ArrayAccess) { - // ArrayAccess requires offsetExists is implemented for the equivalent to array_key_exists. return $list->offsetExists($key) ? $list[$key] : $default; } - // @todo - eliminate these from core & uncomment this line. - // CRM_Core_Error::deprecatedFunctionWarning('You have passed an invalid parameter for the "list"'); return $default; } @@ -1413,4 +1415,28 @@ public static function filterByPrefix(array &$collection, string $prefix): array return $filtered; } + /** + * Changes array keys to meet the expectations of select2.js + * + * @param array $options + * @param string $label + * @param string $id + * @return array + */ + public static function formatForSelect2(array $options, string $label = 'label', string $id = 'id'): array { + foreach ($options as &$option) { + if (isset($option[$label])) { + $option['text'] = (string) $option[$label]; + } + if (isset($option[$id])) { + $option['id'] = (string) $option[$id]; + } + if (!empty($option['children'])) { + $option['children'] = self::formatForSelect2($option['children'], $label, $id); + } + $option = array_intersect_key($option, array_flip(['id', 'text', 'children', 'color', 'icon', 'description'])); + } + return $options; + } + } diff --git a/CRM/Utils/Check/Component/Env.php b/CRM/Utils/Check/Component/Env.php index 2ac6246f6f2f..f0a88a71624a 100644 --- a/CRM/Utils/Check/Component/Env.php +++ b/CRM/Utils/Check/Component/Env.php @@ -1106,4 +1106,25 @@ public function checkPHPIntlExists() { return $messages; } + public function checkAngularModuleSettings() { + $messages = []; + $modules = Civi::container()->get('angular')->getModules(); + foreach ($modules as $name => $module) { + if (!empty($module['settings'])) { + $messages[] = new CRM_Utils_Check_Message( + __FUNCTION__ . $name, + ts('The Angular file "%1" from extension "%2" must be updated to use "settingsFactory" instead of "settings". Developer info...', [ + 1 => $name, + 2 => $module['ext'], + 3 => 'target="_blank" href="https://github.com/civicrm/civicrm-core/pull/19052"', + ]), + ts('Unsupported Angular Setting'), + \Psr\Log\LogLevel::WARNING, + 'fa-code' + ); + } + } + return $messages; + } + } diff --git a/CRM/Utils/Date.php b/CRM/Utils/Date.php index 2434fb33e06c..8fcf8690726e 100644 --- a/CRM/Utils/Date.php +++ b/CRM/Utils/Date.php @@ -280,16 +280,16 @@ function(int $monthNum) use ($intlFormatter) { * @return int */ public static function unixTime($string) { - if (empty($string)) { + if (!$string) { return 0; } $parsedDate = date_parse($string); - return mktime(CRM_Utils_Array::value('hour', $parsedDate), - CRM_Utils_Array::value('minute', $parsedDate), + return mktime($parsedDate['hour'], + $parsedDate['minute'], 59, - CRM_Utils_Array::value('month', $parsedDate), - CRM_Utils_Array::value('day', $parsedDate), - CRM_Utils_Array::value('year', $parsedDate) + $parsedDate['month'], + $parsedDate['day'], + $parsedDate['year'] ); } diff --git a/CRM/Utils/EnglishNumber.php b/CRM/Utils/EnglishNumber.php index c95bb6af21b6..37a8663ccef9 100644 --- a/CRM/Utils/EnglishNumber.php +++ b/CRM/Utils/EnglishNumber.php @@ -136,14 +136,14 @@ public static function toInt(string $english) { $strBuf = strtolower(str_replace('-', '', $english)); foreach (self::$intervalsOfTen as $num => $name) { - if (CRM_Utils_String::startsWith($strBuf, strtolower($name))) { + if (str_starts_with($strBuf, strtolower($name))) { $intBuf += 10 * $num; $strBuf = substr($strBuf, strlen($name)); break; } } foreach (array_reverse(self::$lowNumbers, TRUE) as $num => $name) { - if (CRM_Utils_String::startsWith($strBuf, strtolower($name))) { + if (str_starts_with($strBuf, strtolower($name))) { $intBuf += $num; $strBuf = substr($strBuf, strlen($name)); break; diff --git a/CRM/Utils/File.php b/CRM/Utils/File.php index 833204adbf58..e9d97505306a 100644 --- a/CRM/Utils/File.php +++ b/CRM/Utils/File.php @@ -418,22 +418,29 @@ public static function cleanFileName($name) { * Make a valid file name. * * @param string $name + * @param bool $unicode * * @return string */ - public static function makeFileName($name) { + public static function makeFileName($name, bool $unicode = FALSE) { $uniqID = md5(uniqid(rand(), TRUE)); $info = pathinfo($name); $basename = substr($info['basename'], 0, -(strlen($info['extension'] ?? '') + (($info['extension'] ?? '') == '' ? 0 : 1)) ); if (!self::isExtensionSafe($info['extension'] ?? '')) { + if ($unicode) { + return self::makeFilenameWithUnicode("{$basename}_" . ($info['extension'] ?? '') . "_{$uniqID}", '_', 240) . ".unknown"; + } // munge extension so it cannot have an embbeded dot in it // The maximum length of a filename for most filesystems is 255 chars. // We'll truncate at 240 to give some room for the extension. return CRM_Utils_String::munge("{$basename}_" . ($info['extension'] ?? '') . "_{$uniqID}", '_', 240) . ".unknown"; } else { + if ($unicode) { + return self::makeFilenameWithUnicode("{$basename}_{$uniqID}", '_', 240) . "." . ($info['extension'] ?? ''); + } return CRM_Utils_String::munge("{$basename}_{$uniqID}", '_', 240) . "." . ($info['extension'] ?? ''); } } diff --git a/CRM/Utils/Geocode/Google.php b/CRM/Utils/Geocode/Google.php index 247a54109600..abab6b313ae6 100644 --- a/CRM/Utils/Geocode/Google.php +++ b/CRM/Utils/Geocode/Google.php @@ -66,7 +66,7 @@ public static function format(&$values, $stateName = FALSE) { if (!empty($values['state_province']) || (!empty($values['state_province_id']) && $values['state_province_id'] != 'null')) { if (!empty($values['state_province_id'])) { - $stateProvince = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_StateProvince', $values['state_province_id']); + $stateProvince = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_StateProvince', $values['state_province_id']) ?? ''; } else { if (!$stateName) { @@ -74,10 +74,10 @@ public static function format(&$values, $stateName = FALSE) { $values['state_province'], 'name', 'abbreviation' - ); + ) ?? ''; } else { - $stateProvince = $values['state_province']; + $stateProvince = $values['state_province'] ?? ''; } } diff --git a/CRM/Utils/Hook.php b/CRM/Utils/Hook.php index aa30ca09548b..e96b976ce4f4 100644 --- a/CRM/Utils/Hook.php +++ b/CRM/Utils/Hook.php @@ -409,11 +409,27 @@ public static function postCommit($op, $objectName, $objectId, $objectRef = NULL * @param string $op * The type of operation being performed. * @param string $objectName - * The name of the object. + * The name of the object. This is generally a CamelCase entity (eg `Contact` or `Activity`). + * Historical exceptions: 'CRM_Core_BAO_LocationType', 'CRM_Core_BAO_MessageTemplate' * @param int $objectId * The unique identifier for the object. * @param array $links * (optional) the links array (introduced in v3.2). + * Each of the links may have properties: + * - 'name' (string): the link text + * - 'url' (string): the link URL base path (like civicrm/contact/view, and fillable from $values) + * - 'qs' (string|array): the link URL query parameters to be used by sprintf() with $values (like reset=1&cid=%%id%% when $values['id'] is the contact ID) + * - 'title' (string) (optional): the text that appears when hovering over the link + * - 'extra' (optional): additional attributes for the tag (fillable from $values) + * - 'bit' (optional): a binary number that will be filtered by $mask (sending nothing as $links['bit'] means the link will always display) + * - 'ref' (optional, recommended): a CSS class to apply to the tag. + * - 'class' (string): Optional list of CSS classes + * - 'weight' (int): Weight is used to order the links. If not set 0 will be used but e-notices could occur. This was introduced in CiviCRM 5.63 so it will not have any impact on earlier versions of CiviCRM. + * - 'accessKey' (string) (optional): HTML access key. Single letter or empty string. + * - 'icon' (string) (optional): FontAwesome class name + * + * Depending on the specific screen, some fields (e.g. `icon`) may be ignored. + * If you have any idea of a clearer rule, then please update the docs. * @param int|null $mask * (optional) the bitmask to show/hide links. * @param array $values @@ -661,7 +677,7 @@ public static function xmlMenu(&$files) { } /** - * (Experimental) This hook is called when build the menu table. + * This hook is called when building the menu table. * * @param array $items * List of records to include in menu table. @@ -1129,6 +1145,9 @@ public static function eventDiscount(&$form, &$params) { * - title: string * - callback: string|array, the function which starts the setup process. * The function is expected to return a 'url' for the config screen. + * - url: string (optional), a URL which starts the setup process. + * If omitted, then a default URL is generated. The effect of opening the URL is + * to invoke the `callback`. * @return mixed */ public static function mailSetupActions(&$setupActions) { @@ -1160,7 +1179,7 @@ public static function mailingGroups(&$form, &$groups, &$mailings) { } /** - * (Experimental) Modify the list of template-types used for CiviMail composition. + * Modify the list of template-types used for CiviMail composition. * * @param array $types * Sequentially indexed list of template types. Each type specifies: @@ -1554,7 +1573,8 @@ public static function alterLocationMergeData(&$blocksDAO, $mainId, $otherId, $m /** * Deprecated: use hook_civicrm_selectWhereClause instead. - * @deprecated + * @deprecated since 5.67 will be removed around 5.85 + * . * @param array &$noteValues */ public static function notePrivacy(&$noteValues) { @@ -1847,10 +1867,9 @@ public static function buildGroupContactCache(array $savedSearch, int $groupID, } /** - * (EXPERIMENTAL) Scan extensions for a list of auto-registered interfaces. + * Scan extensions for a list of auto-registered interfaces. * - * This hook is currently experimental. It is a means to implementing `mixin/scan-classes@1`. - * If there are no major difficulties circa 5.55, then it can be marked stable. + * @see mixin/scan-classes@1 * * @param string[] $classes * List of classes which may be of interest to the class-scanner. @@ -2653,7 +2672,7 @@ public static function alterResourceSettings(&$data) { } /** - * EXPERIMENTAL: This hook allows one to register additional Angular modules + * Register Angular modules * * @param array $angularModules * List of modules. Each module defines: @@ -2999,6 +3018,33 @@ public static function alterEntityRefParams(&$params, $formName) { ); } + /** + * Should queue processing proceed. + * + * This hook is called when a background process attempts to claim an item from + * the queue to process. A hook could alter the status from 'active' to denote + * that the server is busy & hence no item should be claimed and processed at + * this time. + * + * @param string $status + * This will be set to active. It is recommended hooks change it to 'paused' + * to prevent queue processing (although currently any value other than active + * is treated as inactive 'paused') + * @param string $queueName + * The name of the queue. Equivalent to civicrm_queue.name + * @param array $queueSpecification + * Array of information about the queue loaded from civicrm_queue. + * + * @see https://docs.civicrm.org/dev/en/latest/framework/queues/ + */ + public static function queueActive(string &$status, string $queueName, array $queueSpecification): void { + $null = NULL; + self::singleton()->invoke(['status', 'queueName', 'queueSpecification'], $status, + $queueName, $queueSpecification, $null, $null, $null, + 'civicrm_queueActive' + ); + } + /** * Fire `hook_civicrm_queueRun_{$runner}`. * diff --git a/CRM/Utils/ICalendar.php b/CRM/Utils/ICalendar.php index 40707d98c0e3..fddefbfec849 100644 --- a/CRM/Utils/ICalendar.php +++ b/CRM/Utils/ICalendar.php @@ -215,4 +215,59 @@ protected static function format_tz_offset($offset) { return sprintf('%+03d%02d', $hours, $minutes); } + /** + * @param array|NULL $info + * Information of the events to create an iCal file for, as returned by + * CRM_Event_BAO_Event::getCompleteInfo(). + * + * @return string + * The rendered contents of the iCal file. + */ + public static function createCalendarFile($info) { + $template = \CRM_Core_Smarty::singleton(); + + // Decode HTML entities in relevant fields. + foreach (['title', 'description', 'event_type', 'location', 'contact_email'] as $field) { + if (isset($info[0][$field])) { + $info[0][$field] = html_entity_decode($info[0][$field], ENT_QUOTES | ENT_HTML401, 'UTF-8'); + } + } + + // Calculate timezones. + if (count($info) > 0) { + $date_min = min( + array_map(function ($event) { + return strtotime($event['start_date']); + }, $info) + ); + $date_max = max( + array_map(function ($event) { + return strtotime($event['end_date'] ?? $event['start_date']); + }, $info) + ); + $template->assign('timezones', CRM_Utils_ICalendar::generate_timezones($timezones, $date_min, $date_max)); + } + else { + $template->assign('timezones', NULL); + } + $template->assign('timezone', @date_default_timezone_get()); + + $template->assign('events', $info); + $ical_data = $template->fetch('CRM/Core/Calendar/ICal.tpl'); + $ical_data = preg_replace('/(?activity_source)); // create an array of all of to, from, cc, bcc that are in use for this Mail Account, so we don't create contacts for emails we aren't adding to the activity. $emailFields = array_merge($targetFields, $assigneeFields, $sourceFields); - $createContact = !($dao->is_contact_creation_disabled_if_no_match); + $createContact = !($dao->is_contact_creation_disabled_if_no_match) && !$isBounceProcessing; $bounceActivityTypeID = $activityTypeID = (int) $dao->activity_type_id; $activityTypes = Activity::getFields(TRUE) ->setLoadOptions(['id', 'name']) diff --git a/CRM/Utils/SQL.php b/CRM/Utils/SQL.php index 5f7311d6096e..2f5e07843273 100644 --- a/CRM/Utils/SQL.php +++ b/CRM/Utils/SQL.php @@ -71,7 +71,7 @@ public static function mergeSubquery($entityName, $joinColumn = 'id') { } // Arrays of arrays get joined with OR (similar to CRM_Core_Permission::check) elseif (is_array($formattedClause)) { - $subClauses[] = "($fieldName " . implode(" OR $fieldName ", $formattedClause) . ')'; + $subClauses[] = "(($fieldName " . implode(") OR ($fieldName ", $formattedClause) . '))'; } else { $subClauses[] = "$fieldName $formattedClause"; diff --git a/CRM/Utils/SQL/Insert.php b/CRM/Utils/SQL/Insert.php index 0a3c509866a0..dc256fc95c33 100644 --- a/CRM/Utils/SQL/Insert.php +++ b/CRM/Utils/SQL/Insert.php @@ -145,7 +145,12 @@ public function row($row) { $escapedRow = []; foreach ($this->columns as $column) { - $escapedRow[$column] = $this->escapeString($row[$column]); + if (is_bool($row[$column])) { + $escapedRow[$column] = (int) $row[$column]; + } + else { + $escapedRow[$column] = $this->escapeString($row[$column]); + } } $this->rows[] = $escapedRow; @@ -186,4 +191,19 @@ public function toSQL() { return $sql; } + /** + * Execute the query. + * + * @param bool $i18nRewrite + * If the system has multilingual features, should the field/table + * names be rewritten? + * @return CRM_Core_DAO + * @see CRM_Core_DAO::executeQuery + * @see CRM_Core_I18n_Schema::rewriteQuery + */ + public function execute($i18nRewrite = TRUE) { + return CRM_Core_DAO::executeQuery($this->toSQL(), [], TRUE, NULL, + FALSE, $i18nRewrite); + } + } diff --git a/CRM/Utils/SQL/Select.php b/CRM/Utils/SQL/Select.php index 2e9338653134..3ffcb18a4379 100644 --- a/CRM/Utils/SQL/Select.php +++ b/CRM/Utils/SQL/Select.php @@ -581,13 +581,13 @@ public function toSQL() { $sql .= $join . "\n"; } if ($this->wheres) { - $sql .= 'WHERE (' . implode(') AND (', $this->wheres) . ")\n"; + $sql .= 'WHERE (' . implode(")\n AND (", $this->wheres) . ")\n"; } if ($this->groupBys) { $sql .= 'GROUP BY ' . implode(', ', $this->groupBys) . "\n"; } if ($this->havings) { - $sql .= 'HAVING (' . implode(') AND (', $this->havings) . ")\n"; + $sql .= 'HAVING (' . implode(")\n AND (", $this->havings) . ")\n"; } if ($this->orderBys) { $orderBys = CRM_Utils_Array::crmArraySortByField($this->orderBys, diff --git a/CRM/Utils/String.php b/CRM/Utils/String.php index 920edf7a842b..bb83724dc294 100644 --- a/CRM/Utils/String.php +++ b/CRM/Utils/String.php @@ -445,8 +445,7 @@ public static function strtoboolstr($str) { */ public static function htmlToText($html) { $token_html = preg_replace('!\{([a-z_.]+)\}!i', 'token:{$1}', $html); - $converter = new \Html2Text\Html2Text($token_html, ['do_links' => 'table', 'width' => 75]); - $token_text = $converter->getText(); + $token_text = \Soundasleep\Html2Text::convert($token_html, ['ignore_errors' => TRUE]); $text = preg_replace('!token\:\{([a-z_.]+)\}!i', '{$1}', $token_text); return $text; } @@ -876,7 +875,7 @@ public static function htmlAttributes($attributes) { } /** - * Determine if $string starts with $fragment. + * @deprecated * * @param string $string * The long string. @@ -885,15 +884,12 @@ public static function htmlAttributes($attributes) { * @return bool */ public static function startsWith($string, $fragment) { - if ($fragment === '') { - return TRUE; - } - $len = strlen($fragment ?? ''); - return substr(($string ?? ''), 0, $len) === $fragment; + CRM_Core_Error::deprecatedFunctionWarning('str_starts_with'); + return str_starts_with((string) $string, (string) $fragment); } /** - * Determine if $string ends with $fragment. + * @deprecated * * @param string $string * The long string. @@ -902,11 +898,8 @@ public static function startsWith($string, $fragment) { * @return bool */ public static function endsWith($string, $fragment) { - if ($fragment === '') { - return TRUE; - } - $len = strlen($fragment ?? ''); - return substr(($string ?? ''), -1 * $len) === $fragment; + CRM_Core_Error::deprecatedFunctionWarning('str_ends_with'); + return str_ends_with((string) $string, (string) $fragment); } /** @@ -920,7 +913,7 @@ public static function filterByWildcards($patterns, $allStrings, $allowNew = FAL $patterns = (array) $patterns; $result = []; foreach ($patterns as $pattern) { - if (!\CRM_Utils_String::endsWith($pattern, '*')) { + if (!str_ends_with($pattern, '*')) { if ($allowNew || in_array($pattern, $allStrings)) { $result[] = $pattern; } @@ -928,7 +921,7 @@ public static function filterByWildcards($patterns, $allStrings, $allowNew = FAL else { $prefix = rtrim($pattern, '*'); foreach ($allStrings as $key) { - if (\CRM_Utils_String::startsWith($key, $prefix)) { + if (str_starts_with($key, $prefix)) { $result[] = $key; } } diff --git a/CRM/Utils/System.php b/CRM/Utils/System.php index c70d83af3ad0..f3359d58a0b2 100644 --- a/CRM/Utils/System.php +++ b/CRM/Utils/System.php @@ -26,7 +26,7 @@ * @method static mixed permissionDenied() Show access denied screen. * @method static mixed logout() Log out the current user. * @method static mixed updateCategories() Clear CMS caches related to the user registration/profile forms. - * @method static void appendBreadCrumb(array $breadCrumbs) Append an additional breadcrumb tag to the existing breadcrumbs. + * @method static void appendBreadCrumb(array $breadCrumbs) Append an additional breadcrumb link to the existing breadcrumbs. * @method static void resetBreadCrumb() Reset an additional breadcrumb tag to the existing breadcrumb. * @method static void addHTMLHead(string $head) Append a string to the head of the HTML file. * @method static string postURL(int $action) Determine the post URL for a form. @@ -452,12 +452,12 @@ public static function crmURL($params) { return self::url( $p, - CRM_Utils_Array::value('q', $params), - CRM_Utils_Array::value('a', $params, FALSE), - CRM_Utils_Array::value('f', $params), - CRM_Utils_Array::value('h', $params, TRUE), - CRM_Utils_Array::value('fe', $params, FALSE), - CRM_Utils_Array::value('fb', $params, FALSE) + $params['q'] ?? NULL, + $params['a'] ?? FALSE, + $params['f'] ?? NULL, + $params['h'] ?? TRUE, + $params['fe'] ?? FALSE, + $params['fb'] ?? FALSE ); } diff --git a/CRM/Utils/System/Joomla.php b/CRM/Utils/System/Joomla.php index b7f92257fc68..d61d3f4a3258 100644 --- a/CRM/Utils/System/Joomla.php +++ b/CRM/Utils/System/Joomla.php @@ -136,8 +136,8 @@ public function getEmailFieldName(CRM_Core_Form $form, array $fields):string { public function checkUserNameEmailExists(&$params, &$errors, $emailName = 'email') { $config = CRM_Core_Config::singleton(); - $name = CRM_Utils_Array::value('name', $params); - $email = CRM_Utils_Array::value('mail', $params); + $name = $params['name'] ?? NULL; + $email = $params['mail'] ?? NULL; //don't allow the special characters and min. username length is two //regex \\ to match a single backslash would become '/\\\\/' $isNotValid = (bool) preg_match('/[\<|\>|\"|\'|\%|\;|\(|\)|\&|\\\\|\/]/im', $name); diff --git a/CRM/Utils/System/Standalone.php b/CRM/Utils/System/Standalone.php index db6a0039751f..1a5c7902e746 100644 --- a/CRM/Utils/System/Standalone.php +++ b/CRM/Utils/System/Standalone.php @@ -221,9 +221,7 @@ public function url( */ public static function currentPath() { $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); - if ($path[0] == '/') { - $path = substr($path, 1); - } + $path = trim($path, '/'); return $path; } @@ -287,7 +285,7 @@ public function theme(&$content, $print = FALSE, $maintenance = FALSE) { // Q. what does this do? Why do we only include this for maintenance? if ($maintenance) { $smarty = CRM_Core_Smarty::singleton(); - echo implode('', $smarty->_tpl_vars['pageHTMLHead']); + echo implode('', $smarty->getTemplateVars('pageHTMLHead')); } // @todo Add variables from the body tag? (for Shoreditch) diff --git a/CRM/Utils/Token.php b/CRM/Utils/Token.php index f2ef5ce99574..7cd3bf0c38e7 100644 --- a/CRM/Utils/Token.php +++ b/CRM/Utils/Token.php @@ -1585,7 +1585,7 @@ public static function getMembershipTokenReplacement($entity, $token, $membershi default: if (in_array($token, $supportedTokens)) { $value = $membership[$token]; - if (CRM_Utils_String::endsWith($token, '_date')) { + if (str_ends_with($token, '_date')) { $value = CRM_Utils_Date::customFormat($value); } } @@ -1746,7 +1746,7 @@ protected static function convertPseudoConstantsUsingMetadata($value, $token) { $value = CRM_Core_PseudoConstant::getLabel('CRM_Contact_BAO_Contact', $token, $value); } } - elseif ($value && CRM_Utils_String::endsWith($token, '_date')) { + elseif ($value && str_ends_with($token, '_date')) { $value = CRM_Utils_Date::customFormat($value); } return $value; @@ -1764,7 +1764,7 @@ public static function getTokenDeprecations(): array { '$display_name' => 'contact.display_name', ], 'contribution_online_receipt' => [ - '$contributeMode' => 'no longer available / relevant', + '$contributeMode' => ts('no longer available / relevant'), '$first_name' => 'contact.first_name', '$last_name' => 'contact.last_name', '$displayName' => 'contact.display_name', @@ -1772,19 +1772,39 @@ public static function getTokenDeprecations(): array { 'membership_offline_receipt' => [ // receipt_text_renewal appears to be long gone. 'receipt_text_renewal' => 'receipt_text', - '$isAmountZero' => 'no longer available / relevant', + '$isAmountZero' => ts('no longer available / relevant'), ], 'event_offline_receipt' => [ - '$contributeMode' => 'no longer available / relevant', - '$isAmountZero' => 'no longer available / relevant', + '$contributeMode' => ts('no longer available / relevant'), + '$isAmountZero' => ts('no longer available / relevant'), + '$dataArray' => ts('found within $participants'), + '$paidBy' => 'contribution.payment_instrument_id:label', + '$totalTaxAmount' => 'contribution.tax_amount', + '$amount' => ts('found within $participants'), + '$checkNumber' => 'contribution.check_number', + '$module' => ts('no longer available / relevant'), + '$register_date' => 'participant.register_date', + '$receive_date' => 'contribution.receive_date', + '$is_pay_later' => 'contribution.is_pay_later', + '$totalAmount' => 'contribution.total_amount', + '$location' => 'event.location', + '$isShowLocation' => 'event.is_show_location|boolean', + '$event.participant_role' => 'participant.role_id:label', + '$amount_level' => ts('found within $participants'), + 'balanceAmount' => 'contribution.balance_amount', + '$financialTypeName' => 'contribution.financial_type_id:label', + '$contributionTypeName' => 'contribution.financial_type_id:label', + '$trxn_id' => 'contribution.trxn_id', + '$participant_status_id' => 'participant.status_id', + ], 'pledge_acknowledgement' => [ - '$domain' => 'no longer available / relevant', - '$contact' => 'no longer available / relevant', + '$domain' => ts('no longer available / relevant'), + '$contact' => ts('no longer available / relevant'), ], 'pledge_reminder' => [ - '$domain' => 'no longer available / relevant', - '$contact' => 'no longer available / relevant', + '$domain' => ts('no longer available / relevant'), + '$contact' => ts('no longer available / relevant'), ], ], ]; diff --git a/CRM/Utils/Type.php b/CRM/Utils/Type.php index 510718060bc5..ea610939de19 100644 --- a/CRM/Utils/Type.php +++ b/CRM/Utils/Type.php @@ -70,7 +70,7 @@ class CRM_Utils_Type { * @return string * String identifying the data type, e.g. 'Int' or 'String'. */ - public static function typeToString($type) { + public static function typeToString($type): string { // @todo Use constants in the case statements, e.g. "case T_INT:". // @todo return directly, instead of assigning a value. // @todo Use a lookup array, as a property or as a local variable. @@ -134,7 +134,7 @@ public static function typeToString($type) { break; } - return (isset($string)) ? $string : ""; + return $string ?? ''; } /** diff --git a/CRM/Utils/Wrapper.php b/CRM/Utils/Wrapper.php index 5efe9a89b66b..3638f75533c6 100644 --- a/CRM/Utils/Wrapper.php +++ b/CRM/Utils/Wrapper.php @@ -75,7 +75,7 @@ public function run($formName, $formLabel = NULL, $arguments = NULL) { $sessionVar = $params['sessionVar'] ?? NULL; $type = $params['type'] ?? NULL; $default = $params['default'] ?? NULL; - $abort = CRM_Utils_Array::value('abort', $params, FALSE); + $abort = $params['abort'] ?? FALSE; $value = NULL; $value = CRM_Utils_Request::retrieve( diff --git a/Civi/API/Api3SelectQuery.php b/Civi/API/Api3SelectQuery.php index 366223290e7f..66c5a3fa6787 100644 --- a/Civi/API/Api3SelectQuery.php +++ b/Civi/API/Api3SelectQuery.php @@ -157,8 +157,8 @@ protected function getField($fieldName) { } foreach ($this->apiFieldSpec as $field) { if ( - $fieldName == \CRM_Utils_Array::value('uniqueName', $field) || - array_search($fieldName, \CRM_Utils_Array::value('api.aliases', $field, [])) !== FALSE + $fieldName == ($field['uniqueName'] ?? NULL) || + array_search($fieldName, $field['api.aliases'] ?? []) !== FALSE ) { return $field; } diff --git a/Civi/API/SelectQuery.php b/Civi/API/SelectQuery.php index f22742e844e8..b384a0e625a5 100644 --- a/Civi/API/SelectQuery.php +++ b/Civi/API/SelectQuery.php @@ -217,7 +217,7 @@ protected function addFkField($fkFieldName, $side) { } $fieldInfo = $fkField['FKApiSpec'][$fieldName] ?? NULL; - $keyColumn = \CRM_Utils_Array::value('FKKeyColumn', $fkField, 'id'); + $keyColumn = $fkField['FKKeyColumn'] ?? 'id'; if (!$fieldInfo || !isset($fkField['FKApiSpec'][$keyColumn])) { // Join doesn't exist - might be another param with a dot in it for some reason, we'll just ignore it. return NULL; @@ -404,7 +404,7 @@ protected function buildOrderBy() { $words = preg_split("/[\s]+/", $item); if ($words) { // Direction defaults to ASC unless DESC is specified - $direction = strtoupper(\CRM_Utils_Array::value(1, $words, '')) == 'DESC' ? ' DESC' : ''; + $direction = strtoupper($words[1] ?? '') === 'DESC' ? ' DESC' : ''; $field = $this->getField($words[0]); if ($field) { $this->query->orderBy(self::MAIN_TABLE_ALIAS . '.' . $field['name'] . $direction, NULL, $index); diff --git a/Civi/API/Subscriber/ChainSubscriber.php b/Civi/API/Subscriber/ChainSubscriber.php index 84b011eed431..c258c56eefdc 100644 --- a/Civi/API/Subscriber/ChainSubscriber.php +++ b/Civi/API/Subscriber/ChainSubscriber.php @@ -162,17 +162,16 @@ protected function callNestedApi($apiKernel, &$params, &$result, $action, $entit $defaultSubParams[$lowercase_entity . "_id"] = $parentAPIValues['id']; } } - // @todo remove strtolower: $subEntity is already lower case - if ($entity != 'Contact' && \CRM_Utils_Array::value(strtolower($subEntity . "_id"), $parentAPIValues)) { + if ($entity !== 'Contact' && !empty($parentAPIValues[$subEntity . '_id'])) { //e.g. if event_id is in the values returned & subentity is event //then pass in event_id as 'id' don't do this for contact as it //does some weird things like returning primary email & //thus limiting the ability to chain email //TODO - this might need the camel treatment - $defaultSubParams['id'] = $parentAPIValues[$subEntity . "_id"]; + $defaultSubParams['id'] = $parentAPIValues[$subEntity . '_id']; } - if (\CRM_Utils_Array::value('entity_table', $result['values'][$idIndex]) == $subEntity) { + if (($result['values'][$idIndex]['entity_table'] ?? NULL) == $subEntity) { $defaultSubParams['id'] = $result['values'][$idIndex]['entity_id']; } // if we are dealing with the same entity pass 'id' through diff --git a/Civi/API/Subscriber/DynamicFKAuthorization.php b/Civi/API/Subscriber/DynamicFKAuthorization.php index e84bbb901de6..1a6a684f5654 100644 --- a/Civi/API/Subscriber/DynamicFKAuthorization.php +++ b/Civi/API/Subscriber/DynamicFKAuthorization.php @@ -177,7 +177,7 @@ public function onApiAuthorize(\Civi\API\Event\AuthorizeEvent $event) { $this->authorizeDelegate( $apiRequest['action'], $apiRequest['params']['entity_table'], - \CRM_Utils_Array::value('entity_id', $apiRequest['params'], NULL), + $apiRequest['params']['entity_id'] ?? NULL, $apiRequest ); return; diff --git a/Civi/API/WhitelistRule.php b/Civi/API/WhitelistRule.php index 25d5e4f3c358..e23ee655ce50 100644 --- a/Civi/API/WhitelistRule.php +++ b/Civi/API/WhitelistRule.php @@ -181,7 +181,7 @@ public function matches($apiRequest) { // Kind'a silly we need to (re(re))parse here for each rule; would be more // performant if pre-parsed by Request::create(). $options = _civicrm_api3_get_options_from_params($apiRequest['params'], TRUE, $apiRequest['entity'], 'get'); - $return = \CRM_Utils_Array::value('return', $options, []); + $return = $options['return'] ?? []; $activatedFields = array_merge($activatedFields, array_keys($return)); } diff --git a/Civi/ActionSchedule/Mapping.php b/Civi/ActionSchedule/Mapping.php new file mode 100644 index 000000000000..82f18404c13b --- /dev/null +++ b/Civi/ActionSchedule/Mapping.php @@ -0,0 +1,4 @@ + $info) { // Merge in defaults $angularModules[$module] += ['basePages' => ['civicrm/a']]; + if (!empty($info['settings'])) { + \CRM_Core_Error::deprecatedWarning('Angular "settings" is not supported. See https://github.com/civicrm/civicrm-core/pull/19052'); + } // Validate settingsFactory callables if (isset($info['settingsFactory'])) { // To keep the cache small, we want `settingsFactory` to contain the string names of class & function, not an object @@ -352,7 +355,14 @@ public function getStrings($name) { } /** - * Get resources for one or more modules. + * Get resources for one or more modules, applying any changesets. + * + * NOTE: The output of this function is a little quirky; depending on the type of resource requested, + * the results will either be a non-associative array (for path and url-type resources) + * or an array indexed by moduleName (for pass-thru resources like settingsFactory, requires, permissions, bundles). + * + * Note: ChangeSets will be applied + * @see \CRM_Utils_Hook::alterAngular() * * @param string|array $moduleNames * List of module names. @@ -361,15 +371,20 @@ public function getStrings($name) { * @param string $refType * Type of reference to the resource ('cacheUrl', 'rawUrl', 'path', 'settings'). * @return array - * List of URLs or paths. + * Indexed or non-associative array, depending on resource requested (see note) * @throws \CRM_Core_Exception */ public function getResources($moduleNames, $resType, $refType) { $result = []; - $moduleNames = (array) $moduleNames; - foreach ($moduleNames as $moduleName) { + // Properties that do not require interpolation - they are added to the output keyed by moduleName + $passThru = ['settings', 'settingsFactory', 'requires', 'permissions', 'bundles']; + + foreach ((array) $moduleNames as $moduleName) { $module = $this->getModule($moduleName); - if (isset($module[$resType])) { + if (isset($module[$resType]) && in_array($resType, $passThru, TRUE)) { + $result[$moduleName] = $module[$resType]; + } + elseif (isset($module[$resType])) { foreach ($module[$resType] as $file) { $refTypeSuffix = ''; if (is_string($file) && preg_match(';^(assetBuilder|ext)://;', $file)) { @@ -416,16 +431,6 @@ public function getResources($moduleNames, $resType, $refType) { $result[] = $this->res->getUrl(parse_url($file, PHP_URL_HOST), ltrim(parse_url($file, PHP_URL_PATH), '/'), TRUE); break; - case 'settings': - case 'settingsFactory': - case 'requires': - case 'permissions': - case 'bundles': - if (!empty($module[$resType])) { - $result[$moduleName] = $module[$resType]; - } - break; - default: throw new \CRM_Core_Exception("Unrecognized resource format"); } diff --git a/Civi/Angular/Page/Modules.php b/Civi/Angular/Page/Modules.php index 39a2e1ccfa8a..b26c2d54f6ff 100644 --- a/Civi/Angular/Page/Modules.php +++ b/Civi/Angular/Page/Modules.php @@ -2,6 +2,8 @@ namespace Civi\Angular\Page; +use Civi\Angular\Manager; + /** * This page aggregates data from Angular modules. * @@ -148,18 +150,17 @@ public function parseModuleNames($modulesExpr, $angular) { * @param \Civi\Angular\Manager $angular * @return array */ - public function getMetadata($moduleNames, $angular) { - $modules = $angular->getModules(); + public function getMetadata(array $moduleNames, Manager $angular): array { $result = []; foreach ($moduleNames as $moduleName) { - if (isset($modules[$moduleName])) { - $result[$moduleName] = []; - $result[$moduleName]['domain'] = $modules[$moduleName]['ext']; - $result[$moduleName]['js'] = $angular->getResources($moduleName, 'js', 'rawUrl'); - $result[$moduleName]['css'] = $angular->getResources($moduleName, 'css', 'rawUrl'); - $result[$moduleName]['partials'] = $angular->getPartials($moduleName); - $result[$moduleName]['strings'] = $angular->getTranslatedStrings($moduleName); - } + $module = $angular->getModule($moduleName); + $result[$moduleName] = [ + 'domain' => $module['ext'], + 'js' => $angular->getResources($moduleName, 'js', 'rawUrl'), + 'css' => $angular->getResources($moduleName, 'css', 'rawUrl'), + 'partials' => $angular->getPartials($moduleName), + 'strings' => $angular->getTranslatedStrings($moduleName), + ]; } return $result; } diff --git a/Civi/Api4/Action/Contact/GetDuplicates.php b/Civi/Api4/Action/Contact/GetDuplicates.php index 9829af3b03b4..3ac73b781945 100644 --- a/Civi/Api4/Action/Contact/GetDuplicates.php +++ b/Civi/Api4/Action/Contact/GetDuplicates.php @@ -42,7 +42,8 @@ class GetDuplicates extends \Civi\Api4\Generic\DAOCreateAction { */ protected function getRuleGroupNames() { $rules = []; - foreach (\CRM_Contact_BAO_ContactType::basicTypes() as $contactType) { + $contactTypes = $this->getEntityName() === 'Contact' ? \CRM_Contact_BAO_ContactType::basicTypes() : [$this->getEntityName()]; + foreach ($contactTypes as $contactType) { $rules[] = $contactType . '.Unsupervised'; $rules[] = $contactType . '.Supervised'; } @@ -142,14 +143,14 @@ private function transformCustomParams(array &$entityValues, array &$dedupeParam public static function fields(BasicGetFieldsAction $action) { $fields = []; $ignore = ['id', 'contact_id', 'is_primary', 'on_hold', 'location_type_id', 'phone_type_id']; - foreach (['Contact', 'Email', 'Phone', 'Address', 'IM'] as $entity) { + foreach ([$action->getEntityName(), 'Email', 'Phone', 'Address', 'IM'] as $entity) { $entityFields = (array) civicrm_api4($entity, 'getFields', [ 'checkPermissions' => FALSE, 'action' => 'create', 'loadOptions' => $action->getLoadOptions(), 'where' => [['name', 'NOT IN', $ignore], ['type', 'IN', ['Field', 'Custom']]], ]); - if ($entity !== 'Contact') { + if ($entity !== $action->getEntityName()) { $prefix = strtolower($entity) . '_primary.'; foreach ($entityFields as &$field) { $field['name'] = $prefix . $field['name']; diff --git a/Civi/Api4/Action/Queue/Run.php b/Civi/Api4/Action/Queue/Run.php new file mode 100644 index 000000000000..80e230e26f31 --- /dev/null +++ b/Civi/Api4/Action/Queue/Run.php @@ -0,0 +1,136 @@ +queue); + $startTime = microtime(TRUE); + $requests = 0; + $errors = 0; + $successes = 0; + $message = NULL; + $perm = $this->getCheckPermissions(); + + while (TRUE) { + if (!$queue->isActive()) { + $message = sprintf('Queue is not active (status => %s)', $queue->getStatus()); + break; + } + + if (static::isFinite($this->maxRequests) && $requests >= $this->maxRequests) { + $message = sprintf('Reached request limit (%d)', $this->maxRequests); + break; + } + if (static::isFinite($this->maxDuration) && (microtime(TRUE) - $startTime) >= $this->maxDuration) { + $message = sprintf('Reached duration limit (%d)', $this->maxDuration); + break; + } + + try { + $requests++; + + $claims = Queue::claimItems($perm)->setQueue($this->queue)->execute()->getArrayCopy(); + if (empty($claims)) { + $message = 'No claimable items'; + break; + } + + $batchResults = Queue::runItems($perm)->setQueue($this->queue)->setItems($claims)->execute(); + } + catch (\Throwable $t) { + $errors++; + $message = sprintf('Queue-item raised unhandled exception (%s: %s)', get_class($t), $t->getMessage()); + break; + } + + foreach ($batchResults as $batchResult) { + if ($batchResult['outcome'] === 'ok') { + $successes++; + } + else { + $errors++; + // Should we stop? No, we're just reporting stats. + // What about queues with policy "error=>abort"? They must update ("status=>aborted") under the aegis of runItems(). + // Stopping here would obscure problems that affect all main-loops. + } + } + } + + $result[] = [ + 'loop_duration' => sprintf('%.3f', microtime(TRUE) - $startTime), + 'loop_requests' => $requests, + 'item_successes' => $successes, + 'item_errors' => $errors, + 'queue_ready' => $queue->getStatistic('ready'), + 'queue_blocked' => $queue->getStatistic('blocked'), + 'queue_total' => $queue->getStatistic('total'), + 'exit_message' => $message, + ]; + } + + private static function isFinite($value): bool { + return $value !== NULL && $value >= 0; + } + +} diff --git a/Civi/Api4/Action/Queue/RunItems.php b/Civi/Api4/Action/Queue/RunItems.php index d711062e6ce9..e7e8bdbff784 100644 --- a/Civi/Api4/Action/Queue/RunItems.php +++ b/Civi/Api4/Action/Queue/RunItems.php @@ -30,8 +30,8 @@ * - 'retry': Task encountered an error. Will try again later. * - 'fail': Task encountered an error. Will not try again later. Removed from queue. * - * @method $this setItem(?array $item) - * @method ?array getItem() + * @method $this setItems(?array $items) + * @method ?array getItems() * @method ?string setQueue * @method $this setQueue(?string $queue) */ diff --git a/Civi/Api4/Contact.php b/Civi/Api4/Contact.php index eeb05eb9a102..c71aabd35776 100644 --- a/Civi/Api4/Contact.php +++ b/Civi/Api4/Contact.php @@ -33,7 +33,7 @@ class Contact extends Generic\DAOEntity { * @return Action\Contact\Create */ public static function create($checkPermissions = TRUE) { - return (new Action\Contact\Create(__CLASS__, __FUNCTION__)) + return (new Action\Contact\Create(self::getEntityName(), __FUNCTION__)) ->setCheckPermissions($checkPermissions); } @@ -42,7 +42,7 @@ public static function create($checkPermissions = TRUE) { * @return Action\Contact\Update */ public static function update($checkPermissions = TRUE) { - return (new Action\Contact\Update(__CLASS__, __FUNCTION__)) + return (new Action\Contact\Update(self::getEntityName(), __FUNCTION__)) ->setCheckPermissions($checkPermissions); } @@ -51,7 +51,7 @@ public static function update($checkPermissions = TRUE) { * @return Action\Contact\Save */ public static function save($checkPermissions = TRUE) { - return (new Action\Contact\Save(__CLASS__, __FUNCTION__)) + return (new Action\Contact\Save(self::getEntityName(), __FUNCTION__)) ->setCheckPermissions($checkPermissions); } @@ -60,7 +60,7 @@ public static function save($checkPermissions = TRUE) { * @return Action\Contact\Delete */ public static function delete($checkPermissions = TRUE) { - return (new Action\Contact\Delete(__CLASS__, __FUNCTION__)) + return (new Action\Contact\Delete(self::getEntityName(), __FUNCTION__)) ->setCheckPermissions($checkPermissions); } @@ -69,7 +69,7 @@ public static function delete($checkPermissions = TRUE) { * @return Action\Contact\GetChecksum */ public static function getChecksum($checkPermissions = TRUE) { - return (new Action\Contact\GetChecksum(__CLASS__, __FUNCTION__)) + return (new Action\Contact\GetChecksum(self::getEntityName(), __FUNCTION__)) ->setCheckPermissions($checkPermissions); } @@ -78,7 +78,7 @@ public static function getChecksum($checkPermissions = TRUE) { * @return Action\Contact\ValidateChecksum */ public static function validateChecksum($checkPermissions = TRUE) { - return (new Action\Contact\ValidateChecksum(__CLASS__, __FUNCTION__)) + return (new Action\Contact\ValidateChecksum(self::getEntityName(), __FUNCTION__)) ->setCheckPermissions($checkPermissions); } @@ -87,7 +87,7 @@ public static function validateChecksum($checkPermissions = TRUE) { * @return Action\Contact\GetDuplicates */ public static function getDuplicates($checkPermissions = TRUE) { - return (new Action\Contact\GetDuplicates(__CLASS__, __FUNCTION__)) + return (new Action\Contact\GetDuplicates(self::getEntityName(), __FUNCTION__)) ->setCheckPermissions($checkPermissions); } @@ -96,8 +96,39 @@ public static function getDuplicates($checkPermissions = TRUE) { * @return Action\Contact\MergeDuplicates */ public static function mergeDuplicates($checkPermissions = TRUE) { - return (new Action\Contact\MergeDuplicates(__CLASS__, __FUNCTION__)) + return (new Action\Contact\MergeDuplicates(self::getEntityName(), __FUNCTION__)) ->setCheckPermissions($checkPermissions); } + protected static function getDaoName(): string { + // Child classes (Individual, Organization, Household) need this. + return 'CRM_Contact_DAO_Contact'; + } + + /** + * @inheritDoc + */ + public static function getInfo(): array { + $info = parent::getInfo(); + $contactType = static::getEntityName(); + // Adjust info for child classes (Individual, Organization, Household) + if ($contactType !== 'Contact') { + $contactTypeInfo = \CRM_Contact_BAO_ContactType::getContactType($contactType); + $info['icon'] = $contactTypeInfo['icon'] ?? $info['icon']; + $info['type'] = ['DAOEntity', 'ContactType']; + $info['description'] = ts('Contacts of type %1.', [1 => $contactTypeInfo['label']]); + // This forces the value into get and create api actions + $info['where'] = ['contact_type' => $contactType]; + } + return $info; + } + + /** + * @inheritDoc + */ + public static function permissions() { + $permissions = \CRM_Core_Permission::getEntityActionPermissions(); + return ($permissions['contact'] ?? []) + $permissions['default']; + } + } diff --git a/Civi/Api4/CustomValue.php b/Civi/Api4/CustomValue.php index 2ea7a3274a9e..4201d3397afd 100644 --- a/Civi/Api4/CustomValue.php +++ b/Civi/Api4/CustomValue.php @@ -135,6 +135,13 @@ public static function permissions() { ]; } + /** + * @return \CRM_Core_DAO|string|null + */ + protected static function getDaoName(): ?string { + return 'CRM_Core_BAO_CustomValue'; + } + /** * @see \Civi\Api4\Generic\AbstractEntity::getInfo() * @return array @@ -145,7 +152,7 @@ public static function getInfo() { 'type' => ['CustomValue', 'DAOEntity'], 'searchable' => 'secondary', 'primary_key' => ['id'], - 'dao' => 'CRM_Core_BAO_CustomValue', + 'dao' => self::getDaoName(), 'see' => [ 'https://docs.civicrm.org/user/en/latest/organising-your-data/creating-custom-fields/#multiple-record-fieldsets', '\Civi\Api4\CustomGroup', diff --git a/Civi/Api4/Entity.php b/Civi/Api4/Entity.php index fb2b4780e984..a595df8575dd 100644 --- a/Civi/Api4/Entity.php +++ b/Civi/Api4/Entity.php @@ -118,6 +118,11 @@ class Entity extends Generic\AbstractEntity { 'data_type' => 'Array', 'description' => 'Arguments needed by php action factory functions (used when multiple entities share a class, e.g. CustomValue).', ], + [ + 'name' => 'where', + 'data_type' => 'Array', + 'description' => 'Constant values which will be force-set when reading/writing this entity (e.g. [contact_type => Individual])', + ], [ 'name' => 'bridge', 'data_type' => 'Array', @@ -128,6 +133,11 @@ class Entity extends Generic\AbstractEntity { 'data_type' => 'Array', 'description' => 'When joining entities in the UI, which fields should be presented by default in the ON clause', ], + [ + 'name' => 'match_fields', + 'data_type' => 'Array', + 'description' => 'Combination of fields used for unique matching', + ], [ 'name' => 'group_weights_by', 'data_type' => 'Array', diff --git a/Civi/Api4/EntitySet.php b/Civi/Api4/EntitySet.php index d11b33e7c8c8..867a3f5fa31c 100644 --- a/Civi/Api4/EntitySet.php +++ b/Civi/Api4/EntitySet.php @@ -39,6 +39,7 @@ public static function autocomplete($checkPermissions = TRUE) { } /** + * This isn't a "real" entity and doesn't have any fields * @return \Civi\Api4\Generic\BasicGetFieldsAction */ public static function getFields($checkPermissions = TRUE) { @@ -61,4 +62,11 @@ protected static function getEntityTitle(bool $plural = FALSE): string { return $plural ? ts('Entity Sets') : ts('Entity Set'); } + public static function getInfo(): array { + $info = parent::getInfo(); + // This isn't a "real" entity and doesn't have any fields, so no primary key + $info['primary_key'] = []; + return $info; + } + } diff --git a/Civi/Api4/Generic/AbstractAction.php b/Civi/Api4/Generic/AbstractAction.php index 43563bae3eba..ade0f637b7b8 100644 --- a/Civi/Api4/Generic/AbstractAction.php +++ b/Civi/Api4/Generic/AbstractAction.php @@ -153,12 +153,19 @@ abstract class AbstractAction implements \ArrayAccess { * @param string $actionName */ public function __construct($entityName, $actionName) { - // If a namespaced class name is passed in - if (strpos($entityName, '\\') !== FALSE) { - $entityName = substr($entityName, strrpos($entityName, '\\') + 1); + // If a namespaced class name is passed in, convert to entityName + $this->_entityName = CoreUtil::stripNamespace($entityName); + // Normalize action name case (because PHP is case-insensitive, we have to do an extra check) + $thisClassName = CoreUtil::stripNamespace(get_class($this)); + // If this was called via magic method, $actionName won't necessarily have the + // correct case because PHP doesn't care about case when calling methods. + if (strtolower($thisClassName) === strtolower($actionName)) { + $this->_actionName = lcfirst($thisClassName); + } + // If called via static method, case should already be correct. + else { + $this->_actionName = $actionName; } - $this->_entityName = $entityName; - $this->_actionName = $actionName; $this->_id = \Civi\API\Request::getNextId(); } diff --git a/Civi/Api4/Generic/AbstractEntity.php b/Civi/Api4/Generic/AbstractEntity.php index 5caca47384fc..432ab7b8d434 100644 --- a/Civi/Api4/Generic/AbstractEntity.php +++ b/Civi/Api4/Generic/AbstractEntity.php @@ -12,6 +12,7 @@ namespace Civi\Api4\Generic; use Civi\API\Exception\NotImplementedException; +use Civi\Api4\Utils\CoreUtil; use Civi\Api4\Utils\ReflectionUtils; /** @@ -75,7 +76,7 @@ public static function permissions() { * @return string */ public static function getEntityName(): string { - return self::stripNamespace(static::class); + return CoreUtil::stripNamespace(static::class); } /** @@ -87,7 +88,7 @@ public static function getEntityName(): string { */ protected static function getEntityTitle(bool $plural = FALSE): string { $name = static::getEntityName(); - $dao = \CRM_Core_DAO_AllCoreTables::getFullName($name); + $dao = self::getDaoName(); return $dao ? $dao::getEntityTitle($plural) : ($plural ? \CRM_Utils_String::pluralize($name) : $name); } @@ -116,6 +117,13 @@ public static function __callStatic($action, $args) { return $actionObject; } + /** + * @return \CRM_Core_DAO|string|null + */ + protected static function getDaoName(): ?string { + return \CRM_Core_DAO_AllCoreTables::getFullName(static::getEntityName()); + } + /** * Reflection function called by Entity::get() * @@ -128,7 +136,7 @@ public static function getInfo() { 'name' => $entityName, 'title' => static::getEntityTitle(), 'title_plural' => static::getEntityTitle(TRUE), - 'type' => [self::stripNamespace(get_parent_class(static::class))], + 'type' => [CoreUtil::stripNamespace(get_parent_class(static::class))], 'paths' => [], 'class' => static::class, 'primary_key' => ['id'], @@ -137,7 +145,7 @@ public static function getInfo() { 'searchable' => 'secondary', ]; // Add info for entities with a corresponding DAO - $dao = \CRM_Core_DAO_AllCoreTables::getFullName($info['name']); + $dao = static::getDaoName(); if ($dao) { $info['paths'] = $dao::getEntityPaths(); $info['primary_key'] = $dao::$_primaryKey; @@ -146,9 +154,18 @@ public static function getInfo() { $info['dao'] = $dao; $info['table_name'] = $dao::$_tableName; $info['icon_field'] = (array) ($dao::fields()['icon']['name'] ?? NULL); + if (method_exists($dao, 'indices')) { + foreach (\CRM_Utils_Array::findAll($dao::indices(FALSE), ['unique' => TRUE, 'localizable' => FALSE]) as $index) { + foreach ($index['field'] as $field) { + // Trim `field(length)` to just `field` + [$field] = explode('(', $field); + $info['match_fields'][] = $field; + } + } + } } foreach (ReflectionUtils::getTraits(static::class) as $trait) { - $info['type'][] = self::stripNamespace($trait); + $info['type'][] = CoreUtil::stripNamespace($trait); } // Get DocBlock from APIv4 Entity class $reflection = new \ReflectionClass(static::class); @@ -179,14 +196,4 @@ public static function getInfo() { return $info; } - /** - * Remove namespace prefix from a class name - * - * @param string $className - * @return string - */ - private static function stripNamespace(string $className): string { - return substr($className, strrpos($className, '\\') + 1); - } - } diff --git a/Civi/Api4/Generic/AutocompleteAction.php b/Civi/Api4/Generic/AutocompleteAction.php index 096ffa0551ad..183043e3a851 100644 --- a/Civi/Api4/Generic/AutocompleteAction.php +++ b/Civi/Api4/Generic/AutocompleteAction.php @@ -149,23 +149,29 @@ public function _run(Result $result) { else { // Default search and sort field $labelField = $this->display['settings']['columns'][0]['key']; - $idField = CoreUtil::getIdFieldName($this->savedSearch['api_entity']); + $primaryKeys = CoreUtil::getInfoItem($this->savedSearch['api_entity'], 'primary_key'); $this->display['settings'] += [ 'sort' => [$labelField, 'ASC'], ]; // Always search on the first line of the display $searchFields = [$labelField]; - // If input is an integer, search by id - $numericInput = $this->page == 1 && \CRM_Utils_Rule::positiveInteger($this->input); - if ($numericInput) { - $searchFields = [$idField]; + // If input is an integer... + $searchById = \CRM_Utils_Rule::positiveInteger($this->input) && + // ...and there is exactly one primary key (e.g. EntitySet has zero, others might have compound keys) + count($primaryKeys) === 1 && + // ...and the primary key field is type Integer (e.g. Afform.name is a String) + ($this->getField($primaryKeys[0])['data_type'] ?? NULL) === 'Integer'; + // ...then search by primary key on first page + $initialSearchById = $searchById && $this->page == 1; + if ($initialSearchById) { + $searchFields = $primaryKeys; } - // For subsequent pages when searching numeric input - elseif ($this->page > 1 && \CRM_Utils_Rule::positiveInteger($this->input)) { + // For subsequent pages when searching by id, subtract the "extra" first page + elseif ($searchById && $this->page > 1) { $this->page -= 1; } // If first line uses a rewrite, search on those fields too - if (!empty($this->display['settings']['columns'][0]['rewrite'])) { + if (!$initialSearchById && !empty($this->display['settings']['columns'][0]['rewrite'])) { $searchFields = array_merge($searchFields, $this->getTokens($this->display['settings']['columns'][0]['rewrite'])); } $this->display['settings']['limit'] = $this->display['settings']['limit'] ?? \Civi::settings()->get('search_autocomplete_count'); @@ -198,7 +204,7 @@ public function _run(Result $result) { $result[] = $item; } $result->setCountMatched($apiResult->count()); - if (!empty($numericInput)) { + if (!empty($initialSearchById)) { // Trigger "more results" after searching by exact id $result->setCountMatched($apiResult->count() + 1); } @@ -279,16 +285,8 @@ private function augmentSelectClause(string $idField, array $displayFields) { */ private function getKeyField() { $entityName = $this->savedSearch['api_entity']; - if ($this->key) { - /** @var \CRM_Core_DAO $dao */ - $dao = CoreUtil::getInfoItem($entityName, 'dao'); - if ($dao && method_exists($dao, 'indices')) { - foreach ($dao::indices(FALSE) as $index) { - if (!empty($index['unique']) && in_array($this->key, $index['field'], TRUE)) { - return $this->key; - } - } - } + if ($this->key && in_array($this->key, CoreUtil::getInfoItem($entityName, 'match_fields') ?? [], TRUE)) { + return $this->key; } return $this->display['settings']['keyField'] ?? CoreUtil::getIdFieldName($entityName); } diff --git a/Civi/Api4/Generic/BasicGetFieldsAction.php b/Civi/Api4/Generic/BasicGetFieldsAction.php index 895701f2adb7..07ba072000fb 100644 --- a/Civi/Api4/Generic/BasicGetFieldsAction.php +++ b/Civi/Api4/Generic/BasicGetFieldsAction.php @@ -138,7 +138,7 @@ protected function formatResults(&$values, $isInternal) { if (array_key_exists('label', $fieldDefaults)) { $field['label'] = $field['label'] ?? $field['title'] ?? $field['name']; } - if (!empty($field['options']) && is_array($field['options']) && empty($field['suffixes']) && array_key_exists('suffixes', $field)) { + if (isset($field['options']) && is_array($field['options']) && empty($field['suffixes']) && array_key_exists('suffixes', $field)) { $this->setFieldSuffixes($field); } if (isset($defaults['options'])) { @@ -156,13 +156,14 @@ protected function formatResults(&$values, $isInternal) { * @param array $field */ private function formatOptionList(&$field) { - if (empty($field['options'])) { + $optionsExist = isset($field['options']) && is_array($field['options']); + if (!isset($field['options'])) { $field['options'] = !empty($field['pseudoconstant']); } if (!empty($field['pseudoconstant']['optionGroupName'])) { $field['suffixes'] = CoreUtil::getOptionValueFields($field['pseudoconstant']['optionGroupName']); } - if (!$this->loadOptions || !$field['options']) { + if (!$this->loadOptions || (!$optionsExist && empty($field['pseudoconstant']))) { $field['options'] = (bool) $field['options']; return; } @@ -324,6 +325,7 @@ public function fields() { 'Email' => ts('Email'), 'EntityRef' => ts('Autocomplete Entity'), 'File' => ts('File'), + 'Hidden' => ts('Hidden'), 'Location' => ts('Address Location'), 'Number' => ts('Number'), 'Radio' => ts('Radio Buttons'), diff --git a/Civi/Api4/Generic/DAOGetFieldsAction.php b/Civi/Api4/Generic/DAOGetFieldsAction.php index a3e2072d4cb9..8b4a5655ffd2 100644 --- a/Civi/Api4/Generic/DAOGetFieldsAction.php +++ b/Civi/Api4/Generic/DAOGetFieldsAction.php @@ -29,6 +29,14 @@ class DAOGetFieldsAction extends BasicGetFieldsAction { protected function getRecords() { $fieldsToGet = $this->_itemsToGet('name'); $typesToGet = $this->_itemsToGet('type'); + // Force-set values supplied by entity definition + // e.g. if this is a ContactType pseudo-entity, set `contact_type` value which is used by the following: + // @see \Civi\Api4\Service\Spec\Provider\ContactGetSpecProvider + // @see \Civi\Api4\Service\Spec\SpecGatherer::addDAOFields + $presetValues = CoreUtil::getInfoItem($this->getEntityName(), 'where') ?? []; + foreach ($presetValues as $presetField => $presetValue) { + $this->addValue($presetField, $presetValue); + } /** @var \Civi\Api4\Service\Spec\SpecGatherer $gatherer */ $gatherer = \Civi::container()->get('spec_gatherer'); $includeCustom = TRUE; diff --git a/Civi/Api4/Generic/ExportAction.php b/Civi/Api4/Generic/ExportAction.php index d7903a70e693..4561afa86076 100644 --- a/Civi/Api4/Generic/ExportAction.php +++ b/Civi/Api4/Generic/ExportAction.php @@ -24,7 +24,7 @@ * @method $this setId(int $id) * @method int getId() * @method $this setMatch(array $match) Specify fields to match for update. - * @method bool getMatch() + * @method array getMatch() * @method $this setCleanup(string $cleanup) * @method string getCleanup() * @method $this setUpdate(string $update) @@ -40,17 +40,14 @@ class ExportAction extends AbstractAction { protected $id; /** - * Specify fields to match when managed records are being reconciled. + * Fields to match when managed records are being reconciled. * - * To prevent "DB Error: Already Exists" errors, it's generally a good idea to set this - * value to whatever unique fields this entity has (for most entities it's "name"). - * The managed system will then check if a record with that name already exists before - * trying to create a new one. + * By default this will be set automatically based on the entity's unique fields. * * @var array * @optionsCallback getMatchFields */ - protected $match = ['name']; + protected $match; /** * Specify rule for auto-updating managed entity @@ -76,18 +73,17 @@ class ExportAction extends AbstractAction { * @param \Civi\Api4\Generic\Result $result */ public function _run(Result $result) { - $this->exportRecord($this->getEntityName(), $this->id, $result, $this->match); + $this->exportRecord($this->getEntityName(), $this->id, $result); } /** * @param string $entityType * @param int $entityId * @param \Civi\Api4\Generic\Result $result - * @param array $matchFields * @param string $parentName * @param array $excludeFields */ - private function exportRecord(string $entityType, int $entityId, Result $result, array $matchFields, $parentName = NULL, $excludeFields = []) { + private function exportRecord(string $entityType, int $entityId, Result $result, $parentName = NULL, $excludeFields = []) { if (isset($this->exportedEntities[$entityType][$entityId])) { throw new \CRM_Core_Exception("Circular reference detected: attempted to export $entityType id $entityId multiple times."); } @@ -121,27 +117,12 @@ private function exportRecord(string $entityType, int $entityId, Result $result, } // The get api always returns ID, but it should not be included in an export unset($record['id']); - // Should references be limited to the current domain? - $limitRefsByDomain = $entityType === 'OptionGroup' && \CRM_Core_OptionGroup::isDomainOptionGroup($record['name']) ? \CRM_Core_BAO_Domain::getDomain()->id : FALSE; - foreach ($allFields as $fieldName => $field) { - if (($field['fk_entity'] ?? NULL) === 'Domain') { - $alias = $fieldName . '.name'; - if (isset($record[$alias])) { - // If this entity is for a specific domain, limit references to that same domain - if ($fieldName === 'domain_id') { - $limitRefsByDomain = \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', $record[$alias], 'id', 'name'); - } - // Swap current domain for special API keyword - if ($record[$alias] === \CRM_Core_BAO_Domain::getDomain()->name) { - unset($record[$alias]); - $record[$fieldName] = 'current_domain'; - } - } - } - } $name = ($parentName ?? '') . $entityType . '_' . ($record['name'] ?? count($this->exportedEntities[$entityType])); - // Ensure safe characters, max length - $name = \CRM_Utils_String::munge($name, '_', 127); + // Ensure safe characters, max length. + // This is used for the value of `civicrm_managed.name` which has a maxlength of 255, but is also used + // to generate a file by civix, and many filesystems have a maxlength of 255 including the suffix, so + // 255 - strlen('.mgd.php') = 247 + $name = \CRM_Utils_String::munge($name, '_', 247); // Include option group with custom field if ($entityType === 'CustomField') { if ( @@ -149,7 +130,7 @@ private function exportRecord(string $entityType, int $entityId, Result $result, // Sometimes fields share an option group; only export it once. empty($this->exportedEntities['OptionGroup'][$record['option_group_id']]) ) { - $this->exportRecord('OptionGroup', $record['option_group_id'], $result, $matchFields); + $this->exportRecord('OptionGroup', $record['option_group_id'], $result); } } // Don't use joins/pseudoconstants if null or if it has the same value as the original @@ -161,6 +142,12 @@ private function exportRecord(string $entityType, int $entityId, Result $result, unset($record[$fieldName]); } } + // Unset values that match the default + foreach ($allFields as $fieldName => $field) { + if (($record[$fieldName] ?? NULL) === $field['default_value']) { + unset($record[$fieldName]); + } + } $export = [ 'name' => $name, 'entity' => $entityType, @@ -171,8 +158,13 @@ private function exportRecord(string $entityType, int $entityId, Result $result, 'values' => $record, ], ]; - foreach (array_unique(array_intersect($matchFields, array_keys($allFields))) as $match) { - $export['params']['match'][] = $match; + $matchFields = $this->match; + // Calculate $match param if not passed explicitly + if (!isset($matchFields)) { + $matchFields = (array) CoreUtil::getInfoItem($entityType, 'match_fields'); + } + if ($matchFields) { + $export['params']['match'] = $matchFields; } $result[] = $export; // Export entities that reference this one @@ -188,15 +180,6 @@ private function exportRecord(string $entityType, int $entityId, Result $result, if ($refEntity === 'CustomField' && $entityType === 'OptionGroup') { continue; } - // Limit references by domain - if (property_exists($reference, 'domain_id')) { - if (!isset($reference->domain_id)) { - $reference->find(TRUE); - } - if (isset($reference->domain_id) && $reference->domain_id != $limitRefsByDomain) { - continue; - } - } $references[$refEntity][] = $reference; } foreach ($references as $refEntity => $records) { @@ -219,18 +202,8 @@ private function exportRecord(string $entityType, int $entityId, Result $result, return $a->$weightCol < $b->$weightCol ? -1 : 1; }); } - $referenceMatchFields = $matchFields; - // Add back-reference to "match" fields to enforce uniqueness - // See https://lab.civicrm.org/dev/core/-/issues/4286 - if ($referenceMatchFields) { - foreach ($reference::fields() as $field) { - if (($field['FKClassName'] ?? '') === $daoName) { - $referenceMatchFields[] = $field['name']; - } - } - } foreach ($records as $record) { - $this->exportRecord($refEntity, $record->id, $result, $referenceMatchFields, $name . '_', $exclude); + $this->exportRecord($refEntity, $record->id, $result, $name . '_', $exclude); } } } @@ -275,6 +248,8 @@ private function getFieldsForExport($entityType, $loadOptions = FALSE, $excludeF ['type', 'IN', ['Field', 'Custom']], ['readonly', '!=', TRUE], ]; + // Domains are handled automatically + $excludeFields[] = 'domain_id'; if ($excludeFields) { $conditions[] = ['name', 'NOT IN', $excludeFields]; } diff --git a/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php b/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php index d0e943a9751b..eee54e51992f 100644 --- a/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php +++ b/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php @@ -166,8 +166,12 @@ public static function filterCompare(array $row, array $condition, int $index = case 'REGEXP': case 'NOT REGEXP': - $pattern = '/' . str_replace('/', '\\/', $expected) . '/'; - return !preg_match($pattern, $value) == ($operator != 'REGEXP'); + case 'REGEXP BINARY': + case 'NOT REGEXP BINARY': + // Perform case-sensitive matching for BINARY operator, otherwise insensitive + $i = str_ends_with($operator, 'BINARY') ? '' : 'i'; + $pattern = '/' . str_replace('/', '\\/', $expected) . "/$i"; + return !preg_match($pattern, $value) == str_starts_with($operator, 'NOT'); case 'IN': return in_array($value, $expected); diff --git a/Civi/Api4/Generic/Traits/DAOActionTrait.php b/Civi/Api4/Generic/Traits/DAOActionTrait.php index 3de18daa7ca6..3a7d72c4e891 100644 --- a/Civi/Api4/Generic/Traits/DAOActionTrait.php +++ b/Civi/Api4/Generic/Traits/DAOActionTrait.php @@ -13,7 +13,6 @@ namespace Civi\Api4\Generic\Traits; use Civi\Api4\CustomField; -use Civi\Api4\Service\Schema\Joinable\CustomGroupJoinable; use Civi\Api4\Utils\FormattingUtil; use Civi\Api4\Utils\CoreUtil; use Civi\Api4\Utils\ReflectionUtils; @@ -103,7 +102,7 @@ protected function fillDefaults(&$params) { protected function writeObjects($items) { $updateWeights = FALSE; // Adjust weights for sortable entities - if (in_array('SortableEntity', CoreUtil::getInfoItem($this->getEntityName(), 'type'))) { + if (CoreUtil::isType($this->getEntityName(), 'SortableEntity')) { $weightField = CoreUtil::getInfoItem($this->getEntityName(), 'order_by'); // Only take action if updating a single record, or if no weights are specified in any record // This avoids messing up a bulk update with multiple recalculations @@ -112,6 +111,9 @@ protected function writeObjects($items) { } } + // Values specified by entity definition (e.g. 'Individual', 'Organization', 'Household' pseudo-entities specify `contact_type`) + $presetValues = CoreUtil::getInfoItem($this->getEntityName(), 'where') ?? []; + $result = []; $idField = CoreUtil::getIdFieldName($this->getEntityName()); @@ -120,6 +122,10 @@ protected function writeObjects($items) { FormattingUtil::formatWriteParams($item, $this->entityFields()); $this->formatCustomParams($item, $entityId); + if (!$entityId) { + $item = $presetValues + $item; + } + // Adjust weights for sortable entities if ($updateWeights) { $this->updateWeight($item); @@ -311,7 +317,7 @@ protected function getCustomFieldInfo(string $fieldExpr) { $field['table_name'] = $field['custom_group_id.table_name']; unset($field['custom_group_id.table_name']); $field['name'] = $groupName . '.' . $name; - $field['entity'] = CustomGroupJoinable::getEntityFromExtends($field['custom_group_id.extends']); + $field['entity'] = \CRM_Core_BAO_CustomGroup::getEntityFromExtends($field['custom_group_id.extends']); $info[$name] = $field; } \Civi::cache('metadata')->set($cacheKey, $info); diff --git a/Civi/Api4/Generic/Traits/ManagedEntity.php b/Civi/Api4/Generic/Traits/ManagedEntity.php index f014bc76a69e..1e0ebe4b2edc 100644 --- a/Civi/Api4/Generic/Traits/ManagedEntity.php +++ b/Civi/Api4/Generic/Traits/ManagedEntity.php @@ -27,8 +27,7 @@ trait ManagedEntity { */ public static function revert($checkPermissions = TRUE) { return (new BasicBatchAction(static::getEntityName(), __FUNCTION__, function($item, BasicBatchAction $action) { - $params = ['entity_type' => $action->getEntityName(), 'entity_id' => $item['id']]; - if (\CRM_Core_ManagedEntities::singleton()->revert($params)) { + if (\CRM_Core_ManagedEntities::singleton()->revert($action->getEntityName(), $item['id'])) { return $item; } else { diff --git a/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php b/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php index 337f3c052fea..f10c09e818ee 100644 --- a/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php +++ b/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php @@ -148,7 +148,7 @@ protected function getJoins() { */ private function getQuery() { if (!isset($this->_selectQuery) && !empty($this->savedSearch['api_entity'])) { - if (!in_array('DAOEntity', CoreUtil::getInfoItem($this->savedSearch['api_entity'], 'type'), TRUE)) { + if (!CoreUtil::isType($this->savedSearch['api_entity'], 'DAOEntity')) { return $this->_selectQuery = FALSE; } $api = Request::create($this->savedSearch['api_entity'], 'get', $this->savedSearch['api_params']); @@ -282,7 +282,7 @@ protected function applyFilter($fieldName, $value) { foreach ($fieldNames as $fieldName) { $field = $this->getField($fieldName); $dataType = $field['data_type'] ?? NULL; - $operators = ($field['operators'] ?? []) ?: CoreUtil::getOperators(); + $operators = array_values($field['operators'] ?? []) ?: CoreUtil::getOperators(); // Array is either associative `OP => VAL` or sequential `IN (...)` if (is_array($value)) { $value = array_filter($value, [$this, 'hasValue']); @@ -290,13 +290,15 @@ protected function applyFilter($fieldName, $value) { if (array_diff_key($value, array_flip(CoreUtil::getOperators()))) { // Use IN for regular fields if (empty($field['serialize'])) { - $filterClauses[] = [$fieldName, 'IN', $value]; + $op = in_array('IN', $operators, TRUE) ? 'IN' : $operators[0]; + $filterClauses[] = [$fieldName, $op, $value]; } // Use an OR group of CONTAINS for array fields else { + $op = in_array('CONTAINS', $operators, TRUE) ? 'CONTAINS' : $operators[0]; $orGroup = []; foreach ($value as $val) { - $orGroup[] = [$fieldName, 'CONTAINS', $val]; + $orGroup[] = [$fieldName, $op, $val]; } $filterClauses[] = ['OR', $orGroup]; } @@ -326,7 +328,8 @@ protected function applyFilter($fieldName, $value) { $filterClauses[] = [$fieldName, 'IN', (array) $value]; } else { - $filterClauses[] = [$fieldName, '=', $value]; + $op = in_array('=', $operators, TRUE) ? '=' : $operators[0]; + $filterClauses[] = [$fieldName, $op, $value]; } } // Single field diff --git a/Civi/Api4/Household.php b/Civi/Api4/Household.php new file mode 100644 index 000000000000..260cc8852d20 --- /dev/null +++ b/Civi/Api4/Household.php @@ -0,0 +1,33 @@ + Household] + * into get, create, and batch actions (however, when updating or deleting a single Contact by id, + * this will transparently pass-through to the Contact entity, so don't rely on this facade to enforce + * contact type for single-record-by-id write operations). + * + * @inheritDoc + * @searchable secondary + * @since 5.67 + * @package Civi\Api4 + */ +class Household extends Contact { + + protected static function getEntityTitle(bool $plural = FALSE): string { + return $plural ? ts('Households') : ts('Household'); + } + +} diff --git a/Civi/Api4/Individual.php b/Civi/Api4/Individual.php new file mode 100644 index 000000000000..9b701ef93611 --- /dev/null +++ b/Civi/Api4/Individual.php @@ -0,0 +1,32 @@ + Individual] + * into get, create, and batch actions (however, when updating or deleting a single Contact by id, + * this will transparently pass-through to the Contact entity, so don't rely on this facade to enforce + * contact type for single-record-by-id write operations). + * + * @inheritDoc + * @since 5.67 + * @package Civi\Api4 + */ +class Individual extends Contact { + + protected static function getEntityTitle(bool $plural = FALSE): string { + return $plural ? ts('Individuals') : ts('Individual'); + } + +} diff --git a/Civi/Api4/Navigation.php b/Civi/Api4/Navigation.php index fc1d08e56d5e..5483dcb55fce 100644 --- a/Civi/Api4/Navigation.php +++ b/Civi/Api4/Navigation.php @@ -16,6 +16,7 @@ * @searchable none * @orderBy weight * @groupWeightsBy domain_id,parent_id + * @matchFields name,domain_id * @since 5.19 * @package Civi\Api4 */ diff --git a/Civi/Api4/OptionValue.php b/Civi/Api4/OptionValue.php index a3486c3e7c76..9e2a580c1fc8 100644 --- a/Civi/Api4/OptionValue.php +++ b/Civi/Api4/OptionValue.php @@ -17,6 +17,7 @@ * @searchable secondary * @orderBy weight * @groupWeightsBy option_group_id + * @matchFields option_group_id,name * @since 5.19 * @package Civi\Api4 */ diff --git a/Civi/Api4/Organization.php b/Civi/Api4/Organization.php new file mode 100644 index 000000000000..76c664e73bdc --- /dev/null +++ b/Civi/Api4/Organization.php @@ -0,0 +1,32 @@ + Organization] + * into get, create, and batch actions (however, when updating or deleting a single Contact by id, + * this will transparently pass-through to the Contact entity, so don't rely on this facade to enforce + * contact type for single-record-by-id write operations). + * + * @inheritDoc + * @since 5.67 + * @package Civi\Api4 + */ +class Organization extends Contact { + + protected static function getEntityTitle(bool $plural = FALSE): string { + return $plural ? ts('Organizations') : ts('Organization'); + } + +} diff --git a/Civi/Api4/Provider/CustomEntityProvider.php b/Civi/Api4/Provider/CustomEntityProvider.php index b454a55eedf3..41f40971596c 100644 --- a/Civi/Api4/Provider/CustomEntityProvider.php +++ b/Civi/Api4/Provider/CustomEntityProvider.php @@ -12,9 +12,9 @@ namespace Civi\Api4\Provider; use Civi\Api4\CustomValue; -use Civi\Api4\Service\Schema\Joinable\CustomGroupJoinable; use Civi\Core\Event\GenericHookEvent; use Civi\Core\Service\AutoService; +use CRM_Core_BAO_CustomGroup; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** @@ -44,7 +44,7 @@ public static function addCustomEntities(GenericHookEvent $e) { $group = \CRM_Core_DAO::executeQuery($select); while ($group->fetch()) { $entityName = 'Custom_' . $group->name; - $baseEntity = CustomGroupJoinable::getEntityFromExtends($group->extends); + $baseEntity = CRM_Core_BAO_CustomGroup::getEntityFromExtends($group->extends); // Lookup base entity info using DAO methods not CoreUtil to avoid early-bootstrap issues $baseEntityDao = \CRM_Core_DAO_AllCoreTables::getFullName($baseEntity); $baseEntityTitle = $baseEntityDao ? $baseEntityDao::getEntityTitle(TRUE) : $baseEntity; diff --git a/Civi/Api4/Query/Api4Query.php b/Civi/Api4/Query/Api4Query.php index a40cfd4a67e7..4f13808e9384 100644 --- a/Civi/Api4/Query/Api4Query.php +++ b/Civi/Api4/Query/Api4Query.php @@ -27,7 +27,8 @@ * * '=', '<=', '>=', '>', '<', 'LIKE', "<>", "!=", * * 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', * * 'IS NOT NULL', 'IS NULL', 'CONTAINS', 'NOT CONTAINS', - * * 'IS EMPTY', 'IS NOT EMPTY', 'REGEXP', 'NOT REGEXP'. + * * 'IS EMPTY', 'IS NOT EMPTY', 'REGEXP', 'NOT REGEXP' + * * 'REGEXP BINARY', 'NOT REGEXP BINARY' */ abstract class Api4Query { @@ -402,7 +403,7 @@ protected function createSQLClause($fieldAlias, $operator, $value, $field, int $ } } - if ($operator == 'REGEXP' || $operator == 'NOT REGEXP') { + if ($operator == 'REGEXP' || $operator == 'NOT REGEXP' || $operator == 'REGEXP BINARY' || $operator == 'NOT REGEXP BINARY') { return sprintf('%s %s "%s"', $fieldAlias, $operator, \CRM_Core_DAO::escapeString($value)); } diff --git a/Civi/Api4/Query/Api4SelectQuery.php b/Civi/Api4/Query/Api4SelectQuery.php index 2d42a349603f..44833e9c6ddf 100644 --- a/Civi/Api4/Query/Api4SelectQuery.php +++ b/Civi/Api4/Query/Api4SelectQuery.php @@ -87,6 +87,12 @@ public function __construct($api) { // Add ACLs first to avoid redundant subclauses $this->query->where($this->getAclClause(self::MAIN_TABLE_ALIAS, $this->getEntity(), [], $this->getWhere())); + // Add required conditions if specified by entity + $requiredConditions = CoreUtil::getInfoItem($this->getEntity(), 'where') ?? []; + foreach ($requiredConditions as $requiredField => $requiredValue) { + $this->api->addWhere($requiredField, '=', $requiredValue); + } + // Add explicit joins. Other joins implied by dot notation may be added later $this->addExplicitJoins(); } @@ -415,7 +421,7 @@ public function getFieldSibling(array $field, string $siblingFieldName) { */ public function checkEntityAccess($entity) { if (!$this->getCheckPermissions()) { - return TRUE; + return CoreUtil::entityExists($entity); } if (!isset($this->entityAccess[$entity])) { try { @@ -425,7 +431,8 @@ public function checkEntityAccess($entity) { ])->first(); } // Anonymous users might not even be allowed to use 'getActions' - catch (UnauthorizedException $e) { + // Or tne entity might not exist + catch (\CRM_Core_Exception $e) { $this->entityAccess[$entity] = FALSE; } } @@ -467,6 +474,11 @@ private function addExplicitJoins() { $side = 'LEFT'; $this->api->addWhere("$alias.id", 'IS NULL'); } + // Add required conditions if specified by entity + $requiredConditions = CoreUtil::getInfoItem($entity, 'where') ?? []; + foreach ($requiredConditions as $requiredField => $requiredValue) { + $join[] = [$alias . '.' . $requiredField, '=', "'$requiredValue'"]; + } // Add all fields from joined entity to spec $joinEntityGet = \Civi\API\Request::create($entity, 'get', ['version' => 4, 'checkPermissions' => $this->getCheckPermissions()]); $joinEntityFields = $joinEntityGet->entityFields(); diff --git a/Civi/Api4/Query/SqlExpression.php b/Civi/Api4/Query/SqlExpression.php index 9555152db6fa..a58a580a73f9 100644 --- a/Civi/Api4/Query/SqlExpression.php +++ b/Civi/Api4/Query/SqlExpression.php @@ -11,6 +11,8 @@ namespace Civi\Api4\Query; +use Civi\Api4\Utils\CoreUtil; + /** * Base class for SqlColumn, SqlString, SqlBool, and SqlFunction classes. * @@ -66,6 +68,26 @@ public function __construct(string $expr, $alias = NULL) { abstract protected function initialize(); + private static function munge($name, $char = '_', $len = 63) { + // Replace all white space and non-alpha numeric with $char + // we only use the ascii character set since mysql does not create table names / field names otherwise + // CRM-11744 + $name = preg_replace('/[^a-zA-Z0-9_]+/', $char, trim($name)); + + // If there are no ascii characters present. + if (!strlen(trim($name, $char))) { + $name = \CRM_Utils_String::createRandom($len, \CRM_Utils_String::ALPHANUMERIC); + } + + if ($len) { + // lets keep variable names short + return substr($name, 0, $len); + } + else { + return $name; + } + } + /** * Converts a string to a SqlExpression object. * @@ -80,7 +102,7 @@ abstract protected function initialize(); public static function convert(string $expression, $parseAlias = FALSE, $mustBe = []) { $as = $parseAlias ? strrpos($expression, ' AS ') : FALSE; $expr = $as ? substr($expression, 0, $as) : $expression; - $alias = $as ? \CRM_Utils_String::munge(substr($expression, $as + 4), '_', 256) : NULL; + $alias = $as ? self::munge(substr($expression, $as + 4), '_', 256) : NULL; $bracketPos = strpos($expr, '('); $firstChar = substr($expr, 0, 1); $lastChar = substr($expr, -1); @@ -174,8 +196,7 @@ public function getAlias(): string { * @return string */ public function getType(): string { - $className = get_class($this); - return substr($className, strrpos($className, '\\') + 1); + return CoreUtil::stripNamespace(get_class($this)); } /** diff --git a/Civi/Api4/Queue.php b/Civi/Api4/Queue.php index f50486245719..3339d066294d 100644 --- a/Civi/Api4/Queue.php +++ b/Civi/Api4/Queue.php @@ -12,6 +12,7 @@ use Civi\Api4\Action\Queue\ClaimItems; use Civi\Api4\Action\Queue\RunItems; +use Civi\Api4\Action\Queue\Run; /** * Track a list of durable/scannable queues. @@ -40,10 +41,14 @@ public static function permissions() { } /** - * Claim an item from the queue. Returns zero or one items. + * Claim some items from the queue. Returns zero or more items. * * Note: This is appropriate for persistent, auto-run queues. * + * The number of items depends on the specific queue. Most notably, batch sizes are + * influenced by queue-driver support (`BatchQueueInterface`) and queue-configuration + * (`civicrm_queue.batch_limit`). + * * @param bool $checkPermissions * @return \Civi\Api4\Action\Queue\ClaimItems */ @@ -53,10 +58,14 @@ public static function claimItems($checkPermissions = TRUE) { } /** - * Run an item from the queue. + * Run some items from the queue. * * Note: This is appropriate for persistent, auto-run queues. * + * The number of items depends on the specific queue. Most notably, batch sizes are + * influenced by queue-driver support (`BatchQueueInterface`) and queue-configuration + * (`civicrm_queue.batch_limit`). + * * @param bool $checkPermissions * @return \Civi\Api4\Action\Queue\RunItems */ @@ -65,4 +74,19 @@ public static function runItems($checkPermissions = TRUE) { ->setCheckPermissions($checkPermissions); } + /** + * Run a series of items from a queue. + * + * This is a lightweight main-loop for development/testing. It may have some limited utility for + * sysadmins who want to fine-tune runners on a specific queue. See the class docblock for + * more information. + * + * @param bool $checkPermissions + * @return \Civi\Api4\Action\Queue\Run + */ + public static function run($checkPermissions = TRUE) { + return (new Run(static::getEntityName(), __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + } diff --git a/Civi/Api4/Service/Autocomplete/ActivityAutocompleteProvider.php b/Civi/Api4/Service/Autocomplete/ActivityAutocompleteProvider.php index 843ef5fea361..70d305e359b8 100644 --- a/Civi/Api4/Service/Autocomplete/ActivityAutocompleteProvider.php +++ b/Civi/Api4/Service/Autocomplete/ActivityAutocompleteProvider.php @@ -12,6 +12,7 @@ namespace Civi\Api4\Service\Autocomplete; +use Civi\Api4\Utils\CoreUtil; use Civi\Core\Event\GenericHookEvent; use Civi\Core\HookInterface; @@ -95,7 +96,7 @@ public static function on_civi_search_defaultDisplay(GenericHookEvent $e) { // If the savedSearch includes a contact join, add it to the output and the sort. foreach ($e->savedSearch['api_params']['join'] ?? [] as $join) { [$entity, $contactAlias] = explode(' AS ', $join[0]); - if ($entity === 'Contact') { + if (CoreUtil::isContact($entity)) { array_unshift($e->display['settings']['sort'], ["$contactAlias.sort_name", 'ASC']); $e->display['settings']['columns'][0]['rewrite'] = "[$contactAlias.sort_name] - [subject]"; $e->display['settings']['columns'][0]['empty_value'] = "[$contactAlias.sort_name] (" . ts('no subject') . ')'; diff --git a/Civi/Api4/Service/Autocomplete/CaseAutocompleteProvider.php b/Civi/Api4/Service/Autocomplete/CaseAutocompleteProvider.php index e28e6fbaf960..e3a4c7c956e3 100644 --- a/Civi/Api4/Service/Autocomplete/CaseAutocompleteProvider.php +++ b/Civi/Api4/Service/Autocomplete/CaseAutocompleteProvider.php @@ -12,6 +12,7 @@ namespace Civi\Api4\Service\Autocomplete; +use Civi\Api4\Utils\CoreUtil; use Civi\Core\Event\GenericHookEvent; use Civi\Core\HookInterface; @@ -92,7 +93,7 @@ public static function on_civi_search_defaultDisplay(GenericHookEvent $e) { // If the savedSearch includes a contact join, add it to the output and the sort. foreach ($e->savedSearch['api_params']['join'] ?? [] as $join) { [$entity, $contactAlias] = explode(' AS ', $join[0]); - if ($entity === 'Contact') { + if (CoreUtil::isContact($entity)) { array_unshift($e->display['settings']['sort'], ["$contactAlias.sort_name", 'ASC']); $e->display['settings']['columns'][0]['rewrite'] = "[$contactAlias.sort_name] - [subject]"; $e->display['settings']['columns'][0]['empty_value'] = "[$contactAlias.sort_name] (" . ts('no subject') . ')'; diff --git a/Civi/Api4/Service/Autocomplete/ContactAutocompleteProvider.php b/Civi/Api4/Service/Autocomplete/ContactAutocompleteProvider.php index b676baa692b5..27440a78241d 100644 --- a/Civi/Api4/Service/Autocomplete/ContactAutocompleteProvider.php +++ b/Civi/Api4/Service/Autocomplete/ContactAutocompleteProvider.php @@ -13,6 +13,7 @@ namespace Civi\Api4\Service\Autocomplete; use Civi\API\Event\PrepareEvent; +use Civi\Api4\Utils\CoreUtil; use Civi\Core\Event\GenericHookEvent; use Civi\Core\HookInterface; @@ -49,7 +50,7 @@ public static function on_civi_api_prepare(PrepareEvent $event) { * @param \Civi\Core\Event\GenericHookEvent $e */ public static function on_civi_search_defaultDisplay(GenericHookEvent $e) { - if ($e->display['settings'] || $e->display['type'] !== 'autocomplete' || $e->savedSearch['api_entity'] !== 'Contact') { + if ($e->display['settings'] || $e->display['type'] !== 'autocomplete' || !CoreUtil::isContact($e->savedSearch['api_entity'])) { return; } $e->display['settings'] = [ diff --git a/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php b/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php index 4ca50f079554..1a10075f7674 100644 --- a/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php +++ b/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php @@ -89,25 +89,4 @@ public function getSqlColumn($fieldName) { return $this->columns[$fieldName]; } - /** - * Translate custom_group.extends to entity name. - * - * Custom_group.extends pretty much maps 1-1 with entity names, except for a couple oddballs. - * @see \CRM_Core_SelectValues::customGroupExtends - * - * @param $extends - * @return string - * @throws \CRM_Core_Exception - * @throws \Civi\API\Exception\UnauthorizedException - */ - public static function getEntityFromExtends($extends) { - if (strpos($extends, 'Participant') === 0) { - return 'Participant'; - } - if ($extends === 'Contact' || in_array($extends, \CRM_Contact_BAO_ContactType::basicTypes(TRUE))) { - return 'Contact'; - } - return $extends; - } - } diff --git a/Civi/Api4/Service/Schema/Joiner.php b/Civi/Api4/Service/Schema/Joiner.php index d42caa170844..9908d3a566be 100644 --- a/Civi/Api4/Service/Schema/Joiner.php +++ b/Civi/Api4/Service/Schema/Joiner.php @@ -80,7 +80,8 @@ public static function getExtraJoinSql(array $field, Api4SelectQuery $query): st $prefix = empty($field['explicit_join']) ? '' : $field['explicit_join'] . '.'; $prefix .= (empty($field['implicit_join']) ? '' : $field['implicit_join'] . '.'); $idField = $query->getField($prefix . $field['name'] . '.id'); - return $idField['sql_name']; + // If permission denied to join, SELECT NULL + return $idField['sql_name'] ?? 'NULL'; } } diff --git a/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/Civi/Api4/Service/Schema/SchemaMapBuilder.php index dc388ae4e80e..beb5862c6b6a 100644 --- a/Civi/Api4/Service/Schema/SchemaMapBuilder.php +++ b/Civi/Api4/Service/Schema/SchemaMapBuilder.php @@ -16,6 +16,7 @@ use Civi\Api4\Event\SchemaMapBuildEvent; use Civi\Api4\Service\Schema\Joinable\CustomGroupJoinable; use Civi\Api4\Service\Schema\Joinable\Joinable; +use Civi\Api4\Utils\CoreUtil; use Civi\Core\Service\AutoService; use Civi\Core\CiviEventDispatcherInterface; use CRM_Core_DAO_AllCoreTables as AllCoreTables; @@ -40,13 +41,13 @@ class SchemaMapBuilder extends AutoService { */ public function __construct(CiviEventDispatcherInterface $dispatcher) { $this->dispatcher = $dispatcher; - $this->apiEntities = array_keys((array) Entity::get(FALSE)->addSelect('name')->execute()->indexBy('name')); + $this->apiEntities = Entity::get(FALSE)->addSelect('name')->execute()->column('name'); } /** * @return SchemaMap */ - public function build() { + public function build(): SchemaMap { $map = new SchemaMap(); $this->loadTables($map); @@ -142,7 +143,7 @@ private function addCustomFields(SchemaMap $map, Table $baseTable, string $entit } if ($fieldData->data_type === 'EntityReference' && isset($fieldData->fk_entity)) { - $targetTable = AllCoreTables::getTableForEntityName($fieldData->fk_entity); + $targetTable = self::getTableName($fieldData->fk_entity); $joinable = new Joinable($targetTable, 'id', $fieldData->name); $customTable->addTableLink($fieldData->column_name, $joinable); } @@ -162,4 +163,15 @@ private function addCustomFields(SchemaMap $map, Table $baseTable, string $entit } } + /** + * @param string $entityName + * @return string + */ + private static function getTableName(string $entityName) { + if (CoreUtil::isContact($entityName)) { + return 'civicrm_contact'; + } + return AllCoreTables::getTableForEntityName($entityName); + } + } diff --git a/Civi/Api4/Service/Spec/Provider/ContactGetSpecProvider.php b/Civi/Api4/Service/Spec/Provider/ContactGetSpecProvider.php index 3e664c9c184c..9d630092b9c1 100644 --- a/Civi/Api4/Service/Spec/Provider/ContactGetSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/ContactGetSpecProvider.php @@ -15,6 +15,7 @@ use Civi\Api4\Query\Api4SelectQuery; use Civi\Api4\Service\Spec\FieldSpec; use Civi\Api4\Service\Spec\RequestSpec; +use Civi\Api4\Utils\CoreUtil; /** * @service @@ -27,7 +28,7 @@ class ContactGetSpecProvider extends \Civi\Core\Service\AutoService implements G */ public function modifySpec(RequestSpec $spec) { // Groups field - $field = new FieldSpec('groups', 'Contact', 'Array'); + $field = new FieldSpec('groups', $spec->getEntity(), 'Array'); $field->setLabel(ts('In Groups')) ->setTitle(ts('Groups')) ->setColumnName('id') @@ -40,11 +41,10 @@ public function modifySpec(RequestSpec $spec) { ->setOptionsCallback([__CLASS__, 'getGroupList']); $spec->addFieldSpec($field); - // The following fields are specific to Individuals, so omit them if - // `contact_type` value was passed to `getFields` and is not "Individual" + // The following fields are specific to Individuals if (!$spec->getValue('contact_type') || $spec->getValue('contact_type') === 'Individual') { // Age field - $field = new FieldSpec('age_years', 'Contact', 'Integer'); + $field = new FieldSpec('age_years', $spec->getEntity(), 'Integer'); $field->setLabel(ts('Age (years)')) ->setTitle(ts('Age (years)')) ->setColumnName('birth_date') @@ -56,18 +56,16 @@ public function modifySpec(RequestSpec $spec) { $spec->addFieldSpec($field); // Birthday field - if (!$spec->getValue('contact_type') || $spec->getValue('contact_type') === 'Individual') { - $field = new FieldSpec('next_birthday', 'Contact', 'Integer'); - $field->setLabel(ts('Next Birthday in (days)')) - ->setTitle(ts('Next Birthday in (days)')) - ->setColumnName('birth_date') - ->setInputType('Number') - ->setDescription(ts('Number of days until next birthday')) - ->setType('Extra') - ->setReadonly(TRUE) - ->setSqlRenderer([__CLASS__, 'calculateBirthday']); - $spec->addFieldSpec($field); - } + $field = new FieldSpec('next_birthday', $spec->getEntity(), 'Integer'); + $field->setLabel(ts('Next Birthday in (days)')) + ->setTitle(ts('Next Birthday in (days)')) + ->setColumnName('birth_date') + ->setInputType('Number') + ->setDescription(ts('Number of days until next birthday')) + ->setType('Extra') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'calculateBirthday']); + $spec->addFieldSpec($field); } // Address, Email, Phone, IM primary/billing virtual fields @@ -118,7 +116,7 @@ public function modifySpec(RequestSpec $spec) { foreach ($entities as $entity => $types) { foreach ($types as $type => $info) { $name = strtolower($entity) . '_' . $type; - $field = new FieldSpec($name, 'Contact', 'Integer'); + $field = new FieldSpec($name, $spec->getEntity(), 'Integer'); $field->setLabel($info['label']) ->setTitle($info['title']) ->setColumnName('id') @@ -138,7 +136,8 @@ public function modifySpec(RequestSpec $spec) { * @return bool */ public function applies($entity, $action) { - return $entity === 'Contact' && $action === 'get'; + // Applies to 'Contact' plus pseudo-entities 'Individual', 'Organization', 'Household' + return CoreUtil::isContact($entity) && $action === 'get'; } /** diff --git a/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php b/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php index 1da2127af664..5ac7c1e6def8 100644 --- a/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php @@ -14,6 +14,7 @@ use Civi\Api4\Service\Spec\FieldSpec; use Civi\Api4\Service\Spec\RequestSpec; +use Civi\Api4\Utils\CoreUtil; /** * @service @@ -31,19 +32,26 @@ public function modifySpec(RequestSpec $spec) { $idField->setType('Field'); $idField->setInputType('Number'); $idField->setColumnName('id'); - $idField->setNullable('false'); + $idField->setNullable(FALSE); $idField->setTitle(ts('Custom Value ID')); $idField->setReadonly(TRUE); $idField->setNullable(FALSE); $spec->addFieldSpec($idField); + // Check which entity this group extends + $groupName = CoreUtil::getCustomGroupName($spec->getEntity()); + $baseEntity = \CRM_Core_BAO_CustomGroup::getEntityForGroup($groupName); + // Lookup base entity info using DAO methods not CoreUtil to avoid early-bootstrap issues + $baseEntityDao = \CRM_Core_DAO_AllCoreTables::getFullName($baseEntity); + $baseEntityTitle = $baseEntityDao ? $baseEntityDao::getEntityTitle() : $baseEntity; + $entityField = new FieldSpec('entity_id', $spec->getEntity(), 'Integer'); $entityField->setType('Field'); $entityField->setColumnName('entity_id'); $entityField->setTitle(ts('Entity ID')); - $entityField->setLabel(ts('Contact')); + $entityField->setLabel($baseEntityTitle); $entityField->setRequired($action === 'create'); - $entityField->setFkEntity('Contact'); + $entityField->setFkEntity($baseEntity); $entityField->setReadonly(TRUE); $entityField->setNullable(FALSE); $entityField->setInputType('EntityRef'); @@ -54,7 +62,7 @@ public function modifySpec(RequestSpec $spec) { * @inheritDoc */ public function applies($entity, $action) { - return strstr($entity, 'Custom_'); + return str_starts_with($entity, 'Custom_'); } } diff --git a/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/DashboardCreationSpecProvider.php similarity index 64% rename from Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php rename to Civi/Api4/Service/Spec/Provider/DashboardCreationSpecProvider.php index 15cb41cafd8d..beb34532fd74 100644 --- a/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/DashboardCreationSpecProvider.php @@ -18,24 +18,21 @@ * @service * @internal */ -class ContactCreationSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { +class DashboardCreationSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { /** - * @param \Civi\Api4\Service\Spec\RequestSpec $spec + * @inheritDoc */ public function modifySpec(RequestSpec $spec) { - $spec->getFieldByName('is_opt_out')->setRequired(FALSE); - $spec->getFieldByName('is_deleted')->setRequired(FALSE); + // Arguably this is a bad default in the schema + $spec->getFieldByName('is_active')->setRequired(FALSE)->setDefaultValue(TRUE); } /** - * @param string $entity - * @param string $action - * - * @return bool + * @inheritDoc */ public function applies($entity, $action) { - return $entity === 'Contact' && $action === 'create'; + return in_array($entity, ['Dashboard', 'DashboardContact'], TRUE) && $action === 'create'; } } diff --git a/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php b/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php index bdc05f6810ae..ac900b7299a5 100644 --- a/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php @@ -74,7 +74,7 @@ public static function getTagFilterSql(array $field, string $fieldAlias, string $value = array_unique(array_merge($value, $tagTree[$tagID])); } } - $tags = \CRM_Utils_Type::validate(implode(',', $value), 'CommaSeparatedIntegers'); + $tags = $value ? \CRM_Utils_Type::validate(implode(',', $value), 'CommaSeparatedIntegers') : '0'; return "$fieldAlias $operator (SELECT entity_id FROM `civicrm_entity_tag` WHERE entity_table = '$tableName' AND tag_id IN ($tags))"; } diff --git a/Civi/Api4/Service/Spec/Provider/OptionGroupCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/OptionGroupCreationSpecProvider.php new file mode 100644 index 000000000000..738a80b6144c --- /dev/null +++ b/Civi/Api4/Service/Spec/Provider/OptionGroupCreationSpecProvider.php @@ -0,0 +1,38 @@ +getFieldByName('name')->setRequired(FALSE); + $spec->getFieldByName('title')->setRequiredIf('empty($values.name)'); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'OptionGroup' && $action === 'create'; + } + +} diff --git a/Civi/Api4/Service/Spec/Provider/RelationshipCacheSpecProvider.php b/Civi/Api4/Service/Spec/Provider/RelationshipCacheSpecProvider.php index 051d7d0753ba..a7468f2c7372 100644 --- a/Civi/Api4/Service/Spec/Provider/RelationshipCacheSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/RelationshipCacheSpecProvider.php @@ -61,6 +61,7 @@ public function modifySpec(RequestSpec $spec) { // Fetches the value from the relationship ->setColumnName('relationship_id') ->setDescription($fieldInfo['description']) + ->setSuffixes(['name', 'label', 'icon']) ->setOptionsCallback(['CRM_Core_SelectValues', 'getPermissionedRelationshipOptions']) ->setSqlRenderer([__CLASS__, 'directionalRelationshipField']); $spec->addFieldSpec($field); diff --git a/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php index dcfaeaff75ee..dce76d87fcd2 100644 --- a/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php @@ -25,6 +25,8 @@ class TagCreationSpecProvider extends \Civi\Core\Service\AutoService implements */ public function modifySpec(RequestSpec $spec) { $spec->getFieldByName('used_for')->setDefaultValue('civicrm_contact'); + $spec->getFieldByName('name')->setRequired(FALSE)->setRequiredIf('empty($values.label)'); + $spec->getFieldByName('label')->setRequired(FALSE)->setRequiredIf('empty($values.name)'); } /** diff --git a/Civi/Api4/Service/Spec/SpecFormatter.php b/Civi/Api4/Service/Spec/SpecFormatter.php index d2c699192ab2..73bcd7a6cf56 100644 --- a/Civi/Api4/Service/Spec/SpecFormatter.php +++ b/Civi/Api4/Service/Spec/SpecFormatter.php @@ -130,14 +130,15 @@ public static function arrayToField(array $data, string $entityName): FieldSpec * @return string */ private static function getDataType(array $data) { - if (isset($data['data_type'])) { - return !empty($data['time_format']) ? 'Timestamp' : $data['data_type']; + $dataType = $data['data_type'] ?? $data['dataType'] ?? NULL; + if (isset($dataType)) { + return !empty($data['time_format']) ? 'Timestamp' : $dataType; } $dataTypeInt = $data['type'] ?? NULL; $dataTypeName = \CRM_Utils_Type::typeToString($dataTypeInt); - return $dataTypeName; + return $dataTypeName === 'Int' ? 'Integer' : $dataTypeName; } /** @@ -163,12 +164,12 @@ public static function getOptions($spec, $values, $returnFormat, $checkPermissio $bao = CoreUtil::getBAOFromApiName($spec->getEntity()); $optionLabels = $bao::buildOptions($fieldName, NULL, $values); - if (!is_array($optionLabels) || !$optionLabels) { + if (!is_array($optionLabels)) { $options = FALSE; } else { $options = \CRM_Utils_Array::makeNonAssociative($optionLabels, 'id', 'label'); - if (is_array($returnFormat)) { + if (is_array($returnFormat) && $options) { self::addOptionProps($options, $spec, $bao, $fieldName, $values, $returnFormat); } } @@ -303,10 +304,10 @@ public static function setInputTypeAndAttrs(FieldSpec &$fieldSpec, $data, $dataT self::setLegacyDateFormat($inputAttrs); } // Number input for numeric fields - if ($inputType === 'Text' && in_array($dataTypeName, ['Int', 'Float'], TRUE)) { + if ($inputType === 'Text' && in_array($dataTypeName, ['Integer', 'Float'], TRUE)) { $inputType = 'Number'; // Todo: make 'step' configurable for the custom field - $inputAttrs['step'] = $dataTypeName === 'Int' ? 1 : .01; + $inputAttrs['step'] = $dataTypeName === 'Integer' ? 1 : .01; } // Date/time settings from custom fields if ($inputType == 'Date' && !empty($data['custom_group_id'])) { diff --git a/Civi/Api4/Service/Spec/SpecGatherer.php b/Civi/Api4/Service/Spec/SpecGatherer.php index 56fa359ef11b..d77e3a8bc49b 100644 --- a/Civi/Api4/Service/Spec/SpecGatherer.php +++ b/Civi/Api4/Service/Spec/SpecGatherer.php @@ -91,15 +91,12 @@ private function addDAOFields(string $entityName, string $action, RequestSpec $s $DAOFields = $this->getDAOFields($entityName); foreach ($DAOFields as $DAOField) { - if (array_key_exists('contactType', $DAOField) && $spec->getValue('contact_type') && $DAOField['contactType'] != $spec->getValue('contact_type')) { + if (isset($DAOField['contactType']) && $spec->getValue('contact_type') && $DAOField['contactType'] !== $spec->getValue('contact_type')) { continue; } if (!empty($DAOField['component']) && !\CRM_Core_Component::isEnabled($DAOField['component'])) { continue; } - if ($DAOField['name'] == 'is_active' && empty($DAOField['default'])) { - $DAOField['default'] = '1'; - } $this->setDynamicFk($DAOField, $values); $field = SpecFormatter::arrayToField($DAOField, $entityName); $spec->addFieldSpec($field); @@ -146,13 +143,24 @@ private function setDynamicFk(array &$DAOField, array $values): void { * @see \CRM_Core_SelectValues::customGroupExtends */ private function addCustomFields(string $entity, RequestSpec $spec, bool $checkPermissions) { + $values = $spec->getValues(); + + // Handle contact type pseudo-entities + $contactTypes = \CRM_Contact_BAO_ContactType::basicTypes(); + // If contact type is given + if ($entity === 'Contact' && !empty($values['contact_type'])) { + $entity = $values['contact_type']; + } + $customInfo = \Civi\Api4\Utils\CoreUtil::getCustomGroupExtends($entity); if (!$customInfo) { return; } - $values = $spec->getValues(); $extends = $customInfo['extends']; $grouping = $customInfo['grouping']; + if ($entity === 'Contact' || in_array($entity, $contactTypes, TRUE)) { + $grouping = 'contact_sub_type'; + } $query = CustomField::get(FALSE) ->setSelect(['custom_group_id.name', 'custom_group_id.title', '*']) @@ -169,17 +177,6 @@ private function addCustomFields(string $entity, RequestSpec $spec, bool $checkP $query->addWhere('custom_group_id', 'IN', $allowedGroups); } - // Contact custom groups are extra complicated because contact_type can be a value for extends - if ($entity === 'Contact') { - if (array_key_exists('contact_type', $values)) { - $extends = ['Contact']; - if ($values['contact_type']) { - $extends[] = $values['contact_type']; - } - } - // Now grouping can be treated normally - $grouping = 'contact_sub_type'; - } if (is_string($grouping) && array_key_exists($grouping, $values)) { if (empty($values[$grouping])) { $query->addWhere('custom_group_id.extends_entity_column_value', 'IS EMPTY'); diff --git a/Civi/Api4/Tag.php b/Civi/Api4/Tag.php index 67e54a9fcf93..d8dae1953f1b 100644 --- a/Civi/Api4/Tag.php +++ b/Civi/Api4/Tag.php @@ -22,5 +22,6 @@ * @package Civi\Api4 */ class Tag extends Generic\DAOEntity { + use Generic\Traits\ManagedEntity; } diff --git a/Civi/Api4/Utils/CoreUtil.php b/Civi/Api4/Utils/CoreUtil.php index 473c6ff80321..bb53f94cb4e1 100644 --- a/Civi/Api4/Utils/CoreUtil.php +++ b/Civi/Api4/Utils/CoreUtil.php @@ -16,10 +16,15 @@ use Civi\API\Exception\UnauthorizedException; use Civi\API\Request; use Civi\Api4\Generic\AbstractAction; +use Civi\Api4\Service\Schema\SchemaMap; use CRM_Core_DAO_AllCoreTables as AllCoreTables; class CoreUtil { + public static function entityExists(string $entityName): bool { + return (bool) self::getInfoItem($entityName, 'name'); + } + /** * @param $entityName * @@ -27,11 +32,18 @@ class CoreUtil { * The BAO name for use in static calls. Return doc block is hacked to allow * auto-completion of static methods */ - public static function getBAOFromApiName($entityName) { + public static function getBAOFromApiName($entityName): ?string { + // TODO: It would be nice to just call self::getInfoItem($entityName, 'dao') + // but that currently causes test failures, probably due to early-bootstrap issues. if ($entityName === 'CustomValue' || strpos($entityName, 'Custom_') === 0) { - return 'CRM_Core_BAO_CustomValue'; + $dao = \Civi\Api4\CustomValue::getInfo()['dao']; + } + else { + $dao = AllCoreTables::getFullName($entityName); + } + if (!$dao && self::isContact($entityName)) { + $dao = 'CRM_Contact_DAO_Contact'; } - $dao = AllCoreTables::getFullName($entityName); return $dao ? AllCoreTables::getBAOClassName($dao) : NULL; } @@ -43,16 +55,16 @@ public static function getBAOFromApiName($entityName) { * @param $baoClassName * @return string|null */ - public static function getApiNameFromBAO($baoClassName) { + public static function getApiNameFromBAO($baoClassName): ?string { $briefName = AllCoreTables::getBriefName($baoClassName); return $briefName && self::getApiClass($briefName) ? $briefName : NULL; } /** - * @param $entityName - * @return string|\Civi\Api4\Generic\AbstractEntity + * @param string $entityName + * @return string|\Civi\Api4\Generic\AbstractEntity|null */ - public static function getApiClass($entityName) { + public static function getApiClass(string $entityName): ?string { $className = 'Civi\Api4\\' . $entityName; if (class_exists($className)) { return $className; @@ -60,6 +72,13 @@ public static function getApiClass($entityName) { return self::getInfoItem($entityName, 'class'); } + /** + * Returns TRUE if `entityName` is 'Contact', 'Individual', 'Organization' or 'Household' + */ + public static function isContact(string $entityName): bool { + return $entityName === 'Contact' || in_array($entityName, \CRM_Contact_BAO_ContactType::basicTypes(TRUE), TRUE); + } + /** * Get a piece of metadata about an entity * @@ -72,6 +91,20 @@ public static function getInfoItem(string $entityName, string $keyToReturn) { return $provider->getEntities()[$entityName][$keyToReturn] ?? NULL; } + /** + * Check if entity is of given type. + * + * @param string $entityName + * e.g. 'Contact' + * @param string $entityType + * e.g. 'SortableEntity' + * @return bool + */ + public static function isType(string $entityName, string $entityType): bool { + $entityTypes = (array) self::getInfoItem($entityName, 'type'); + return in_array($entityType, $entityTypes, TRUE); + } + /** * Get name of unique identifier, typically "id" * @param string $entityName @@ -95,19 +128,19 @@ public static function getSearchFields(string $entityName): array { * * @param string $entityName * - * @return string + * @return string|null */ - public static function getTableName(string $entityName) { + public static function getTableName(string $entityName): ?string { return self::getInfoItem($entityName, 'table_name'); } /** * Given a sql table name, return the name of the api entity. * - * @param $tableName + * @param string $tableName * @return string|NULL */ - public static function getApiNameFromTableName($tableName) { + public static function getApiNameFromTableName($tableName): ?string { $provider = \Civi::service('action_object_provider'); foreach ($provider->getEntities() as $entityName => $info) { if (($info['table_name'] ?? NULL) === $tableName) { @@ -117,10 +150,14 @@ public static function getApiNameFromTableName($tableName) { return NULL; } + public static function getCustomGroupName(string $entityName): ?string { + return str_starts_with($entityName, 'Custom_') ? substr($entityName, 7) : NULL; + } + /** * @return string[] */ - public static function getOperators() { + public static function getOperators(): array { $operators = \CRM_Core_DAO::acceptedSQLOperators(); $operators[] = 'CONTAINS'; $operators[] = 'NOT CONTAINS'; @@ -128,21 +165,34 @@ public static function getOperators() { $operators[] = 'IS NOT EMPTY'; $operators[] = 'REGEXP'; $operators[] = 'NOT REGEXP'; + $operators[] = 'REGEXP BINARY'; + $operators[] = 'NOT REGEXP BINARY'; return $operators; } /** * For a given API Entity, return the types of custom fields it supports and the column they join to. * + * Sort of the inverse of this function: + * @see \CRM_Core_BAO_CustomGroup::getEntityForGroup + * * @param string $entityName * @return array{extends: array, column: string, grouping: mixed}|null */ - public static function getCustomGroupExtends(string $entityName) { + public static function getCustomGroupExtends(string $entityName): ?array { + $contactTypes = \CRM_Contact_BAO_ContactType::basicTypes(); // Custom_group.extends pretty much maps 1-1 with entity names, except for Contact. + if (in_array($entityName, $contactTypes, TRUE)) { + return [ + 'extends' => ['Contact', $entityName], + 'column' => 'id', + 'grouping' => ['contact_type', 'contact_sub_type'], + ]; + } switch ($entityName) { case 'Contact': return [ - 'extends' => array_merge(['Contact'], array_keys(\CRM_Core_SelectValues::contactType())), + 'extends' => array_merge(['Contact'], $contactTypes), 'column' => 'id', 'grouping' => ['contact_type', 'contact_sub_type'], ]; @@ -173,7 +223,7 @@ public static function getCustomGroupExtends(string $entityName) { * @return bool * @throws \CRM_Core_Exception */ - public static function isCustomEntity($customGroupName) { + public static function isCustomEntity($customGroupName): bool { return $customGroupName && \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $customGroupName, 'is_multiple', 'name'); } @@ -184,10 +234,10 @@ public static function isCustomEntity($customGroupName) { * @param array $record * @param int|null $userID * Contact ID of the user we are testing, 0 for the anonymous user. - * @return bool + * @return bool|null * @throws \CRM_Core_Exception */ - public static function checkAccessRecord(AbstractAction $apiRequest, array $record, int $userID = NULL) { + public static function checkAccessRecord(AbstractAction $apiRequest, array $record, int $userID = NULL): ?bool { $userID = $userID ?? \CRM_Core_Session::getLoggedInContactID() ?? 0; // Super-admins always have access to everything @@ -250,7 +300,7 @@ public static function checkAccessDelegated(string $entityName, string $actionNa /** * @return \Civi\Api4\Service\Schema\SchemaMap */ - public static function getSchemaMap() { + public static function getSchemaMap(): SchemaMap { $cache = \Civi::cache('metadata'); $schemaMap = $cache->get('api4.schema.map'); if (!$schemaMap) { @@ -269,7 +319,7 @@ public static function getSchemaMap() { * @return array{name: string, type: string, count: int, table: string|null, key: string|null}[] * @throws NotImplementedException */ - public static function getRefCount(string $entityName, $entityId) { + public static function getRefCount(string $entityName, $entityId): array { $daoName = self::getInfoItem($entityName, 'dao'); if (!$daoName) { throw new NotImplementedException("Cannot getRefCount for $entityName - dao not found."); @@ -430,4 +480,14 @@ public static function topSortFields(array &$fields): void { } } + /** + * Strips leading namespace from a classname + * @param string $className + * @return string + */ + public static function stripNamespace(string $className): string { + $slashPos = strrpos($className, '\\'); + return $slashPos === FALSE ? $className : substr($className, $slashPos + 1); + } + } diff --git a/Civi/Api4/Utils/FormattingUtil.php b/Civi/Api4/Utils/FormattingUtil.php index e05f3bd7f5bf..ba93b4a27875 100644 --- a/Civi/Api4/Utils/FormattingUtil.php +++ b/Civi/Api4/Utils/FormattingUtil.php @@ -401,9 +401,16 @@ public static function convertDataType($value, $dataType) { case 'Float': return (float) $value; + case 'Timestamp': case 'Date': + // Convert mysql-style default to api-style default + if (str_contains($value, 'CURRENT_TIMESTAMP')) { + return 'now'; + } // Strip time from date-only fields - return substr($value, 0, 10); + if ($dataType === 'Date' && $value) { + return substr($value, 0, 10); + } } } return $value; diff --git a/Civi/Api4/Utils/ReflectionUtils.php b/Civi/Api4/Utils/ReflectionUtils.php index cc9b78d18912..446d06462111 100644 --- a/Civi/Api4/Utils/ReflectionUtils.php +++ b/Civi/Api4/Utils/ReflectionUtils.php @@ -206,7 +206,7 @@ public static function findMethodHelpers($class, string $prefix): iterable { yield from []; foreach ($clazz->getMethods(\ReflectionMethod::IS_PUBLIC | \ReflectionMethod::IS_PROTECTED) as $m) { - if (\CRM_Utils_String::startsWith($m->getName(), $prefix)) { + if (str_starts_with($m->getName(), $prefix)) { yield $m; } } diff --git a/Civi/Core/Format.php b/Civi/Core/Format.php index d7041e00ef97..653186887145 100644 --- a/Civi/Core/Format.php +++ b/Civi/Core/Format.php @@ -44,10 +44,6 @@ public function money($amount, ?string $currency = NULL, ?string $locale = NULL) if (!$currency) { $currency = Civi::settings()->get('defaultCurrency'); } - if (!isset($locale)) { - global $civicrmLocale; - $locale = $civicrmLocale->moneyFormat ?? (Civi::settings()->get('format_locale') ?? CRM_Core_I18n::getLocale()); - } $currencyObject = CRM_Utils_Money::getCurrencyObject($currency); $money = Money::of($amount, $currencyObject, NULL, RoundingMode::HALF_UP); $formatter = $this->getMoneyFormatter($currency, $locale); @@ -92,7 +88,7 @@ public function number($amount, ?string $locale = NULL, array $attributes = [ * @noinspection PhpDocMissingThrowsInspection * @noinspection PhpUnhandledExceptionInspection */ - public function moneyNumber($amount, string $currency, $locale): string { + public function moneyNumber($amount, string $currency, $locale = NULL): string { if (($amount = $this->checkAndConvertAmount($amount)) === '') { return ''; } @@ -195,9 +191,7 @@ protected function isUseSeparatorSettings(): bool { } /** - * Get the money formatter for when we are using configured thousand separators. - * - * Our intent is to phase out these settings in favour of deriving them from the locale. + * Get the cached money formatter. * * @param string|null $currency * @param string|null $locale @@ -215,7 +209,10 @@ public function getMoneyFormatter(?string $currency = NULL, ?string $locale = NU if (!$currency) { $currency = Civi::settings()->get('defaultCurrency'); } - $locale = $locale ?: \Civi\Core\Locale::detect()->moneyFormat; + if (!isset($locale)) { + global $civicrmLocale; + $locale = $civicrmLocale->moneyFormat ?? (Civi::settings()->get('format_locale') ?? CRM_Core_I18n::getLocale()); + } $cacheKey = __CLASS__ . $currency . '_' . $locale . '_' . $style . (!empty($attributes) ? md5(json_encode($attributes)) : ''); if (!isset(\Civi::$statics[$cacheKey])) { diff --git a/Civi/Core/SettingsManager.php b/Civi/Core/SettingsManager.php index feb3f86f66d1..6bf667c05cb3 100644 --- a/Civi/Core/SettingsManager.php +++ b/Civi/Core/SettingsManager.php @@ -239,7 +239,7 @@ protected function getDefaults($entity) { */ protected function getMandatory($entity) { if ($this->mandatory === NULL) { - $this->mandatory = self::parseMandatorySettings(\CRM_Utils_Array::value('civicrm_setting', $GLOBALS)); + $this->mandatory = self::parseMandatorySettings($GLOBALS['civicrm_setting'] ?? NULL); } return $this->mandatory[$entity]; } diff --git a/Civi/Core/SettingsMetadata.php b/Civi/Core/SettingsMetadata.php index 00b8f034f0eb..4f31a8a53b3d 100644 --- a/Civi/Core/SettingsMetadata.php +++ b/Civi/Core/SettingsMetadata.php @@ -155,7 +155,7 @@ protected static function fillOptions(&$settingSpec, $optionsFormat) { // but it's tightly coupled to DAO/field. However, if you really need to support // more pseudoconstant types, then probably best to refactor it. For now, KISS. if (!empty($pseudoconstant['optionGroupName'])) { - $keyColumn = \CRM_Utils_Array::value('keyColumn', $pseudoconstant, 'value'); + $keyColumn = $pseudoconstant['keyColumn'] ?? 'value'; if (is_array($optionsFormat)) { $optionValues = \CRM_Core_OptionValue::getValues(['name' => $pseudoconstant['optionGroupName']]); foreach ($optionValues as $option) { diff --git a/Civi/Managed/MultisiteManaged.php b/Civi/Managed/MultisiteManaged.php new file mode 100644 index 000000000000..12e8dd8f6d97 --- /dev/null +++ b/Civi/Managed/MultisiteManaged.php @@ -0,0 +1,107 @@ + ['generateDomainEntities', -1000], + ]; + } + + /** + * @implements \CRM_Utils_Hook::managed() + * @param array $managedRecords + */ + public function generateDomainEntities(array &$managedRecords): void { + $multisiteEnabled = Setting::get(FALSE) + ->addSelect('is_enabled') + ->execute()->first(); + if (empty($multisiteEnabled['value'])) { + return; + } + + // array_splice needs array keys to be orderly + $managedRecords = array_values($managedRecords); + // Replace every single-domain record with one record per domain + // Walk the array in reverse order so the keys being processed remain stable even as the length changes. + foreach (array_reverse(array_keys($managedRecords)) as $index) { + if ($this->isCopiable($managedRecords[$index])) { + array_splice($managedRecords, $index, 1, $this->makeCopies($managedRecords[$index])); + } + } + } + + protected function makeCopies(array $managedRecord): array { + $copies = []; + foreach ($this->getDomains() as $index => $domainId) { + $copy = $managedRecord; + // For a smoother transition between enabling/disabling multisite, don't rename the first copy + if ($index) { + $copy['name'] .= '_' . $domainId; + } + $copy['params']['values']['domain_id'] = $domainId; + $copies[] = $copy; + } + return $copies; + } + + /** + * Check if a managed record is an APIv4 Entity that should exist on all domains. + * + * Follows the same logic for determining an entity belongs on multiple domains as `FieldDomainIdSpecProvider` + * @see \Civi\Api4\Service\Spec\Provider\FieldDomainIdSpecProvider + * + * @param array $managedRecord + * @return bool + */ + protected function isCopiable(array $managedRecord): bool { + if ($managedRecord['params']['version'] != 4) { + return FALSE; + } + // Extra guard so that clever extensions (which multiply entities themselves) don't get entities-squared. + if (is_numeric($managedRecord['params']['values']['domain_id'] ?? NULL) || !empty($managedRecord['params']['values']['domain_id.name'])) { + \CRM_Core_Error::deprecatedWarning(sprintf('Module "%s" has self-multiplied managed entity "%s" across domains. This is deprecated.', $managedRecord['module'], $managedRecord['name'])); + return FALSE; + } + if (!isset($this->entities[$managedRecord['entity']])) { + try { + $this->entities[$managedRecord['entity']] = (bool) civicrm_api4($managedRecord['entity'], 'getFields', [ + 'checkPermissions' => FALSE, + 'action' => 'create', + 'where' => [ + ['name', '=', 'domain_id'], + ['default_value', '=', 'current_domain'], + ], + ])->count(); + } + catch (\CRM_Core_Exception $e) { + $this->entities[$managedRecord['entity']] = FALSE; + } + } + return $this->entities[$managedRecord['entity']]; + } + + private function getDomains(): array { + if (!isset($this->domains)) { + $this->domains = Domain::get(FALSE)->addSelect('id')->addOrderBy('id')->execute()->column('id'); + } + return $this->domains; + } + +} diff --git a/Civi/Test.php b/Civi/Test.php index f5e09b274008..5968f86031c6 100644 --- a/Civi/Test.php +++ b/Civi/Test.php @@ -125,7 +125,7 @@ public static function headless() { ->callback(function ($ctx) { \Civi\Test::data()->populate(); }, 'populate'); - $builder->install(['org.civicrm.search_kit']); + $builder->install(['org.civicrm.search_kit', 'org.civicrm.afform', 'authx']); return $builder; } diff --git a/Civi/Test/Api3TestTrait.php b/Civi/Test/Api3TestTrait.php index d12f912bdb21..d68b04de1175 100644 --- a/Civi/Test/Api3TestTrait.php +++ b/Civi/Test/Api3TestTrait.php @@ -125,7 +125,7 @@ public function assertAPISuccess($apiResult, $prefix = '') { * @param null $extraOutput * @return array|int */ - public function callAPIFailure($entity, $action, $params, $expectedErrorMessage = NULL, $extraOutput = NULL) { + public function callAPIFailure($entity, $action, $params = [], $expectedErrorMessage = NULL, $extraOutput = NULL) { if (is_array($params)) { $params += [ 'version' => $this->_apiversion, diff --git a/Civi/Test/Api4TestTrait.php b/Civi/Test/Api4TestTrait.php index b78e81c7b298..80ae3c6ecfc7 100644 --- a/Civi/Test/Api4TestTrait.php +++ b/Civi/Test/Api4TestTrait.php @@ -130,9 +130,9 @@ protected function getRequiredValuesToCreate(string $entity, array $values = []) foreach ($requiredFields as $fieldName => $field) { if ( !isset($values[$fieldName]) && - ($field['required'] || AbstractAction::evaluateCondition($field['required_if'], $values + $extraValues)) + ($field['required'] || AbstractAction::evaluateCondition($field['required_if'], ['values' => $values + $extraValues])) ) { - $extraValues[$fieldName] = $this->getRequiredValue($field, $requiredFields); + $extraValues[$fieldName] = $this->getRequiredValue($field); } } diff --git a/Civi/Test/ContributionPageTestTrait.php b/Civi/Test/ContributionPageTestTrait.php new file mode 100644 index 000000000000..d20bc0863fb2 --- /dev/null +++ b/Civi/Test/ContributionPageTestTrait.php @@ -0,0 +1,113 @@ + 'Test Frontend title', + 'title' => 'Page Title', + 'name' => 'default_page', + 'financial_type_id:name' => 'Donation', + 'is_email_receipt' => TRUE, + 'is_pay_later' => $contributionPageValues['is_monetary'] ?: FALSE, + 'pay_later_text' => 'Send Money Now', + ]; + $contributionPageValues += $contributionPageDefaults; + return $this->createTestEntity('ContributionPage', $contributionPageValues, $identifier); + } + + /** + * @param array $contributionPageValues + * @param array $priceSetParameters + * Currently if 'id' is passed in then no update is made, but this could change + * @param string $identifier + * + * @return array + */ + public function contributionPageCreatePaid(array $contributionPageValues, array $priceSetParameters = [], string $identifier = 'ContributionPage'): array { + $contributionPageValues['is_monetary'] = TRUE; + $contributionPageResult = $this->contributionPageCreate($contributionPageValues, $identifier); + $priceSetParameters += [ + 'title' => 'Price Set', + 'is_quick_config' => TRUE, + 'extends' => 'CiviContribute', + 'financial_type_id:name' => 'Donation', + 'name' => $identifier, + ]; + if (empty($priceSetParameters['id'])) { + $this->createTestEntity('PriceSet', $priceSetParameters, $identifier); + } + else { + $this->ids['PriceSet'][$identifier] = $priceSetParameters['id']; + // Maybe do update here?? + } + $this->createTestEntity('PriceSetEntity', [ + 'entity_table' => 'civicrm_contribution_page', + 'entity_id' => $contributionPageResult['id'], + 'price_set_id' => $this->ids['PriceSet'][$identifier], + ]); + return $contributionPageResult; + } + + /** + * Get the id of the contribution page created in set up. + * + * If only one has been created it will be selected. Otherwise + * you should pass in the appropriate identifier. + * + * @param string $identifier + * + * @return int + */ + protected function getContributionPageID(string $identifier = 'ContributionPage'): int { + if (isset($this->ids['ContributionPage'][$identifier])) { + return $this->ids['ContributionPage'][$identifier]; + } + if (count($this->ids['ContributionPage']) === 1) { + return reset($this->ids['ContributionPage']); + } + $this->fail('Could not identify ContributionPage ID'); + // Unreachable but reduces IDE noise. + return 0; + } + +} diff --git a/Civi/Test/EventTestTrait.php b/Civi/Test/EventTestTrait.php index c494e9470752..61629d21d5f5 100644 --- a/Civi/Test/EventTestTrait.php +++ b/Civi/Test/EventTestTrait.php @@ -22,10 +22,6 @@ /** * Helper for event tests. * - * WARNING - this trait ships with core from 5.63 but I wasn't able to resolve - * all the core tests onto it for 5.63 - hence the signatures may not yet be stable - * and it is worth assuming that they will not be stable until 5.65. - * * This provides functions to set up valid events * for unit tests. * diff --git a/Civi/Test/FormTrait.php b/Civi/Test/FormTrait.php index 799a586a2b9c..a194768c1563 100644 --- a/Civi/Test/FormTrait.php +++ b/Civi/Test/FormTrait.php @@ -19,6 +19,11 @@ */ trait FormTrait { + /** + * @var \Civi\Test\FormWrapper + */ + private $form; + /** * @param $formName * @param $submittedValues @@ -27,13 +32,65 @@ trait FormTrait { * @return \Civi\Test\FormWrapper */ public function getTestForm($formName, $submittedValues, array $urlParameters = []) { + $this->form = NULL; if ($formName === 'CRM_Event_Form_Participant') { - return new EventFormParticipant($formName, $submittedValues, $urlParameters); + $this->form = new EventFormParticipant($formName, $submittedValues, $urlParameters); } if ($formName === 'CRM_Event_Form_Registration_Register') { - return new EventFormOnline($formName, $submittedValues, $urlParameters); + $this->form = new EventFormOnline($formName, $submittedValues, $urlParameters); + } + if (!$this->form) { + $this->form = new FormWrapper($formName, $submittedValues, $urlParameters); + } + return $this->form; + } + + /** + * Assert that the sent mail included the supplied strings. + * + * @param array $strings + * @param int $mailIndex + */ + protected function assertMailSentContainingStrings(array $strings, int $mailIndex = 0): void { + foreach ($strings as $string) { + $this->assertMailSentContainingString($string, $mailIndex); } - return new FormWrapper($formName, $submittedValues, $urlParameters); + } + + /** + * Assert that the sent mail included the supplied string. + * + * @param string $string + * @param int $mailIndex + */ + protected function assertMailSentContainingString(string $string, int $mailIndex = 0): void { + $mail = $this->form->getMail()[$mailIndex]; + $this->assertStringContainsString($string, $mail['body']); + } + + /** + * Assert that the sent mail included the supplied strings. + * + * @param array $recipients + * @param int $mailIndex + */ + protected function assertMailSentTo(array $recipients, int $mailIndex = 0): void { + $mail = $this->form->getMail()[$mailIndex]; + foreach ($recipients as $string) { + $this->assertStringContainsString($string, $mail['headers']); + } + } + + /** + * Retrieve a deprecated property, ensuring a deprecation notice is thrown. + * + * @param string $property + * + * @return mixed + * @throws \CRM_Core_Exception + */ + protected function getDeprecatedProperty(string $property) { + return $this->form->getDeprecatedProperty($property); } } diff --git a/Civi/Test/FormWrapper.php b/Civi/Test/FormWrapper.php index 737ebb9389dd..e20b031061e8 100644 --- a/Civi/Test/FormWrapper.php +++ b/Civi/Test/FormWrapper.php @@ -50,10 +50,26 @@ public function getFirstMail(): array { return $this->mail ? (array) reset($this->mail) : []; } + /** + * Get the number of emails sent. + * + * @return int + */ + public function getMailCount(): int { + return count((array) $this->mail); + } + public function getFirstMailBody() : string { return $this->getFirstMail()['body'] ?? ''; } + /** + * @return array + */ + public function getTemplateVariables(): array { + return $this->templateVariables; + } + private $redirects; private $mailSpoolID; @@ -103,6 +119,7 @@ public function processForm(int $state = self::SUBMITTED): self { if ($state > self::VALIDATED) { $this->postProcess(); } + $this->templateVariables = $this->form->get_template_vars(); return $this; } @@ -182,7 +199,7 @@ private function setFormObject(string $class, array $formValues = [], array $url $_POST = $formValues; $this->form = new $class(); $_SERVER['REQUEST_METHOD'] = 'GET'; - $_REQUEST += $urlParameters; + $_REQUEST = array_merge($_REQUEST, $urlParameters); switch ($class) { case 'CRM_Event_Cart_Form_Checkout_Payment': case 'CRM_Event_Cart_Form_Checkout_ParticipantsAndPrices': @@ -339,4 +356,25 @@ private function stopTrackingMail(): void { \Civi::settings()->set('mailing_backend', $this->originalMailSetting); } + /** + * Retrieve a deprecated property, ensuring a deprecation notice is thrown. + * + * @param string $property + * + * @return mixed + * @throws \CRM_Core_Exception + */ + public function getDeprecatedProperty(string $property) { + try { + $this->form->$property; + } + catch (\Exception $e) { + $oldErrorLevel = error_reporting(0); + $value = $this->form->$property; + error_reporting($oldErrorLevel); + return $value; + } + throw new \CRM_Core_Exception('Deprecation should have been triggered'); + } + } diff --git a/Civi/Test/HttpTestTrait.php b/Civi/Test/HttpTestTrait.php index e3384ecbec2a..e74ccd424192 100644 --- a/Civi/Test/HttpTestTrait.php +++ b/Civi/Test/HttpTestTrait.php @@ -75,7 +75,7 @@ protected function createGuzzle($options = []) { * @return mixed */ protected function callApi4AjaxSuccess(string $entity, string $action, $params = []) { - $method = \CRM_Utils_String::startsWith($action, 'get') ? 'GET' : 'POST'; + $method = str_starts_with($action, 'get') ? 'GET' : 'POST'; $response = $this->createGuzzle()->request($method, "civicrm/ajax/api4/$entity/$action", [ 'headers' => ['X-Requested-With' => 'XMLHttpRequest'], // This should probably be 'form_params', but 'query' is more representative of frontend. @@ -99,7 +99,7 @@ protected function callApi4AjaxSuccess(string $entity, string $action, $params = * @return mixed */ protected function callApi4AjaxError(string $entity, string $action, $params = []) { - $method = \CRM_Utils_String::startsWith($action, 'get') ? 'GET' : 'POST'; + $method = str_starts_with($action, 'get') ? 'GET' : 'POST'; $response = $this->createGuzzle()->request($method, "civicrm/ajax/api4/$entity/$action", [ 'headers' => ['X-Requested-With' => 'XMLHttpRequest'], // This should probably be 'form_params', but 'query' is more representative of frontend. diff --git a/Civi/Token/TokenRow.php b/Civi/Token/TokenRow.php index 0379febff258..953154a2fc97 100644 --- a/Civi/Token/TokenRow.php +++ b/Civi/Token/TokenRow.php @@ -187,7 +187,7 @@ public function customToken($entity, $customFieldID, $entityID) { 'return' => $customFieldName, 'id' => $entityID, ]); - $fieldValue = \CRM_Utils_Array::value($customFieldName, $record, ''); + $fieldValue = $record[$customFieldName] ?? ''; $originalValue = $fieldValue; // format the raw custom field value into proper display value if (isset($fieldValue)) { @@ -281,7 +281,7 @@ public function fill($format = NULL) { if ($entity == 'activity' && $field == 'details') { $htmlTokens[$entity][$field] = $value; } - elseif (\CRM_Utils_Array::value('data_type', \CRM_Utils_Array::value($field, $entityFields['values'])) == 'Memo') { + elseif (($entityFields['values'][$field]['data_type'] ?? NULL) === 'Memo') { // Memo fields aka custom fields of type Note are html. $htmlTokens[$entity][$field] = \CRM_Utils_String::purifyHTML($value); } diff --git a/Civi/WorkflowMessage/Traits/CustomFieldTrait.php b/Civi/WorkflowMessage/Traits/CustomFieldTrait.php new file mode 100644 index 000000000000..af794d492d81 --- /dev/null +++ b/Civi/WorkflowMessage/Traits/CustomFieldTrait.php @@ -0,0 +1,67 @@ +getFilteredCustomFields($entity, $filters); + + $fields = []; + foreach ($viewableFields as $fieldSpec) { + $fieldName = $fieldSpec['custom_group_id.name'] . '.' . $fieldSpec['name']; + $value = str_replace(' ', '', \CRM_Core_BAO_CustomField::displayValue($entityRecord[$fieldName], $fieldSpec['id'], $entityRecord['id'])); + // I can't see evidence we have filtered out empty strings here historically + // but maybe we should? + $fields[$fieldSpec['custom_group_id.title']][$fieldSpec['label']] = $value; + } + return $fields; + } + +} diff --git a/ang/afform/afsearchNoteComments.aff.html b/ang/afform/afsearchNoteComments.aff.html new file mode 100644 index 000000000000..69d333efcae2 --- /dev/null +++ b/ang/afform/afsearchNoteComments.aff.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/ang/afform/afsearchNoteComments.aff.php b/ang/afform/afsearchNoteComments.aff.php new file mode 100644 index 000000000000..eb4788c32c1e --- /dev/null +++ b/ang/afform/afsearchNoteComments.aff.php @@ -0,0 +1,13 @@ + 'search', + 'title' => ts('Comments'), + 'icon' => 'fa-list-alt', + 'server_route' => 'civicrm/contact/view/note/comments', + 'permission' => [ + 'access CiviCRM', + 'view all notes', + ], + 'permission_operator' => 'OR', +]; diff --git a/ang/afform/afsearchTabNote.aff.html b/ang/afform/afsearchTabNote.aff.html new file mode 100644 index 000000000000..626cea7f6b1b --- /dev/null +++ b/ang/afform/afsearchTabNote.aff.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/ang/afform/afsearchTabNote.aff.php b/ang/afform/afsearchTabNote.aff.php new file mode 100644 index 000000000000..c2a99ba08fd5 --- /dev/null +++ b/ang/afform/afsearchTabNote.aff.php @@ -0,0 +1,16 @@ + 'search', + 'title' => ts('Notes'), + 'description' => '', + 'placement' => ['contact_summary_tab'], + 'summary_weight' => 100, + 'icon' => 'fa-sticky-note-o', + 'summary_contact_type' => NULL, + 'permission' => [ + 'access CiviCRM', + ], + 'permission_operator' => 'AND', + 'navigation' => NULL, +]; diff --git a/ang/afform/afsearchTabRel.aff.html b/ang/afform/afsearchTabRel.aff.html new file mode 100644 index 000000000000..07fb4f4622d0 --- /dev/null +++ b/ang/afform/afsearchTabRel.aff.html @@ -0,0 +1,9 @@ +
+
+ {{:: ts('Permissioned Relationships:') }} + {{:: ts('This contact can be viewed by the other.') }} + {{:: ts('This contact can be viewed and edited by the other.') }} +
+ + +
diff --git a/ang/afform/afsearchTabRel.aff.php b/ang/afform/afsearchTabRel.aff.php new file mode 100644 index 000000000000..43af4f00df36 --- /dev/null +++ b/ang/afform/afsearchTabRel.aff.php @@ -0,0 +1,13 @@ + 'search', + 'title' => ts('Relationships'), + 'permission' => [ + 'access CiviCRM', + ], + 'placement' => ['contact_summary_tab'], + 'icon' => 'fa-handshake-o', + 'summary_weight' => 80, + 'permission_operator' => 'AND', +]; diff --git a/ang/crmMailing/EditUnsubGroupCtrl.js b/ang/crmMailing/EditUnsubGroupCtrl.js index 56070e03e644..587e0faeee4d 100644 --- a/ang/crmMailing/EditUnsubGroupCtrl.js +++ b/ang/crmMailing/EditUnsubGroupCtrl.js @@ -1,10 +1,12 @@ (function(angular, $, _) { - angular.module('crmMailing').controller('EditUnsubGroupCtrl', function EditUnsubGroupCtrl($scope) { + angular.module('crmMailing').controller('EditUnsubGroupCtrl', function EditUnsubGroupCtrl($scope, crmMailingLoader) { // CRM.crmMailing.groupNames is a global constant - since it doesn't change, we can digest & cache. var mandatoryIds = []; $scope.isUnsubGroupRequired = function isUnsubGroupRequired(mailing) { + crmMailingLoader.getGroupNames(mailing); + if (!_.isEmpty(CRM.crmMailing.groupNames)) { _.each(CRM.crmMailing.groupNames, function(grp) { if (grp.is_hidden == "1") { diff --git a/ang/crmMailing/ViewRecipCtrl.js b/ang/crmMailing/ViewRecipCtrl.js index 5d137ce6038f..05f546351239 100644 --- a/ang/crmMailing/ViewRecipCtrl.js +++ b/ang/crmMailing/ViewRecipCtrl.js @@ -1,81 +1,12 @@ (function(angular, $, _) { - angular.module('crmMailing').controller('ViewRecipCtrl', function ViewRecipCtrl($scope) { - var mids = []; - var gids = []; - var groupNames = []; - var mailings = []; - var civimailings = []; - var civimails = []; - - function getGroupNames(mailing) { - if (-1 == mailings.indexOf(mailing.id)) { - mailings.push(mailing.id); - _.each(mailing.recipients.groups.include, function(id) { - if (-1 == gids.indexOf(id)) { - gids.push(id); - } - }); - _.each(mailing.recipients.groups.exclude, function(id) { - if (-1 == gids.indexOf(id)) { - gids.push(id); - } - }); - _.each(mailing.recipients.groups.base, function(id) { - if (-1 == gids.indexOf(id)) { - gids.push(id); - } - }); - if (!_.isEmpty(gids)) { - CRM.api3('Group', 'get', {'id': {"IN": gids}}).then(function(result) { - _.each(result.values, function(grp) { - if (_.isEmpty(_.where(groupNames, {id: parseInt(grp.id)}))) { - groupNames.push({id: parseInt(grp.id), title: grp.title, is_hidden: grp.is_hidden}); - } - }); - CRM.crmMailing.groupNames = groupNames; - $scope.$parent.crmMailingConst.groupNames = groupNames; - }); - } - } - } - - function getCiviMails(mailing) { - if (-1 == civimailings.indexOf(mailing.id)) { - civimailings.push(mailing.id); - _.each(mailing.recipients.mailings.include, function(id) { - if (-1 == mids.indexOf(id)) { - mids.push(id); - } - }); - _.each(mailing.recipients.mailings.exclude, function(id) { - if (-1 == mids.indexOf(id)) { - mids.push(id); - } - }); - if (!_.isEmpty(mids)) { - CRM.api3('Mailing', 'get', {'id': {"IN": mids}}).then(function(result) { - _.each(result.values, function(mail) { - if (_.isEmpty(_.where(civimails, {id: parseInt(mail.id)}))) { - civimails.push({id: parseInt(mail.id), name: mail.name}); - } - }); - CRM.crmMailing.civiMails = civimails; - $scope.$parent.crmMailingConst.civiMails = civimails; - }); - } - } - } + angular.module('crmMailing').controller('ViewRecipCtrl', function ViewRecipCtrl($scope, crmMailingLoader) { $scope.getIncludesAsString = function(mailing) { var first = true; var names = ''; - if (_.isEmpty(CRM.crmMailing.groupNames)) { - getGroupNames(mailing); - } - if (_.isEmpty(CRM.crmMailing.civiMails)) { - getCiviMails(mailing); - } + crmMailingLoader.getGroupNames(mailing); + crmMailingLoader.getCiviMails(mailing); _.each(mailing.recipients.groups.include, function(id) { var group = _.where(CRM.crmMailing.groupNames, {id: parseInt(id)}); if (group.length) { diff --git a/ang/crmMailing/services.js b/ang/crmMailing/services.js index 6db1484af5a9..f72a12712f09 100644 --- a/ang/crmMailing/services.js +++ b/ang/crmMailing/services.js @@ -436,6 +436,79 @@ }; }); + // @deprecated This code was moved from ViewRecipCtrl and is quarantined in this service. + // It's used to fetch data that ought to be available in other ways. + // It would be nice to refactor it out completely. + angular.module('crmMailing').factory('crmMailingLoader', function ($q, crmApi, crmFromAddresses, crmQueue) { + + var mids = []; + var gids = []; + var groupNames = []; + var mailings = []; + var civimailings = []; + var civimails = []; + + return { + // Populates the CRM.crmMailing.groupNames global + getGroupNames: function(mailing) { + if (-1 == mailings.indexOf(mailing.id)) { + mailings.push(mailing.id); + _.each(mailing.recipients.groups.include, function(id) { + if (-1 == gids.indexOf(id)) { + gids.push(id); + } + }); + _.each(mailing.recipients.groups.exclude, function(id) { + if (-1 == gids.indexOf(id)) { + gids.push(id); + } + }); + _.each(mailing.recipients.groups.base, function(id) { + if (-1 == gids.indexOf(id)) { + gids.push(id); + } + }); + if (!_.isEmpty(gids)) { + CRM.api3('Group', 'get', {'id': {"IN": gids}}).then(function(result) { + _.each(result.values, function(grp) { + if (_.isEmpty(_.where(groupNames, {id: parseInt(grp.id)}))) { + groupNames.push({id: parseInt(grp.id), title: grp.title, is_hidden: grp.is_hidden}); + } + }); + CRM.crmMailing.groupNames = groupNames; + }); + } + } + }, + // Populates the CRM.crmMailing.civiMails global + getCiviMails: function(mailing) { + if (-1 == civimailings.indexOf(mailing.id)) { + civimailings.push(mailing.id); + _.each(mailing.recipients.mailings.include, function(id) { + if (-1 == mids.indexOf(id)) { + mids.push(id); + } + }); + _.each(mailing.recipients.mailings.exclude, function(id) { + if (-1 == mids.indexOf(id)) { + mids.push(id); + } + }); + if (!_.isEmpty(mids)) { + CRM.api3('Mailing', 'get', {'id': {"IN": mids}}).then(function(result) { + _.each(result.values, function(mail) { + if (_.isEmpty(_.where(civimails, {id: parseInt(mail.id)}))) { + civimails.push({id: parseInt(mail.id), name: mail.name}); + } + }); + CRM.crmMailing.civiMails = civimails; + }); + } + } + } + }; + }); + // The preview manager performs preview actions while putting up a visible UI (e.g. dialogs & status alerts) angular.module('crmMailing').factory('crmMailingPreviewMgr', function (dialogService, crmMailingMgr, crmStatus) { return { diff --git a/api/api.php b/api/api.php index 42ebc7e36d35..bc307f1596e4 100644 --- a/api/api.php +++ b/api/api.php @@ -135,7 +135,7 @@ function civicrm_api3(string $entity, string $action, array $params = []) { $params['version'] = 3; $result = \Civi::service('civi_api_kernel')->runSafe($entity, $action, $params); if (is_array($result) && !empty($result['is_error'])) { - throw new CRM_Core_Exception($result['error_message'], CRM_Utils_Array::value('error_code', $result, 'undefined'), $result); + throw new CRM_Core_Exception($result['error_message'], $result['error_code'] ?? 'undefined', $result); } return $result; } diff --git a/api/v3/Activity.php b/api/v3/Activity.php index 415f59876d88..0c4f19e5b93e 100644 --- a/api/v3/Activity.php +++ b/api/v3/Activity.php @@ -511,7 +511,7 @@ function _civicrm_api3_activity_get_formatResult($params, $activities, $options) if (!empty($returnProperties) || !empty($params['contact_id'])) { foreach ($activities as $activityId => $values) { //@todo - should possibly load activity type id if not loaded (update with id) - _civicrm_api3_custom_data_get($activities[$activityId], CRM_Utils_Array::value('check_permissions', $params), 'Activity', $activityId, NULL, CRM_Utils_Array::value('activity_type_id', $values)); + _civicrm_api3_custom_data_get($activities[$activityId], $params['check_permissions'] ?? NULL, 'Activity', $activityId, NULL, $values['activity_type_id'] ?? NULL); } } return $activities; diff --git a/api/v3/Attachment.php b/api/v3/Attachment.php index 5e16486707cb..2b7f12dcca0d 100644 --- a/api/v3/Attachment.php +++ b/api/v3/Attachment.php @@ -207,9 +207,9 @@ function _civicrm_api3_attachment_delete_spec(&$spec) { $spec['entity_table'] = $entityFileFields['entity_table']; // Historically this field had no pseudoconstant and APIv3 can't handle it $spec['entity_table']['pseudoconstant'] = NULL; - $spec['entity_table']['title'] = CRM_Utils_Array::value('title', $spec['entity_table'], 'Entity Table') . ' (write-once)'; + $spec['entity_table']['title'] = ($spec['entity_table']['title'] ?? 'Entity Table') . ' (write-once)'; $spec['entity_id'] = $entityFileFields['entity_id']; - $spec['entity_id']['title'] = CRM_Utils_Array::value('title', $spec['entity_id'], 'Entity ID') . ' (write-once)'; + $spec['entity_id']['title'] = ($spec['entity_id']['title'] ?? 'Entity ID') . ' (write-once)'; } /** @@ -469,10 +469,10 @@ function _civicrm_api3_attachment_getfields() { // Historically this field had no pseudoconstant and APIv3 can't handle it $spec['entity_table']['pseudoconstant'] = NULL; // Would be hard to securely handle changes. - $spec['entity_table']['title'] = CRM_Utils_Array::value('title', $spec['entity_table'], 'Entity Table') . ' (write-once)'; + $spec['entity_table']['title'] = ($spec['entity_table']['title'] ?? 'Entity Table') . ' (write-once)'; $spec['entity_id'] = $entityFileFields['entity_id']; // would be hard to securely handle changes - $spec['entity_id']['title'] = CRM_Utils_Array::value('title', $spec['entity_id'], 'Entity ID') . ' (write-once)'; + $spec['entity_id']['title'] = ($spec['entity_id']['title'] ?? 'Entity ID') . ' (write-once)'; $spec['url'] = [ 'title' => 'URL (read-only)', 'description' => 'URL for downloading the file (not searchable, expire-able)', diff --git a/api/v3/Case.php b/api/v3/Case.php index 51f021cee6db..533ab0c90c76 100644 --- a/api/v3/Case.php +++ b/api/v3/Case.php @@ -571,7 +571,7 @@ function civicrm_api3_case_delete($params) { //check parameters civicrm_api3_verify_mandatory($params, NULL, ['id']); - if (CRM_Case_BAO_Case::deleteCase($params['id'], CRM_Utils_Array::value('move_to_trash', $params, FALSE))) { + if (CRM_Case_BAO_Case::deleteCase($params['id'], $params['move_to_trash'] ?? FALSE)) { return civicrm_api3_create_success($params, $params, 'Case', 'delete'); } else { diff --git a/api/v3/Contact.php b/api/v3/Contact.php index d3e35192ef12..747b62f07e2a 100644 --- a/api/v3/Contact.php +++ b/api/v3/Contact.php @@ -35,7 +35,7 @@ * @throws \CRM_Core_Exception */ function civicrm_api3_contact_create($params) { - $contactID = CRM_Utils_Array::value('contact_id', $params, CRM_Utils_Array::value('id', $params)); + $contactID = CRM_Utils_Array::value('contact_id', $params, $params['id'] ?? NULL); if ($contactID && !empty($params['check_permissions']) && !CRM_Contact_BAO_Contact_Permission::allow($contactID, CRM_Core_Permission::EDIT)) { throw new \Civi\API\Exception\UnauthorizedException('Permission denied to modify contact record'); @@ -55,13 +55,14 @@ function civicrm_api3_contact_create($params) { if (!$contactID) { // If we get here, we're ready to create a new contact - if (($email = CRM_Utils_Array::value('email', $params)) && !is_array($params['email'])) { + $email = $params['email'] ?? NULL; + if ($email && !is_array($params['email'])) { $defLocType = CRM_Core_BAO_LocationType::getDefault(); $params['email'] = [ 1 => [ 'email' => $email, 'is_primary' => 1, - 'location_type_id' => ($defLocType->id) ? $defLocType->id : 1, + 'location_type_id' => $defLocType->id ?: 1, ], ]; } @@ -471,8 +472,7 @@ function civicrm_api3_contact_delete($params) { if ($skipUndelete && CRM_Financial_BAO_FinancialItem::checkContactPresent([$contactID], $error)) { throw new CRM_Core_Exception($error['_qf_default']); } - if (CRM_Contact_BAO_Contact::deleteContact($contactID, $restore, $skipUndelete, - CRM_Utils_Array::value('check_permissions', $params))) { + if (CRM_Contact_BAO_Contact::deleteContact($contactID, $restore, $skipUndelete, $params['check_permissions'] ?? FALSE)) { return civicrm_api3_create_success(); } throw new CRM_Core_Exception('Could not delete contact'); @@ -763,7 +763,7 @@ function civicrm_api3_contact_merge($params) { [], $params['mode'], FALSE, - CRM_Utils_Array::value('check_permissions', $params) + $params['check_permissions'] ?? FALSE )) != FALSE) { return civicrm_api3_create_success($result, $params); @@ -1204,9 +1204,9 @@ function civicrm_api3_contact_duplicatecheck($params) { $params['match'], $params['match']['contact_type'], $params['rule_type'] ?? '', - CRM_Utils_Array::value('exclude', $params, []), - CRM_Utils_Array::value('check_permissions', $params), - CRM_Utils_Array::value('dedupe_rule_id', $params) + $params['exclude'] ?? [], + $params['check_permissions'] ?? FALSE, + $params['dedupe_rule_id'] ?? NULL ); $values = []; if ($dupes && !empty($params['return'])) { diff --git a/api/v3/CustomGroup.php b/api/v3/CustomGroup.php index 55d5f51774ed..6eaf8f60186b 100644 --- a/api/v3/CustomGroup.php +++ b/api/v3/CustomGroup.php @@ -16,19 +16,17 @@ */ /** - * Create or modify a custom field group. + * This entire function consists of legacy handling, probably for a form that no longer exists. + * APIv3 is where code like this goes to die... * * @param array $params * For legacy reasons, 'extends' can be passed as an array (for setting Participant column_value) * * @return array - * @todo $params['extends'] is array format - is that std compatible */ function civicrm_api3_custom_group_create($params) { if (isset($params['extends']) && is_string($params['extends'])) { - $extends = explode(",", $params['extends']); - unset($params['extends']); - $params['extends'] = $extends; + $params['extends'] = explode(',', $params['extends']); } if (!isset($params['id']) && (!isset($params['extends'][0]) || !trim($params['extends'][0]))) { diff --git a/api/v3/CustomValue.php b/api/v3/CustomValue.php index f2b7fb31945f..40feb5c6d557 100644 --- a/api/v3/CustomValue.php +++ b/api/v3/CustomValue.php @@ -120,7 +120,7 @@ function civicrm_api3_custom_value_get($params) { $getParams = [ 'entityID' => $params['entity_id'], - 'entityType' => CRM_Utils_Array::value('entity_table', $params, ''), + 'entityType' => $params['entity_table'] ?? '', ]; if (strstr($getParams['entityType'], 'civicrm_')) { $getParams['entityType'] = ucfirst(substr($getParams['entityType'], 8)); diff --git a/api/v3/Cxn.php b/api/v3/Cxn.php index 8c81f3c3944e..d306d2461552 100644 --- a/api/v3/Cxn.php +++ b/api/v3/Cxn.php @@ -123,7 +123,7 @@ function civicrm_api3_cxn_unregister($params) { /** @var \Civi\Cxn\Rpc\RegistrationClient $client */ $client = \Civi::service('cxn_reg_client'); - list($cxnId, $result) = $client->unregister($appMeta, CRM_Utils_Array::value('force', $params, FALSE)); + [$cxnId, $result] = $client->unregister($appMeta, $params['force'] ?? FALSE); return $result; } diff --git a/api/v3/Dedupe.php b/api/v3/Dedupe.php index c83a3c46cc93..bc070d81706a 100644 --- a/api/v3/Dedupe.php +++ b/api/v3/Dedupe.php @@ -89,10 +89,10 @@ function civicrm_api3_dedupe_create($params) { function civicrm_api3_dedupe_getstatistics($params) { $stats = CRM_Dedupe_Merger::getMergeStats(CRM_Dedupe_Merger::getMergeCacheKeyString( $params['rule_group_id'], - CRM_Utils_Array::value('group_id', $params), - CRM_Utils_Array::value('criteria', $params, []), + $params['group_id'] ?? NULL, + $params['criteria'] ?? [], !empty($params['check_permissions']), - CRM_Utils_Array::value('search_limit', $params, 0) + $params['search_limit'] ?? 0 )); return civicrm_api3_create_success($stats); } @@ -139,7 +139,7 @@ function _civicrm_api3_dedupe_getstatistics_spec(&$params) { */ function civicrm_api3_dedupe_getduplicates($params) { $options = _civicrm_api3_get_options_from_params($params); - $dupePairs = CRM_Dedupe_Merger::getDuplicatePairs($params['rule_group_id'], NULL, TRUE, $options['limit'], FALSE, TRUE, $params['criteria'], CRM_Utils_Array::value('check_permissions', $params), CRM_Utils_Array::value('search_limit', $params, 0), CRM_Utils_Array::value('is_force_new_search', $params)); + $dupePairs = CRM_Dedupe_Merger::getDuplicatePairs($params['rule_group_id'], NULL, TRUE, $options['limit'], FALSE, TRUE, $params['criteria'], $params['check_permissions'] ?? FALSE, $params['search_limit'] ?? 0, $params['is_force_new_search'] ?? 0); return civicrm_api3_create_success($dupePairs); } diff --git a/api/v3/EntityTag.php b/api/v3/EntityTag.php index cfc212a32800..d50c1e35ccb2 100644 --- a/api/v3/EntityTag.php +++ b/api/v3/EntityTag.php @@ -123,8 +123,7 @@ function _civicrm_api3_entity_tag_common($params, $op = 'add') { if ($op == 'add') { $values['total_count'] = $values['added'] = $values['not_added'] = 0; foreach ($tagIDs as $tagID) { - list($te, $a, $na) = CRM_Core_BAO_EntityTag::addEntitiesToTag($entityIDs, $tagID, $entityTable, - CRM_Utils_Array::value('check_permissions', $params)); + list($te, $a, $na) = CRM_Core_BAO_EntityTag::addEntitiesToTag($entityIDs, $tagID, $entityTable, $params['check_permissions'] ?? FALSE); $values['total_count'] += $te; $values['added'] += $a; $values['not_added'] += $na; @@ -133,7 +132,7 @@ function _civicrm_api3_entity_tag_common($params, $op = 'add') { else { $values['total_count'] = $values['removed'] = $values['not_removed'] = 0; foreach ($tagIDs as $tagID) { - list($te, $r, $nr) = CRM_Core_BAO_EntityTag::removeEntitiesFromTag($entityIDs, $tagID, $entityTable, CRM_Utils_Array::value('check_permissions', $params)); + list($te, $r, $nr) = CRM_Core_BAO_EntityTag::removeEntitiesFromTag($entityIDs, $tagID, $entityTable, $params['check_permissions'] ?? FALSE); $values['total_count'] += $te; $values['removed'] += $r; $values['not_removed'] += $nr; diff --git a/api/v3/Extension.php b/api/v3/Extension.php index d70fb5a050e6..278161213613 100644 --- a/api/v3/Extension.php +++ b/api/v3/Extension.php @@ -210,6 +210,7 @@ function _civicrm_api3_extension_uninstall_spec(&$fields) { * API result */ function civicrm_api3_extension_download($params) { + $params += ['install' => TRUE]; if (!array_key_exists('url', $params)) { if (!CRM_Extension_System::singleton()->getBrowser()->isEnabled()) { throw new CRM_Core_Exception('Automatic downloading is disabled. Try adding parameter "url"'); @@ -241,7 +242,7 @@ function civicrm_api3_extension_download($params) { } CRM_Extension_System::singleton()->getCache()->flush(); CRM_Extension_System::singleton(TRUE); - if (CRM_Utils_Array::value('install', $params, TRUE)) { + if ($params['install']) { CRM_Extension_System::singleton()->getManager()->install([$params['key']]); } @@ -387,7 +388,7 @@ function civicrm_api3_extension_getremote($params) { $info = array_merge($info, (array) $obj); $result[] = $info; } - return _civicrm_api3_basic_array_get('Extension', $params, $result, 'id', CRM_Utils_Array::value('return', $params, [])); + return _civicrm_api3_basic_array_get('Extension', $params, $result, 'id', $params['return'] ?? []); } /** diff --git a/api/v3/Generic.php b/api/v3/Generic.php index 85b44c5bc3c4..46294f1067b4 100644 --- a/api/v3/Generic.php +++ b/api/v3/Generic.php @@ -60,11 +60,11 @@ function civicrm_api3_generic_getfields($apiRequest, $unique = TRUE) { } $entity = $apiRequest['entity']; $lowercase_entity = _civicrm_api_get_entity_name_from_camel($entity); - $subentity = $apiRequest['params']['contact_type'] ?? NULL; + $subentity = $apiRequest['params']['contact_type'] ?? NULL; $action = $apiRequest['params']['action'] ?? NULL; $sequential = empty($apiRequest['params']['sequential']) ? 0 : 1; - $apiRequest['params']['options'] = CRM_Utils_Array::value('options', $apiRequest['params'], []); - $optionsToResolve = (array) CRM_Utils_Array::value('get_options', $apiRequest['params']['options'], []); + $apiRequest['params']['options'] = $apiRequest['params']['options'] ?? []; + $optionsToResolve = (array) ($apiRequest['params']['options']['get_options'] ?? []); if (!$action || $action == 'getvalue' || $action == 'getcount') { $action = 'get'; @@ -477,7 +477,7 @@ function _civicrm_api3_generic_getoptions_spec(&$params, $apiRequest) { $params['field']['options'] = []; foreach ($fields['values'] as $name => $field) { if (isset($field['pseudoconstant']) || CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_BOOLEAN) { - $params['field']['options'][$name] = CRM_Utils_Array::value('title', $field, $name); + $params['field']['options'][$name] = $field['title'] ?? $name; } } } diff --git a/api/v3/Generic/Setvalue.php b/api/v3/Generic/Setvalue.php index 9445a2862a55..4e1f5082efd3 100644 --- a/api/v3/Generic/Setvalue.php +++ b/api/v3/Generic/Setvalue.php @@ -56,7 +56,7 @@ function civicrm_api3_generic_setValue($apiRequest) { } $def = $fields[$fieldKey]; - $title = CRM_Utils_Array::value('title', $def, ts('Field')); + $title = $def['title'] ?? ts('Field'); // Disallow empty values except for the number zero. // TODO: create a utility for this since it's needed in many places if (!empty($def['required']) || !empty($def['is_required'])) { diff --git a/api/v3/GroupContact.php b/api/v3/GroupContact.php index 1233cbff6c8c..6db637d70911 100644 --- a/api/v3/GroupContact.php +++ b/api/v3/GroupContact.php @@ -50,7 +50,7 @@ function civicrm_api3_group_contact_get($params) { //ie. id passed in so we have to return something return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params); } - $status = CRM_Utils_Array::value('status', $params, 'Added'); + $status = $params['status'] ?? 'Added'; $groupId = $params['group_id'] ?? NULL; $values = CRM_Contact_BAO_GroupContact::getContactGroup($params['contact_id'], $status, NULL, FALSE, TRUE, FALSE, TRUE, $groupId); @@ -217,8 +217,8 @@ function _civicrm_api3_group_contact_common($params, $op = 'Added') { } } - $method = CRM_Utils_Array::value('method', $params, 'API'); - $status = CRM_Utils_Array::value('status', $params, $op); + $method = $params['method'] ?? 'API'; + $status = $params['status'] ?? $op; $tracking = $params['tracking'] ?? NULL; if ($op == 'Added' || $op == 'Pending') { @@ -274,9 +274,9 @@ function civicrm_api3_group_contact_update_status($params) { CRM_Contact_BAO_GroupContact::addContactsToGroup( [$params['contact_id']], $params['group_id'], - CRM_Utils_Array::value('method', $params, 'API'), + $params['method'] ?? 'API', 'Added', - CRM_Utils_Array::value('tracking', $params) + $params['tracking'] ?? NULL ); return TRUE; diff --git a/api/v3/Job.php b/api/v3/Job.php index 0303bc29ccc5..6da5a3288107 100644 --- a/api/v3/Job.php +++ b/api/v3/Job.php @@ -535,11 +535,10 @@ function civicrm_api3_job_process_batch_merge($params) { 'options' => ['limit' => 1], ]); } - $rgid = $params['rgid'] ?? NULL; $gid = $params['gid'] ?? NULL; - $mode = CRM_Utils_Array::value('mode', $params, 'safe'); + $mode = $params['mode'] ?? 'safe'; - $result = CRM_Dedupe_Merger::batchMerge($rule_group_id, $gid, $mode, 1, 2, CRM_Utils_Array::value('criteria', $params, []), CRM_Utils_Array::value('check_permissions', $params), NULL, $params['search_limit']); + $result = CRM_Dedupe_Merger::batchMerge($rule_group_id, $gid, $mode, 1, 2, $params['criteria'] ?? [], $params['check_permissions'] ?? FALSE, NULL, $params['search_limit']); return civicrm_api3_create_success($result, $params); } @@ -622,15 +621,15 @@ function civicrm_api3_job_run_payment_cron($params) { * @return array */ function civicrm_api3_job_cleanup($params) { - $session = CRM_Utils_Array::value('session', $params, TRUE); - $tempTable = CRM_Utils_Array::value('tempTables', $params, TRUE); - $jobLog = CRM_Utils_Array::value('jobLog', $params, TRUE); - $expired = CRM_Utils_Array::value('expiredDbCache', $params, TRUE); - $prevNext = CRM_Utils_Array::value('prevNext', $params, TRUE); - $dbCache = CRM_Utils_Array::value('dbCache', $params, FALSE); - $memCache = CRM_Utils_Array::value('memCache', $params, FALSE); - $tplCache = CRM_Utils_Array::value('tplCache', $params, FALSE); - $wordRplc = CRM_Utils_Array::value('wordRplc', $params, FALSE); + $session = $params['session'] ?? TRUE; + $tempTable = $params['tempTables'] ?? TRUE; + $jobLog = $params['jobLog'] ?? TRUE; + $expired = $params['expiredDbCache'] ?? TRUE; + $prevNext = $params['prevNext'] ?? TRUE; + $dbCache = $params['dbCache'] ?? FALSE; + $memCache = $params['memCache'] ?? FALSE; + $tplCache = $params['tplCache'] ?? FALSE; + $wordRplc = $params['wordRplc'] ?? FALSE; if ($session || $tempTable || $prevNext || $expired) { CRM_Core_BAO_Cache::cleanup($session, $tempTable, $prevNext, $expired); diff --git a/api/v3/LocBlock.php b/api/v3/LocBlock.php index b8c1a2d6c62c..84cbb2237571 100644 --- a/api/v3/LocBlock.php +++ b/api/v3/LocBlock.php @@ -54,7 +54,7 @@ function civicrm_api3_loc_block_create($params) { } // Bother calling the api. else { - $info['contact_id'] = CRM_Utils_Array::value('contact_id', $info, 'null'); + $info['contact_id'] = $info['contact_id'] ?? 'null'; $result = civicrm_api3($item, 'create', $info); $entities[$key] = $result['values'][$result['id']]; $params[$key . '_id'] = $result['id']; diff --git a/api/v3/Logging.php b/api/v3/Logging.php index 1401abbb1710..69d75bfc103f 100644 --- a/api/v3/Logging.php +++ b/api/v3/Logging.php @@ -27,7 +27,7 @@ */ function civicrm_api3_logging_revert($params) { $schema = new CRM_Logging_Schema(); - $reverter = new CRM_Logging_Reverter($params['log_conn_id'], CRM_Utils_Array::value('log_date', $params)); + $reverter = new CRM_Logging_Reverter($params['log_conn_id'], $params['log_date'] ?? NULL); $tables = !empty($params['tables']) ? (array) $params['tables'] : $schema->getLogTablesForContact(); $reverter->calculateDiffsFromLogConnAndDate($tables); $reverter->revert(); @@ -79,7 +79,7 @@ function _civicrm_api3_logging_revert_spec(&$params) { function civicrm_api3_logging_get($params) { $schema = new CRM_Logging_Schema(); $interval = (empty($params['log_date'])) ? NULL : $params['interval']; - $differ = new CRM_Logging_Differ($params['log_conn_id'], CRM_Utils_Array::value('log_date', $params), $interval); + $differ = new CRM_Logging_Differ($params['log_conn_id'], $params['log_date'] ?? NULL, $interval); $tables = !empty($params['tables']) ? (array) $params['tables'] : $schema->getLogTablesForContact(); return civicrm_api3_create_success($differ->getAllChangesForConnection($tables)); } diff --git a/api/v3/Mailing.php b/api/v3/Mailing.php index 73f4172aee82..c26d6b02e56c 100644 --- a/api/v3/Mailing.php +++ b/api/v3/Mailing.php @@ -294,7 +294,7 @@ function civicrm_api3_mailing_submit($params) { if (isset($params['approval_date'])) { $updateParams['approval_date'] = $params['approval_date']; $updateParams['approver_id'] = CRM_Core_Session::getLoggedInContactID(); - $updateParams['approval_status_id'] = CRM_Utils_Array::value('approval_status_id', $updateParams, CRM_Core_OptionGroup::getDefaultValue('mail_approval_status')); + $updateParams['approval_status_id'] = $updateParams['approval_status_id'] ?? CRM_Core_OptionGroup::getDefaultValue('mail_approval_status'); } if (isset($params['approval_note'])) { $updateParams['approval_note'] = $params['approval_note']; @@ -663,8 +663,10 @@ function civicrm_api3_mailing_send_test($params) { civicrm_api3('MailingEventQueue', 'create', [ 'job_id' => $job['id'], + 'is_test' => TRUE, 'email_id' => $emailId, 'contact_id' => $contactId, + 'mailing_id' => $params['mailing_id'], ] ); } diff --git a/api/v3/Membership.php b/api/v3/Membership.php index 7cb21fee7da0..19588a01f1d1 100644 --- a/api/v3/Membership.php +++ b/api/v3/Membership.php @@ -95,10 +95,10 @@ function civicrm_api3_membership_create($params) { // This is a new membership, calculate the membership dates. $calcDates = CRM_Member_BAO_MembershipType::getDatesForMembershipType( $params['membership_type_id'], - CRM_Utils_Array::value('join_date', $params), - CRM_Utils_Array::value('start_date', $params), - CRM_Utils_Array::value('end_date', $params), - CRM_Utils_Array::value('num_terms', $params, 1) + $params['join_date'] ?? NULL, + $params['start_date'] ?? NULL, + $params['end_date'] ?? NULL, + $params['num_terms'] ?? 1 ); } else { @@ -108,7 +108,7 @@ function civicrm_api3_membership_create($params) { $calcDates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType( $params['id'], NULL, - CRM_Utils_Array::value('membership_type_id', $params), + $params['membership_type_id'] ?? NULL, $params['num_terms'] ); } @@ -212,7 +212,7 @@ function civicrm_api3_membership_get($params) { $activeOnly = $params['filters']['is_current']; unset($params['filters']['is_current']); } - $activeOnly = CRM_Utils_Array::value('active_only', $params, $activeOnly); + $activeOnly = $params['active_only'] ?? $activeOnly; if ($activeOnly && empty($params['status_id'])) { $params['status_id'] = ['IN' => CRM_Member_BAO_MembershipStatus::getMembershipStatusCurrent()]; } @@ -269,7 +269,7 @@ function _civicrm_api3_membership_relationsship_get_customv2behaviour(&$params, $membershipValues[$membershipId]['relationship_name'] = $relationshipType->name_a_b; } - _civicrm_api3_custom_data_get($membershipValues[$membershipId], CRM_Utils_Array::value('check_permissions', $params), 'Membership', $membershipId, NULL, $values['membership_type_id']); + _civicrm_api3_custom_data_get($membershipValues[$membershipId], $params['check_permissions'] ?? FALSE, 'Membership', $membershipId, NULL, $values['membership_type_id']); } $members = $membershipValues; diff --git a/api/v3/MembershipStatus.php b/api/v3/MembershipStatus.php index 064c2f7d1f7f..29d112651890 100644 --- a/api/v3/MembershipStatus.php +++ b/api/v3/MembershipStatus.php @@ -148,7 +148,7 @@ function civicrm_api3_membership_status_calc($membershipParams) { $dao = CRM_Core_DAO::executeQuery($query, $params); if ($dao->fetch()) { $membershipTypeID = empty($membershipParams['membership_type_id']) ? $dao->membership_type_id : $membershipParams['membership_type_id']; - $result = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dao->start_date, $dao->end_date, $dao->join_date, 'now', CRM_Utils_Array::value('ignore_admin_only', $membershipParams), $membershipTypeID, $membershipParams); + $result = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dao->start_date, $dao->end_date, $dao->join_date, 'now', $membershipParams['ignore_admin_only'] ?? FALSE, $membershipTypeID, $membershipParams); //make is error zero only when valid status found. if (!empty($result['id'])) { $result['is_error'] = 0; diff --git a/api/v3/Note.php b/api/v3/Note.php index e1866d1196c3..c8e1493e882e 100644 --- a/api/v3/Note.php +++ b/api/v3/Note.php @@ -92,7 +92,7 @@ function _civicrm_api3_note_get_spec(&$params) { * * @param array $params * array; only required 'id' parameter is used. - * + * @deprecated * @return array * Nested associative array beginning with direct children of given note. */ @@ -111,3 +111,12 @@ function civicrm_api3_note_tree_get($params) { $noteTree = CRM_Core_BAO_Note::getNoteTree($params['id'], $params['max_depth'], $params['snippet']); return civicrm_api3_create_success($noteTree, $params); } + +/** + * Declare deprecated api functions. + * + * @return array + */ +function _civicrm_api3_note_deprecation() { + return ['tree_get' => 'Unused api action.']; +} diff --git a/api/v3/Participant.php b/api/v3/Participant.php index e37625d8a9d4..8f1076b61cb3 100644 --- a/api/v3/Participant.php +++ b/api/v3/Participant.php @@ -151,7 +151,7 @@ function civicrm_api3_participant_get($params) { $query->convertToPseudoNames($dao, FALSE, TRUE); $participant[$dao->participant_id] = $query->store($dao); //@todo - is this required - contribution & pledge use the same query but don't self-retrieve custom data - _civicrm_api3_custom_data_get($participant[$dao->participant_id], CRM_Utils_Array::value('check_permissions', $params), 'Participant', $dao->participant_id, NULL); + _civicrm_api3_custom_data_get($participant[$dao->participant_id], $params['check_permissions'] ?? FALSE, 'Participant', $dao->participant_id, NULL); } return civicrm_api3_create_success($participant, $params, 'Participant', 'get', $dao); diff --git a/api/v3/Profile.php b/api/v3/Profile.php index c9c0af59604a..202ca7fc41c8 100644 --- a/api/v3/Profile.php +++ b/api/v3/Profile.php @@ -81,7 +81,7 @@ function civicrm_api3_profile_get($params) { $contactFields = $activityFields = []; foreach ($profileFields as $fieldName => $field) { - if (CRM_Utils_Array::value('field_type', $field) == 'Activity') { + if (($field['field_type'] ?? NULL) === 'Activity') { $activityFields[$fieldName] = $field; } else { @@ -244,7 +244,7 @@ function civicrm_api3_profile_submit($params) { ]; } - $contactParams['contact_id'] = empty($params['contact_id']) ? CRM_Utils_Array::value('id', $params) : $params['contact_id']; + $contactParams['contact_id'] = empty($params['contact_id']) ? ($params['id'] ?? NULL) : $params['contact_id']; $contactParams['profile_id'] = $profileID; $contactParams['skip_custom'] = 1; @@ -298,7 +298,7 @@ function _civicrm_api3_profile_submit_spec(&$params, $apirequest) { // we don't resolve state, country & county for performance reasons $resolveOptions = ($apirequest['params']['get_options'] ?? NULL) == 'all'; $profileID = _civicrm_api3_profile_getProfileID($apirequest['params']['profile_id']); - $params = _civicrm_api3_buildprofile_submitfields($profileID, $resolveOptions, CRM_Utils_Array::value('cache_clear', $params)); + $params = _civicrm_api3_buildprofile_submitfields($profileID, $resolveOptions, $params['cache_clear'] ?? FALSE); } elseif (isset($apirequest['params']['cache_clear'])) { _civicrm_api3_buildprofile_submitfields(FALSE, FALSE, TRUE); @@ -360,10 +360,10 @@ function civicrm_api3_profile_apply($params) { list($data, $contactDetails) = CRM_Contact_BAO_Contact::formatProfileContactParams($params, $profileFields, - CRM_Utils_Array::value('contact_id', $params), + $params['contact_id'] ?? NULL, $params['profile_id'], - CRM_Utils_Array::value('contact_type', $params), - CRM_Utils_Array::value('skip_custom', $params, FALSE) + $params['contact_type'] ?? NULL, + $params['skip_custom'] ?? FALSE ); if (empty($data)) { diff --git a/api/v3/Setting.php b/api/v3/Setting.php index 2420e6586599..a2c422bb7104 100644 --- a/api/v3/Setting.php +++ b/api/v3/Setting.php @@ -45,10 +45,10 @@ function civicrm_api3_setting_getfields($params) { $params['filters']['name'] = $params['name']; } $result = CRM_Core_BAO_Setting::getSettingSpecification( - CRM_Utils_Array::value('component_id', $params), - CRM_Utils_Array::value('filters', $params, []), - CRM_Utils_Array::value('domain_id', $params, NULL), - CRM_Utils_Array::value('profile', $params, NULL) + $params['component_id'] ?? NULL, + $params['filters'] ?? [], + $params['domain_id'] ?? NULL, + $params['profile'] ?? NULL ); // find any supplemental information if (!empty($params['action'])) { @@ -296,7 +296,7 @@ function _civicrm_api3_setting_create_spec(&$params) { */ function civicrm_api3_setting_get($params) { $domains = _civicrm_api3_setting_getDomainArray($params); - $result = CRM_Core_BAO_Setting::getItems($params, $domains, CRM_Utils_Array::value('return', $params, [])); + $result = CRM_Core_BAO_Setting::getItems($params, $domains, $params['return'] ?? []); return civicrm_api3_create_success($result, $params, 'Setting', 'get'); } @@ -338,11 +338,11 @@ function civicrm_api3_setting_getvalue($params) { //} return CRM_Core_BAO_Setting::getItem( NULL, - CRM_Utils_Array::value('name', $params), - CRM_Utils_Array::value('component_id', $params), - CRM_Utils_Array::value('default_value', $params), - CRM_Utils_Array::value('contact_id', $params), - CRM_Utils_Array::value('domain_id', $params) + $params['name'] ?? NULL, + $params['component_id'] ?? NULL, + $params['default_value'] ?? NULL, + $params['contact_id'] ?? NULL, + $params['domain_id'] ?? NULL ); } diff --git a/api/v3/System.php b/api/v3/System.php index 9ce36d94cfa0..63078987fa52 100644 --- a/api/v3/System.php +++ b/api/v3/System.php @@ -29,8 +29,8 @@ */ function civicrm_api3_system_flush($params) { CRM_Core_Invoke::rebuildMenuAndCaches( - CRM_Utils_Array::value('triggers', $params, FALSE), - CRM_Utils_Array::value('session', $params, FALSE) + $params['triggers'] ?? FALSE, + $params['session'] ?? FALSE ); return civicrm_api3_create_success(); } diff --git a/api/v3/Tag.php b/api/v3/Tag.php index 89bc9070cef1..57434e434151 100644 --- a/api/v3/Tag.php +++ b/api/v3/Tag.php @@ -45,7 +45,6 @@ function civicrm_api3_tag_create($params) { */ function _civicrm_api3_tag_create_spec(&$params) { $params['used_for']['api.default'] = 'civicrm_contact'; - $params['name']['api.required'] = 1; $params['id']['api.aliases'] = ['tag']; } diff --git a/api/v3/utils.php b/api/v3/utils.php index 7dff36515b28..189b6efdd60a 100644 --- a/api/v3/utils.php +++ b/api/v3/utils.php @@ -497,12 +497,12 @@ function _civicrm_api3_get_using_query_object($entity, $params, $additional_opti $options = _civicrm_api3_get_options_from_params($params, TRUE); $inputParams = array_merge( - CRM_Utils_Array::value('input_params', $options, []), - CRM_Utils_Array::value('input_params', $additional_options, []) + $options['input_params'] ?? [], + $additional_options['input_params'] ?? [] ); $returnProperties = array_merge( - CRM_Utils_Array::value('return', $options, []), - CRM_Utils_Array::value('return', $additional_options, []) + $options['return'] ?? [], + $additional_options['return'] ?? [] ); if (empty($returnProperties)) { $returnProperties = $defaultReturnProperties; @@ -579,7 +579,7 @@ function _civicrm_api3_get_query_object($params, $mode, $entity) { $sort = $options['sort'] ?? NULL; $offset = $options['offset'] ?? NULL; $rowCount = $options['limit'] ?? NULL; - $inputParams = CRM_Utils_Array::value('input_params', $options, []); + $inputParams = $options['input_params'] ?? []; $returnProperties = $options['return'] ?? NULL; if (empty($returnProperties)) { $returnProperties = CRM_Contribute_BAO_Query::defaultReturnProperties($mode); @@ -767,15 +767,15 @@ function _civicrm_api3_get_options_from_params($params, $queryObject = FALSE, $e $sort = $params['option_sort'] ?? $params['option.sort'] ?? $params['sort'] ?? 0; $offset = $params['option_offset'] ?? $params['option.offset'] ?? $params['offset'] ?? 0; - $limit = CRM_Utils_Array::value('rowCount', $params, 25); - $limit = CRM_Utils_Array::value('option.limit', $params, $limit); - $limit = CRM_Utils_Array::value('option_limit', $params, $limit); + $limit = $params['rowCount'] ?? 25; + $limit = $params['option.limit'] ?? $limit; + $limit = $params['option_limit'] ?? $limit; if (isset($params['options']) && is_array($params['options'])) { // is count is set by generic getcount not user $is_count = $params['options']['is_count'] ?? FALSE; $offset = $params['options']['offset'] ?? $offset; - $limit = CRM_Utils_Array::value('limit', $params['options'], $limit); + $limit = $params['options']['limit'] ?? $limit; $sort = $params['options']['sort'] ?? $sort; } @@ -931,7 +931,7 @@ function _civicrm_api3_build_fields_array(&$bao, $unique = TRUE) { function _civicrm_api3_get_unique_name_array(&$bao) { $fields = $bao->fields(); foreach ($fields as $field => $values) { - $uniqueFields[$field] = CRM_Utils_Array::value('name', $values, $field); + $uniqueFields[$field] = $values['name'] ?? $field; } return $uniqueFields; } @@ -1694,7 +1694,7 @@ function _civicrm_api3_validate_date(&$params, &$fieldName, &$fieldInfo) { if (!empty($params[$fieldInfo['name']])) { $fieldValue = _civicrm_api3_getValidDate($fieldValue, $fieldInfo['name'], $fieldInfo['type']); } - if ((CRM_Utils_Array::value('name', $fieldInfo) != $fieldName) && !empty($fieldValue)) { + if (($fieldInfo['name'] ?? NULL) !== $fieldName && !empty($fieldValue)) { $fieldValue = _civicrm_api3_getValidDate($fieldValue, $fieldName, $fieldInfo['type']); } @@ -1975,7 +1975,7 @@ function _civicrm_api_get_custom_fields($entity, &$params) { FALSE, FALSE, // we could / should probably test for other subtypes here - e.g. activity_type_id - CRM_Utils_Array::value('contact_sub_type', $params), + $params['contact_sub_type'] ?? NULL, NULL, FALSE, FALSE, @@ -1988,7 +1988,7 @@ function _civicrm_api_get_custom_fields($entity, &$params) { // Regular fields have a 'name' property $value['name'] = 'custom_' . $key; $value['title'] = $value['label']; - if ($value['data_type'] == 'Date' && CRM_Utils_Array::value('time_format', $value, 0) > 0) { + if ($value['data_type'] == 'Date' && ($value['time_format'] ?? 0) > 0) { $value['data_type'] = 'DateTime'; } $value['type'] = CRM_Utils_Array::value($value['data_type'], CRM_Core_BAO_CustomField::dataToType()); @@ -2317,7 +2317,7 @@ function _civicrm_api3_api_match_pseudoconstant(&$fieldValue, $entity, $fieldNam } $options = civicrm_api($entity, 'getoptions', $options_lookup_params); - $options = CRM_Utils_Array::value('values', $options, []); + $options = $options['values'] ?? []; } if (is_string($fieldValue) && strpos($fieldValue, CRM_Core_DAO::VALUE_SEPARATOR) !== FALSE) { @@ -2327,12 +2327,12 @@ function _civicrm_api3_api_match_pseudoconstant(&$fieldValue, $entity, $fieldNam if (is_array($fieldValue)) { foreach ($fieldValue as &$value) { if (!is_array($value)) { - _civicrm_api3_api_match_pseudoconstant_value($value, $options, $fieldName, CRM_Utils_Array::value('api.required', $fieldInfo)); + _civicrm_api3_api_match_pseudoconstant_value($value, $options, $fieldName, $fieldInfo['api.required'] ?? FALSE); } } } else { - _civicrm_api3_api_match_pseudoconstant_value($fieldValue, $options, $fieldName, CRM_Utils_Array::value('api.required', $fieldInfo)); + _civicrm_api3_api_match_pseudoconstant_value($fieldValue, $options, $fieldName, $fieldInfo['api.required'] ?? FALSE); } } @@ -2439,10 +2439,10 @@ function _civicrm_api3_api_resolve_alias($entity, $fieldName, $action = 'create' return $meta[$fieldName]['name']; } foreach ($meta as $info) { - if ($fieldName == $info['name'] || $fieldName == CRM_Utils_Array::value('uniqueName', $info)) { + if ($fieldName == $info['name'] || $fieldName == ($info['uniqueName'] ?? NULL)) { return $info['name']; } - if (array_search($fieldName, CRM_Utils_Array::value('api.aliases', $info, [])) !== FALSE) { + if (array_search($fieldName, $info['api.aliases'] ?? []) !== FALSE) { return $info['name']; } } @@ -2615,7 +2615,7 @@ function _civicrm_api3_basic_array_get($entity, $params, $records, $idCol, $filt } } - $return = CRM_Utils_Array::value('return', $options, []); + $return = $options['return'] ?? []; if (!empty($return)) { $return['id'] = 1; $matches = CRM_Utils_Array::filterColumns($matches, array_keys($return)); diff --git a/composer.json b/composer.json index 3e3eb8982962..932417d5a134 100644 --- a/composer.json +++ b/composer.json @@ -102,7 +102,7 @@ "symfony/polyfill-php80": "^1.0", "symfony/polyfill-php81": "^1.0", "symfony/polyfill-php82": "^1.0", - "html2text/html2text": "^4.3.1", + "soundasleep/html2text": "^2.1", "psr/container": "~1.0 || ~2.0", "ext-fileinfo": "*" }, @@ -202,9 +202,6 @@ "path": "bower_components/es-module-shims/dist/es-module-shims.js", "_comment": "See also https://github.com/guybedford/es-module-shims/. MIT license." }, - "es6-promise": { - "url": "https://github.com/components/es6-promise/archive/v4.2.4.zip" - }, "ext-greenwich-bootstrap3": { "url": "https://github.com/twbs/bootstrap-sass/archive/v{$version}.zip", "path": "ext/greenwich/extern/bootstrap3", @@ -275,9 +272,6 @@ "Update gitignore to ensure that sites that manage via git don't miss out on the important db.json file": "https://patch-diff.githubusercontent.com/raw/adrienrn/php-mimetyper/pull/15.patch", "Apply patch to fix php8.2 deprecation notice on dynamic property $filename": "https://patch-diff.githubusercontent.com/raw/adrienrn/php-mimetyper/pull/17.patch" }, - "html2text/html2text": { - "Fix deprecation warning in php8.1 on html_entity_decode": "https://raw.githubusercontent.com/civicrm/civicrm-core/e758d20e9f613ca6c4cf652c23d2cd7e5d3af3ce/tools/scripts/composer/html2text_html2_text_php81_deprecation.patch" - }, "pear/db": { "Apply patch to ensure that MySQLI reporting remains the same in php8.1": "https://patch-diff.githubusercontent.com/raw/pear/DB/pull/13.patch", "Apply patch to fix deprecations in php8.2": "https://patch-diff.githubusercontent.com/raw/pear/DB/pull/14.patch", diff --git a/composer.lock b/composer.lock index b4288d6318b5..072c5ee289bf 100644 --- a/composer.lock +++ b/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": "377176179275d0aa4262d031e5bc4559", + "content-hash": "d112a69d39ea11b6ad870811b2960200", "packages": [ { "name": "adrienrn/php-mimetyper", @@ -966,47 +966,6 @@ ], "time": "2023-04-17T16:00:37+00:00" }, - { - "name": "html2text/html2text", - "version": "4.3.1", - "source": { - "type": "git", - "url": "https://github.com/mtibben/html2text.git", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtibben/html2text/zipball/61ad68e934066a6f8df29a3d23a6460536d0855c", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-mbstring": "For best performance", - "symfony/polyfill-mbstring": "If you can't install ext-mbstring" - }, - "type": "library", - "autoload": { - "psr-4": { - "Html2Text\\": [ - "src/", - "test/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Converts HTML to formatted plain text", - "support": { - "issues": "https://github.com/mtibben/html2text/issues", - "source": "https://github.com/mtibben/html2text/tree/4.3.1" - }, - "time": "2020-04-16T23:44:31+00:00" - }, { "name": "laminas/laminas-escaper", "version": "2.6.1", @@ -3414,6 +3373,61 @@ }, "time": "2022-05-16T07:22:18+00:00" }, + { + "name": "soundasleep/html2text", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/soundasleep/html2text.git", + "reference": "83502b6f8f1aaef8e2e238897199d64f284b4af3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/soundasleep/html2text/zipball/83502b6f8f1aaef8e2e238897199d64f284b4af3", + "reference": "83502b6f8f1aaef8e2e238897199d64f284b4af3", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.3|^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Soundasleep\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jevon Wright", + "homepage": "https://jevon.org", + "role": "Developer" + } + ], + "description": "A PHP script to convert HTML into a plain text format", + "homepage": "https://github.com/soundasleep/html2text", + "keywords": [ + "email", + "html", + "php", + "text" + ], + "support": { + "email": "support@jevon.org", + "issues": "https://github.com/soundasleep/html2text/issues", + "source": "https://github.com/soundasleep/html2text/tree/2.1.0" + }, + "time": "2023-01-06T09:28:15+00:00" + }, { "name": "symfony/config", "version": "v4.4.42", diff --git a/contributor-key.yml b/contributor-key.yml index 48138fbb5ffa..4971db7104f1 100644 --- a/contributor-key.yml +++ b/contributor-key.yml @@ -255,6 +255,8 @@ name : Joan Cervan Andreu organization: calbasi.net +- github : cdhassell + - name : Cath O'Connell - github : chagrawil @@ -380,6 +382,9 @@ name : Detlev Sieber organization: Digitalcourage +- github : devappsoftware + organization: DevApp + - github : devarun name : Arun Singh @@ -1211,6 +1216,9 @@ - github : prondubuisi name : Onyemenam Ndubuisi +- github : PrzemyslawTabor + name : Przemysław Tabor + - name : Richard Edgar - github : ogomez78 @@ -1702,6 +1710,8 @@ - github : YesusHDS +- github : yurg + - github : Toby-fz name : Toby Messerli organization: Fuzion @@ -1717,5 +1727,5 @@ - github : mikeybeck name : Mike Beck organization: Fuzion - + - github : ziljah diff --git a/css/joomla.css b/css/joomla.css index 7e902f35ba8e..46eb7ab7d521 100644 --- a/css/joomla.css +++ b/css/joomla.css @@ -6,11 +6,9 @@ div#toolbar-box .icon-48-generic { display: none; } - div#toolbar-box { height: 26px; } - fieldset { margin-bottom: 1em; padding: .5em; @@ -31,12 +29,10 @@ img { #crm-container tr td { font-size: 1em; } - /* Added in CiviCRM 2.1 to overwrite tiny font in TinyMCE editor. */ #crm-container #content table.mceLayout td { font-size: 0em; } - th { text-align: left; padding-right: 1em; @@ -52,11 +48,9 @@ tr.light { border-bottom: 1px solid #ccc; padding: 0.1em 0.6em; } - td.active { background-color: #ddd; } - td.label { background: none; color: #3e3e3e; @@ -67,7 +61,7 @@ td.label { ** Other common styles */ .breadcrumb { - padding-bottom: .5em + padding-bottom: .5em; } .block ul { margin: 0; @@ -228,19 +222,9 @@ br.clear { border-color: red; color: red; } -#sidebar-left, -#sidebar-right { - background-color: #ddd; - width: 16em; - /* padding in px not ex because IE messes up 100% width tables otherwise */ - padding: 20px; - vertical-align: top; -} - -#content-right { - background-color: #ffffff; +#crm-content { + padding: 1rem; } - #footer { padding: 1em; font-size: 0.8em; @@ -289,7 +273,6 @@ br.clear { .box .title { font-size: 1.1em; } - #module-status, .version { font-size: 11px; @@ -304,19 +287,16 @@ br.clear { /* Joomla Admin Menu alterations */ /* Moved from civicrm.css in v3.2 */ - div#toolbar-box div.m { padding: 0px !important; min-height: 0; border: 0; margin-top: 8px; } - div#toolbar-box, div#toolbar-box div.m { height: auto; } - .crm-tab-button, .ui-tabs .ui-tabs-nav li { border: 1px; @@ -333,9 +313,6 @@ div#toolbar-box div.m { padding-bottom: 0; border: 1px solid #999 !important; } -#crm-container { - font-size: 11px; -} #crm-container .col1 { margin: 0; } @@ -345,11 +322,9 @@ div#toolbar-box div.m { .ac_results .ac_odd { background-color: #444; } - #crm-notification-container { top: 100px; } - .crm-container textarea, .crm-container input, .crm-container select { @@ -369,22 +344,18 @@ div#toolbar-box div.m { .crm-container button[type=submit] { height: auto; } - .crm-container .disabled { font-weight: normal; } - #crm-container .form-layout td.label, .crm-container .form-layout td.label { width: inherit; } - #crm-container .crm-event-form-fee-block .label { background-color: inherit; width: inherit; display: block; } - /* dev/core#874 the width:auto styling above causes the menubar colour picker to be squeezed */ .crm-container input.crm-form-color { width: 3.6em; @@ -405,10 +376,6 @@ body.admin.com_civicrm.task-civicrmupgrade .container-fluid.container-main { body.admin.com_civicrm #crm-nav-menu-container { padding-bottom: 0 !important; } -body.admin.com_civicrm #content-right { - padding: 12px; -} - /* Make footer admin bar hide behind popup windows (CRM-15723) */ body.ui-dialog-open #status { z-index: 100 !important; @@ -416,18 +383,12 @@ body.ui-dialog-open #status { /* Joomla 4 */ -body.admin.com_civicrm.layout-default #content { - padding: 0; -} - body.admin.com_civicrm.layout-default #subhead-container { display: none; } - body.admin.com_civicrm.layout-default .crm-container .crm-dashlet { max-width: 50vw; /* fixes over-wide news dashlet */ } - body.admin.com_civicrm.layout-default .crm-container .content { padding: inherit; /* overrides J4 duplicated padding */ } @@ -437,11 +398,9 @@ body.admin.com_civicrm.layout-default .crm-container .content { body.admin.com_civicrm.layout-default .crm-container.ui-dialog.ui-resizable { z-index: 1021; } - body.admin.com_civicrm.layout-default .ui-widget-overlay { z-index: 1; } - body.admin.com_civicrm.layout-default .crm-container .modal-dialog { max-width: inherit; padding: 0; diff --git a/distmaker/core-ext.txt b/distmaker/core-ext.txt index 9e2a64087f9e..1021333ca7c7 100644 --- a/distmaker/core-ext.txt +++ b/distmaker/core-ext.txt @@ -35,3 +35,4 @@ civi_member civi_pledge civi_report scheduled_communications +user_dashboard diff --git a/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php b/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php new file mode 100644 index 000000000000..624844208287 --- /dev/null +++ b/ext/afform/admin/Civi/AfformAdmin/AfformAdminInjector.php @@ -0,0 +1,55 @@ + 'preprocess', + ]; + } + + /** + * @param \Civi\Core\Event\GenericHookEvent $e + * @see CRM_Utils_Hook::alterAngular() + */ + public static function preprocess($e) { + $changeSet = \Civi\Angular\ChangeSet::create('afformAdmin') + ->alterHtml(';\\.aff\\.html$;', function($doc, $path) { + try { + $moduleName = basename($path, '.aff.html'); + // If the user has "administer CiviCRM", inject edit link + if (\CRM_Core_Permission::check('administer CiviCRM')) { + $url = \CRM_Utils_System::url('civicrm/admin/afform', NULL, FALSE, '/edit/' . $moduleName, TRUE); + // Append link to afform directive element (using loop but there should be only one) + foreach (pq('af-form[ctrl]', $doc) as $afForm) { + pq($afForm)->append('
' . E::ts('Edit Form') . ''); + } + } + } + catch (\Exception $e) { + } + }); + $e->angular->add($changeSet); + } + +} diff --git a/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php b/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php index cf283b74a7f3..e1516a21e644 100644 --- a/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php +++ b/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php @@ -13,6 +13,12 @@ class AfformAdminMeta { * @return array */ public static function getAdminSettings() { + $afformPlacement = \CRM_Utils_Array::formatForSelect2((array) \Civi\Api4\OptionValue::get(FALSE) + ->addSelect('value', 'label', 'icon', 'description') + ->addWhere('is_active', '=', TRUE) + ->addWhere('option_group_id:name', '=', 'afform_placement') + ->addOrderBy('weight') + ->execute(), 'label', 'value'); $afformTypes = (array) \Civi\Api4\OptionValue::get(FALSE) ->addSelect('name', 'label', 'icon') ->addWhere('is_active', '=', TRUE) @@ -31,6 +37,7 @@ public static function getAdminSettings() { } return [ 'afform_type' => $afformTypes, + 'afform_placement' => $afformPlacement, 'search_operators' => \Civi\Afform\Utils::getSearchOperators(), ]; } diff --git a/ext/afform/admin/afformEntities/Household.php b/ext/afform/admin/afformEntities/Household.php index 808565deab97..3e120a7fef94 100644 --- a/ext/afform/admin/afformEntities/Household.php +++ b/ext/afform/admin/afformEntities/Household.php @@ -11,5 +11,4 @@ 'boilerplate' => [ ['#tag' => 'afblock-name-household'], ], - 'admin_tpl' => '~/afGuiEditor/entityConfig/Contact.html', ]; diff --git a/ext/afform/admin/afformEntities/Individual.php b/ext/afform/admin/afformEntities/Individual.php index 3d124377d893..3a51fdc9b75e 100644 --- a/ext/afform/admin/afformEntities/Individual.php +++ b/ext/afform/admin/afformEntities/Individual.php @@ -11,5 +11,4 @@ 'boilerplate' => [ ['#tag' => 'afblock-name-individual'], ], - 'admin_tpl' => '~/afGuiEditor/entityConfig/Contact.html', ]; diff --git a/ext/afform/admin/afformEntities/Organization.php b/ext/afform/admin/afformEntities/Organization.php index b36455be1bba..eaf258446d9b 100644 --- a/ext/afform/admin/afformEntities/Organization.php +++ b/ext/afform/admin/afformEntities/Organization.php @@ -11,5 +11,4 @@ 'boilerplate' => [ ['#tag' => 'afblock-name-organization'], ], - 'admin_tpl' => '~/afGuiEditor/entityConfig/Contact.html', ]; diff --git a/ext/afform/admin/afform_admin.civix.php b/ext/afform/admin/afform_admin.civix.php index 52866d86b88f..eb9df12ea5e0 100644 --- a/ext/afform/admin/afform_admin.civix.php +++ b/ext/afform/admin/afform_admin.civix.php @@ -133,8 +133,8 @@ function _afform_admin_civix_insert_navigation_menu(&$menu, $path, $item) { if (empty($path)) { $menu[] = [ 'attributes' => array_merge([ - 'label' => CRM_Utils_Array::value('name', $item), - 'active' => 1, + 'label' => $item['name'] ?? NULL, + 'active' => 1, ], $item), ]; return TRUE; diff --git a/ext/afform/admin/ang/afAdmin.js b/ext/afform/admin/ang/afAdmin.js index 8d45473732ed..af06f68e98cb 100644 --- a/ext/afform/admin/ang/afAdmin.js +++ b/ext/afform/admin/ang/afAdmin.js @@ -11,7 +11,7 @@ // Load data for lists afforms: function(crmApi4) { return crmApi4('Afform', 'get', { - select: ['name', 'title', 'type', 'server_route', 'is_public', 'submission_count', 'submission_date', 'submit_limit', 'submit_enabled', 'submit_currently_open', 'has_local', 'has_base', 'base_module', 'base_module:label', 'is_dashlet', 'contact_summary:label'] + select: ['name', 'title', 'type', 'server_route', 'is_public', 'submission_count', 'submission_date', 'submit_limit', 'submit_enabled', 'submit_currently_open', 'has_local', 'has_base', 'base_module', 'base_module:label', 'placement:label'] }); } } diff --git a/ext/afform/admin/ang/afAdmin/afAdminList.controller.js b/ext/afform/admin/ang/afAdmin/afAdminList.controller.js index 70c9536f936e..621947cf5234 100644 --- a/ext/afform/admin/ang/afAdmin/afAdminList.controller.js +++ b/ext/afform/admin/ang/afAdmin/afAdminList.controller.js @@ -24,14 +24,7 @@ this.afforms = _.transform(afforms, function(afforms, afform) { afform.type = afform.type || 'system'; - // Aggregate a couple fields for the "Placement" column - afform.placement = []; - if (afform.is_dashlet) { - afform.placement.push(ts('Dashboard')); - } - if (afform['contact_summary:label']) { - afform.placement.push(afform['contact_summary:label']); - } + afform.placement = afform['placement:label']; if (afform.submission_date) { afform.submission_date = CRM.utils.formatDate(afform.submission_date); } diff --git a/ext/afform/admin/ang/afAdminFormSubmissionList.aff.json b/ext/afform/admin/ang/afAdminFormSubmissionList.aff.json deleted file mode 100644 index 3584ff594892..000000000000 --- a/ext/afform/admin/ang/afAdminFormSubmissionList.aff.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "system", - "title": "Submissions", - "server_route": "civicrm/admin/afform/submissions", - "permission": ["administer CiviCRM", "administer afform"], - "permission_operator": "OR" -} diff --git a/ext/afform/admin/ang/afAdminFormSubmissionList.aff.php b/ext/afform/admin/ang/afAdminFormSubmissionList.aff.php new file mode 100644 index 000000000000..8eda1f70cc1a --- /dev/null +++ b/ext/afform/admin/ang/afAdminFormSubmissionList.aff.php @@ -0,0 +1,10 @@ + 'system', + 'title' => E::ts('Submissions'), + 'server_route' => 'civicrm/admin/afform/submissions', + 'permission' => ["administer CiviCRM", "administer afform"], + 'permission_operator' => 'OR', +]; diff --git a/ext/afform/admin/ang/afGuiEditor.js b/ext/afform/admin/ang/afGuiEditor.js index 120798c72126..6b52f6228d27 100644 --- a/ext/afform/admin/ang/afGuiEditor.js +++ b/ext/afform/admin/ang/afGuiEditor.js @@ -141,7 +141,7 @@ }); }, - meta: CRM.afGuiEditor, + meta: _.extend(CRM.afGuiEditor, CRM.afAdmin), getEntity: function(entityName) { return CRM.afGuiEditor.entities[entityName]; diff --git a/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js b/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js index 07eb9fabeb69..d2279c950f66 100644 --- a/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js +++ b/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js @@ -99,10 +99,10 @@ delete editor.afform.name; delete editor.afform.server_route; delete editor.afform.navigation; - editor.afform.is_dashlet = false; editor.afform.title += ' ' + ts('(copy)'); } editor.afform.icon = editor.afform.icon || 'fa-list-alt'; + editor.afform.placement = editor.afform.placement || []; $scope.canvasTab = 'layout'; $scope.layoutHtml = ''; $scope.entities = {}; @@ -332,14 +332,16 @@ return filter ? _.filter($scope.entities, filter) : _.toArray($scope.entities); }; - this.toggleContactSummary = function() { - if (editor.afform.contact_summary) { - editor.afform.contact_summary = null; + this.isContactSummary = function() { + return editor.afform.placement.includes('contact_summary_block') || editor.afform.placement.includes('contact_summary_tab'); + }; + + this.onChangePlacement = function() { + if (!editor.isContactSummary()) { _.each(editor.searchDisplays, function(searchDisplay) { delete searchDisplay.element.filters; }); } else { - editor.afform.contact_summary = 'block'; _.each(editor.searchDisplays, function(searchDisplay) { var filterOptions = getSearchFilterOptions(searchDisplay.settings); if (filterOptions.length) { diff --git a/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js b/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js index 661eb4b6a32a..3f3d0c728252 100644 --- a/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js +++ b/ext/afform/admin/ang/afGuiEditor/afGuiFieldValue.directive.js @@ -75,12 +75,20 @@ } } + function isSelect2() { + return $element.is('.select2-container + input'); + } + // Copied from ng-list but applied conditionally if field is multi-valued - var parseList = function(viewValue) { + var parseFieldInput = function(viewValue) { // If the viewValue is invalid (say required but empty) it will be `undefined` if (_.isUndefined(viewValue)) return; - if (!multi) { + if ((viewValue === '1' || viewValue === '0') && ctrl.field.data_type === 'Boolean') { + return viewValue === '1'; + } + + if (!multi || !isSelect2()) { return viewValue; } @@ -95,12 +103,20 @@ return list; }; + var formatViewValue = function(value) { + if (Array.isArray(value)) { + return value.join(','); + } + if (typeof value === 'boolean') { + return value ? '1' : '0'; + } + return value; + }; + this.$onInit = function() { // Copied from ng-list - ctrl.ngModel.$parsers.push(parseList); - ctrl.ngModel.$formatters.push(function(value) { - return _.isArray(value) ? value.join(',') : value; - }); + ctrl.ngModel.$parsers.push(parseFieldInput); + ctrl.ngModel.$formatters.push(formatViewValue); // Copied from ng-list ctrl.ngModel.$isEmpty = function(value) { diff --git a/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html b/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html index 1d1001f88815..4f52e8b0e02d 100644 --- a/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html +++ b/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html @@ -77,4 +77,12 @@ + +
+ {{:: ts('Options') }} + +

+ {{:: ts('Filter fields will retain their value when the same user revisits the form.') }} +

+
diff --git a/ext/afform/admin/ang/afGuiEditor/config-form.html b/ext/afform/admin/ang/afGuiEditor/config-form.html index d18e23cfdca1..b439b4c81621 100644 --- a/ext/afform/admin/ang/afGuiEditor/config-form.html +++ b/ext/afform/admin/ang/afGuiEditor/config-form.html @@ -43,7 +43,7 @@ - +

{{:: ts('Expose the form as a standalone webpage. (Example: "civicrm/my-form")') }}

@@ -54,14 +54,6 @@ -
- -

{{:: ts('Allows CiviMail authors to easily link to this page') }}

-
-
+ + +

{{:: ts('Additional contexts in which the form can be embedded') }}

+
+ +
- - + +
-
+
- -
-

- {{:: ts('Placement can be configured using the Contact Layout Editor.') }} -

-
- -
- -

{{:: ts('Allow CiviCRM users to add the form to their home dashboard.') }}

diff --git a/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js b/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js index a6124cde53c5..1b9f03495dbe 100644 --- a/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js +++ b/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js @@ -124,7 +124,7 @@ $scope.hasOptions = function() { var inputType = $scope.getProp('input_type'); - return _.contains(['CheckBox', 'Radio', 'Select'], inputType) && !(inputType === 'CheckBox' && !ctrl.getDefn().options); + return _.contains(['CheckBox', 'Radio', 'Select'], inputType) && !(inputType === 'CheckBox' && ctrl.getDefn().data_type === 'Boolean'); }; this.getOptions = function() { @@ -142,7 +142,7 @@ } return entityRefOptions; } - return ctrl.getDefn().options || ($scope.getProp('input_type') === 'CheckBox' ? null : yesNo); + return ctrl.getDefn().options || (ctrl.getDefn().data_type === 'Boolean' ? yesNo : null); }; $scope.resetOptions = function() { @@ -181,6 +181,7 @@ return !(defn.options || defn.data_type === 'Boolean'); case 'DisplayOnly': + case 'Hidden': return true; default: @@ -342,6 +343,10 @@ delete ctrl.node.defn.input_attrs.multiple; clearOut(ctrl.node, ['defn', 'input_attrs']); } + // Boolean checkbox has no options + if (val === 'CheckBox' && ctrl.getDefn().data_type === 'Boolean' && ctrl.node.defn) { + delete ctrl.node.defn.options; + } } setFieldDefn(); diff --git a/ext/afform/admin/ang/afGuiEditor/entityConfig/Options.html b/ext/afform/admin/ang/afGuiEditor/entityConfig/Options.html index 15878ad8a97b..3e5ff44bb98a 100644 --- a/ext/afform/admin/ang/afGuiEditor/entityConfig/Options.html +++ b/ext/afform/admin/ang/afGuiEditor/entityConfig/Options.html @@ -27,9 +27,17 @@ {{:: ts('Without Role-Based access, users of the form will be able to view and update any %1 by changing the id in the URL.', {1: getMeta().label}) }}
- {{:: ts('Update %1 by including the id in the link to this form:', {1: getMeta().label}) }} - - {{ ($ctrl.editor.getLink() || '') + '#?' + $ctrl.entity.name + '=123' }} - +

+ {{:: ts('Update %1 by including the id in the link to this form:', {1: $ctrl.entity.name}) }} + + {{ ($ctrl.editor.getLink() || '') + '#?' + $ctrl.entity.name + '=123' }} + +

+

+ {{:: ts('If you have made a repeating container for %1, you may update multiple %2s using comma-separated ids:', {1: $ctrl.entity.name, 2: getMeta().label}) }} + + {{ ($ctrl.editor.getLink() || '') + '#?' + $ctrl.entity.name + '=123,456' }} + +

diff --git a/ext/afform/admin/ang/afGuiEditor/inputType/CheckBox.html b/ext/afform/admin/ang/afGuiEditor/inputType/CheckBox.html index 1e6762315d27..d5d704b2a91f 100644 --- a/ext/afform/admin/ang/afGuiEditor/inputType/CheckBox.html +++ b/ext/afform/admin/ang/afGuiEditor/inputType/CheckBox.html @@ -1,7 +1,7 @@ - - {{:: $ctrl.getTag(id).name }} + {{:: $ctrl.getTag(id).label }} diff --git a/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js b/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js index 3111e4a8b528..008b19bb54bb 100644 --- a/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js @@ -28,9 +28,12 @@ this.styles.strikethrough = ts('Strikethrough'); this.fields = function() { - var allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let selectFields = ctrl.crmSearchAdmin.getSelectFields(); + // Use machine names not labels for option matching + selectFields.forEach((field) => field.id = field.id.replace(':label', ':name')); return { - results: ctrl.crmSearchAdmin.getSelectFields().concat(allFields) + results: selectFields.concat(allFields) }; }; diff --git a/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js b/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js index 6a7d439f9e90..323b09c7734a 100644 --- a/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js @@ -16,9 +16,12 @@ this.getField = searchMeta.getField; this.fields = function() { - var allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let selectFields = ctrl.crmSearchAdmin.getSelectFields(); + // Use machine names not labels for option matching + selectFields.forEach((field) => field.id = field.id.replace(':label', ':name')); return { - results: ctrl.crmSearchAdmin.getSelectFields().concat(allFields) + results: selectFields.concat(allFields) }; }; diff --git a/ext/search_kit/ang/crmSearchDisplay/Pager.html b/ext/search_kit/ang/crmSearchDisplay/Pager.html index 97c1e0009373..f50d93744b6a 100644 --- a/ext/search_kit/ang/crmSearchDisplay/Pager.html +++ b/ext/search_kit/ang/crmSearchDisplay/Pager.html @@ -20,7 +20,7 @@ >
-
+
diff --git a/ext/search_kit/ang/crmSearchDisplay/crmSearchDisplayEditable.component.js b/ext/search_kit/ang/crmSearchDisplay/crmSearchDisplayEditable.component.js index 46eed4615d21..e9ddec24a94c 100644 --- a/ext/search_kit/ang/crmSearchDisplay/crmSearchDisplayEditable.component.js +++ b/ext/search_kit/ang/crmSearchDisplay/crmSearchDisplayEditable.component.js @@ -32,11 +32,12 @@ nullable: col.edit.nullable }; - $(document).on('keydown.crmSearchDisplayEditable', function(e) { + $(document).on('keydown.crmSearchDisplayEditable', (e) => { if (e.key === 'Escape') { - $scope.$apply(function() { - ctrl.cancel(); - }); + $scope.$apply(() => ctrl.cancel()); + } + else if (e.key === 'Enter') { + $scope.$apply(() => ctrl.save()); } }); diff --git a/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js b/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js index ec7eee2d192b..7aa7a70ede4e 100644 --- a/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js +++ b/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js @@ -51,7 +51,8 @@ // Update totalCount only if no user filters are set if (typeof rowCount === 'number' && angular.equals({}, ctrl.getAfformFilters())) { ctrl.totalCount = rowCount; - if (contactTab) { + // The first display in a tab gets to control the count + if (contactTab && $element.is($('#' + contactTab + ' [search][display]').first())) { CRM.tabHeader.updateCount(contactTab.replace('contact-', '#tab_'), rowCount); } } diff --git a/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html b/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html index 81cfafe4a1ac..5ca040d1f6a0 100644 --- a/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html +++ b/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html @@ -11,7 +11,7 @@ - + {{:: col.label }} diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js index 102e2bc36f78..8225a2f7e8ba 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js @@ -125,7 +125,7 @@ this.getTemplate = function() { var field = ctrl.field || {}; - if (_.includes(['LIKE', 'NOT LIKE', 'REGEXP', 'NOT REGEXP'], ctrl.op)) { + if (_.includes(['LIKE', 'NOT LIKE', 'REGEXP', 'NOT REGEXP', 'REGEXP BINARY', 'NOT REGEXP BINARY'], ctrl.op)) { return '~/crmSearchTasks/crmSearchInput/text.html'; } diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html index f5c7508be3e6..5fdfa72670bf 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html @@ -10,7 +10,7 @@
- +
diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js index bace4279079c..ed1ac2f9c228 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js @@ -14,16 +14,16 @@ crmApi4({ tags: ['Tag', 'get', { - select: ['id', 'name', 'color', 'description', 'is_selectable', 'parent_id'], + select: ['id', 'label', 'color', 'description', 'is_selectable', 'parent_id'], where: [ ['is_tagset', '=', false], ['used_for:name', 'CONTAINS', this.entity], ['OR', [['parent_id', 'IS NULL'], ['parent_id.is_tagset', '=', false]]] ], - orderBy: {name: 'ASC'} + orderBy: {label: 'ASC'} }], tagsets: ['Tag', 'get', { - select: ['id', 'name'], + select: ['id', 'name', 'label'], where: [['is_tagset', '=', true], ['used_for:name', 'CONTAINS', this.entity]] }], }).then(function(result) { @@ -36,7 +36,7 @@ var sorted = _.transform(rawTags, function(sorted, tag) { sorted[tag.id] = { id: tag.id, - text: tag.name, + text: tag.label, description: tag.description, color: tag.color, disabled: !tag.is_selectable, diff --git a/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html index 51363c6e9d3b..d1bb6a09d8f2 100644 --- a/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html +++ b/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html @@ -28,7 +28,7 @@ >
- + http://www.gnu.org/licenses/agpl-3.0.html 2021-01-06 - 5.67.alpha1 + 5.68.alpha1 stable mgmt:required - 5.67 + 5.68 Click on the chat link above to discuss development, report problems or ask questions. @@ -35,10 +35,10 @@ menu-xml@1.0.0 mgd-php@1.0.0 entity-types-php@1.0.0 - smarty-v2@1.0.0 + smarty-v2@1.0.1 CRM/Search - 23.02.0 + 23.02.1 diff --git a/ext/search_kit/managed/Navigation_search_kit.mgd.php b/ext/search_kit/managed/Navigation_search_kit.mgd.php index e132bcb8aaae..dbaaae9add49 100644 --- a/ext/search_kit/managed/Navigation_search_kit.mgd.php +++ b/ext/search_kit/managed/Navigation_search_kit.mgd.php @@ -1,13 +1,9 @@ addSelect('id') - ->execute(); -foreach ($domains as $domain) { - $menuItems[] = [ - 'name' => 'Navigation_search_kit_domain_' . $domain['id'], +return [ + [ + 'name' => 'Navigation_search_kit', 'entity' => 'Navigation', 'cleanup' => 'always', 'update' => 'unmodified', @@ -27,10 +23,8 @@ 'is_active' => TRUE, 'has_separator' => 2, 'weight' => 13, - 'domain_id' => $domain['id'], ], 'match' => ['domain_id', 'name'], ], - ]; -} -return $menuItems; + ], +]; diff --git a/ext/search_kit/search_kit.civix.php b/ext/search_kit/search_kit.civix.php index a0be0f9032eb..8771431147cd 100644 --- a/ext/search_kit/search_kit.civix.php +++ b/ext/search_kit/search_kit.civix.php @@ -133,8 +133,8 @@ function _search_kit_civix_insert_navigation_menu(&$menu, $path, $item) { if (empty($path)) { $menu[] = [ 'attributes' => array_merge([ - 'label' => CRM_Utils_Array::value('name', $item), - 'active' => 1, + 'label' => $item['name'] ?? NULL, + 'active' => 1, ], $item), ]; return TRUE; diff --git a/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchAfformTest.php b/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchAfformTest.php index 377cb8d7b993..311de97de909 100644 --- a/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchAfformTest.php +++ b/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchAfformTest.php @@ -5,6 +5,8 @@ use Civi\Api4\Afform; use Civi\Api4\Contact; use Civi\Api4\Email; +use Civi\Api4\OptionGroup; +use Civi\Api4\OptionValue; use Civi\Api4\Phone; use Civi\Api4\SavedSearch; use Civi\Api4\SearchDisplay; @@ -33,7 +35,7 @@ public function tearDown(): void { /** * Test running a searchDisplay within an afform. */ - public function testRunWithAfform() { + public function testRunWithAfform(): void { $search = SavedSearch::create(FALSE) ->setValues([ 'name' => 'TestContactEmailSearch', @@ -180,7 +182,7 @@ public function testRunWithAfform() { $this->assertCount(1, $result); } - public function testRunMultipleSearchForm() { + public function testRunMultipleSearchForm(): void { $email = uniqid('tester@'); Contact::create(FALSE) @@ -230,8 +232,8 @@ public function testRunMultipleSearchForm() { ) ->execute(); - $contactEmailSearch = SavedSearch::create(FALSE) - ->setValues([ + $contactEmailSearch = SavedSearch::save(FALSE) + ->addRecord([ 'name' => 'TestContactEmailSearch', 'label' => 'TestContactEmailSearch', 'api_entity' => 'Contact', @@ -257,10 +259,11 @@ public function testRunMultipleSearchForm() { 'having' => [], ], ]) + ->setMatch(['name']) ->execute()->first(); - $contactEmailDisplay = SearchDisplay::create(FALSE) - ->setValues([ + $contactEmailDisplay = SearchDisplay::save(FALSE) + ->addRecord([ 'name' => 'TestContactEmailDisplay', 'label' => 'TestContactEmailDisplay', 'saved_search_id.name' => 'TestContactEmailSearch', @@ -291,11 +294,12 @@ public function testRunMultipleSearchForm() { ], 'acl_bypass' => FALSE, ]) + ->setMatch(['name']) ->execute()->first(); foreach (['Email', 'Phone'] as $entity) { - SavedSearch::create(FALSE) - ->setValues([ + SavedSearch::save(FALSE) + ->addRecord([ 'name' => 'TestSearchFor' . $entity, 'label' => 'TestSearchFor' . $entity, 'api_entity' => $entity, @@ -312,6 +316,7 @@ public function testRunMultipleSearchForm() { 'having' => [], ], ]) + ->setMatch(['name']) ->execute(); } @@ -349,9 +354,9 @@ public function testRunMultipleSearchForm() { $this->assertCount(1, $result); } - public function testSearchReferencesToAfform() { - $search = SavedSearch::create(FALSE) - ->setValues([ + public function testSearchReferencesToAfform(): void { + $search = SavedSearch::save(FALSE) + ->addRecord([ 'name' => 'TestSearchToDelete', 'label' => 'TestSearchToDelete', 'api_entity' => 'Contact', @@ -360,10 +365,11 @@ public function testSearchReferencesToAfform() { 'select' => ['id'], ], ]) + ->setMatch(['name']) ->execute()->first(); - $display = SearchDisplay::create(FALSE) - ->setValues([ + $display = SearchDisplay::save(FALSE) + ->addRecord([ 'name' => 'TestDisplayToDelete', 'label' => 'TestDisplayToDelete', 'saved_search_id.name' => 'TestSearchToDelete', @@ -380,6 +386,7 @@ public function testSearchReferencesToAfform() { ], 'acl_bypass' => FALSE, ]) + ->setMatch(['saved_search_id', 'name']) ->execute()->first(); // The search should have one reference (its display) @@ -443,4 +450,97 @@ public function testSearchReferencesToAfform() { $this->assertCount(0, Afform::get(FALSE)->addWhere('name', 'CONTAINS', 'TestAfformToDelete')->execute()); } + public function testDisplaysSharingSameFieldset(): void { + OptionGroup::save(FALSE) + ->addRecord([ + 'title' => 'search_test_options', + ]) + ->setMatch(['title']) + ->execute(); + OptionValue::save(FALSE) + ->setDefaults(['option_group_id.name' => 'search_test_options']) + ->addRecord([ + 'label' => 'option_a', + 'value' => 'a', + ]) + ->addRecord([ + 'label' => 'option_b', + 'value' => 'b', + ]) + ->addRecord([ + 'label' => 'option_c', + 'value' => 'c', + 'is_active' => FALSE, + ]) + ->setMatch(['name', 'option_group_id']) + ->execute(); + + $search = SavedSearch::save(FALSE) + ->addRecord([ + 'name' => 'testDisplaysSharingSameFieldset', + 'label' => 'testDisplaysSharingSameFieldset', + 'api_entity' => 'OptionValue', + 'api_params' => [ + 'version' => 4, + 'select' => ['value'], + ], + ]) + ->setMatch(['name']) + ->execute()->first(); + + $display = SearchDisplay::save(FALSE) + ->addRecord([ + 'name' => 'testDisplaysSharingSameFieldset', + 'label' => 'testDisplaysSharingSameFieldset', + 'saved_search_id.name' => 'testDisplaysSharingSameFieldset', + 'type' => 'table', + 'settings' => [ + 'columns' => [ + [ + 'key' => 'value', + 'type' => 'field', + ], + ], + ], + 'acl_bypass' => FALSE, + ]) + ->setMatch(['saved_search_id', 'name']) + ->execute()->first(); + + $baseParams = [ + 'return' => 'page:1', + 'savedSearch' => $search['name'], + 'display' => $display['name'], + 'afform' => 'testDisplaysSharingSameFieldset', + 'filters' => ['option_group_id:name' => 'search_test_options'], + ]; + + // Afform has 2 copies of the same display, with different values for the filter is_active + // This should allow the is_active filters to be set in the params + $params = $baseParams; + $params['filters']['is_active'] = TRUE; + $result = civicrm_api4('SearchDisplay', 'run', $params); + $this->assertCount(2, $result); + + $params = $baseParams; + $params['filters']['is_active'] = FALSE; + $result = civicrm_api4('SearchDisplay', 'run', $params); + $this->assertCount(1, $result); + $this->assertEquals('c', $result[0]['columns'][0]['val']); + + // Because the 2 displays share a fieldset, the filter field should work on both + $params = $baseParams; + $params['filters']['is_active'] = TRUE; + $params['filters']['label'] = 'b'; + $result = civicrm_api4('SearchDisplay', 'run', $params); + $this->assertCount(1, $result); + $this->assertEquals('b', $result[0]['columns'][0]['val']); + + $params = $baseParams; + $params['filters']['is_active'] = FALSE; + $params['filters']['label'] = 'b'; + $result = civicrm_api4('SearchDisplay', 'run', $params); + $this->assertCount(0, $result); + } + } diff --git a/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php b/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php index 9a90a0910c42..9d36159ea814 100644 --- a/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php +++ b/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php @@ -81,6 +81,10 @@ public function testExportSearch() { // Readonly fields should not be included $this->assertArrayNotHasKey('created_date', $export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['values']); $this->assertArrayNotHasKey('modified_date', $export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['values']); + // Match criteria + $this->assertEquals(['name'], $export['SavedSearch_TestSearchToExport']['params']['match']); + sort($export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['match']); + $this->assertEquals(['name', 'saved_search_id'], $export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['match']); // Add a second display SearchDisplay::create(FALSE) diff --git a/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php b/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php index 5251f16ac615..d25f36ced94f 100644 --- a/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php +++ b/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php @@ -31,6 +31,24 @@ public function setUpHeadless(): CiviEnvBuilder { ->apply(); } + /** + * @inheritDoc + */ + protected function setUp(): void { + \CRM_Core_BAO_ConfigSetting::enableAllComponents(); + parent::setUp(); + } + + /** + * @inheritDoc + */ + public function tearDown(): void { + \Civi\Api4\Setting::revert(FALSE) + ->addSelect('geoProvider') + ->execute(); + parent::tearDown(); + } + /** * Test running a searchDisplay with various filters. */ @@ -65,7 +83,7 @@ public function testRunWithFilters() { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -179,7 +197,7 @@ public function testWithTokens() { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -252,7 +270,7 @@ public function testActionAndTaskLinks():void { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -311,10 +329,11 @@ public function testActionAndTaskLinks():void { } public function testRelationshipCacheLinks():void { + $case = $this->createTestRecord('Case'); $relationships = $this->saveTestRecords('Relationship', [ 'records' => [ ['contact_id_a' => $this->createTestRecord('Contact')['id'], 'is_active' => TRUE], - ['contact_id_a' => $this->createTestRecord('Contact')['id'], 'is_active' => FALSE], + ['contact_id_a' => $this->createTestRecord('Contact')['id'], 'is_active' => FALSE, 'case_id' => $case['id']], ], ]); $params = [ @@ -326,11 +345,18 @@ public function testRelationshipCacheLinks():void { 'version' => 4, 'select' => ['near_contact_id.display_name'], 'where' => [['relationship_id', 'IN', $relationships->column('id')]], + 'join' => [ + [ + 'Case AS RelationshipCache_Case_case_id_01', + 'LEFT', + ['case_id', '=', 'RelationshipCache_Case_case_id_01.id'], + ], + ], ], ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -365,6 +391,12 @@ public function testRelationshipCacheLinks():void { 'task' => 'disable', 'condition' => ['is_active', '=', TRUE], ], + [ + 'entity' => 'Case', + 'action' => 'view', + 'join' => 'RelationshipCache_Case_case_id_01', + 'text' => 'Manage Case', + ], ], ], ], @@ -377,6 +409,7 @@ public function testRelationshipCacheLinks():void { $result = civicrm_api4('SearchDisplay', 'run', $params); $this->assertCount(4, $result); $this->assertCount(3, $result[0]['columns'][1]['links']); + $this->assertCount(4, $result[2]['columns'][1]['links']); // 1st link is to a quickform-based action $this->assertArrayNotHasKey('task', $result[0]['columns'][1]['links'][0]); $this->assertStringContainsString('id=' . $relationships[0]['id'], $result[0]['columns'][1]['links'][0]['url']); @@ -392,6 +425,9 @@ public function testRelationshipCacheLinks():void { $this->assertEquals('enable', $result[2]['columns'][1]['links'][2]['task']); $this->assertEquals('enable', $result[3]['columns'][1]['links'][2]['task']); $this->assertStringContainsString('Enable', $result[3]['columns'][1]['links'][2]['title']); + // 4th link is to the case, and only for the relevant entity + $this->assertEquals('Manage Case', $result[2]['columns'][1]['links'][3]['text']); + $this->assertStringContainsString('civicrm', $result[3]['columns'][1]['links'][3]['url']); } /** @@ -430,7 +466,7 @@ public function testRunWithSmartyRewrite() { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -520,7 +556,7 @@ public function testInPlaceEditAndCreate() { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => FALSE, @@ -766,7 +802,7 @@ public function testWithACLBypass() { 'saved_search_id' => '$id', 'name' => $displayName, 'type' => 'table', - 'label' => '', + 'label' => 'TestDisplay', 'acl_bypass' => TRUE, 'settings' => [ 'limit' => 20, @@ -943,7 +979,7 @@ public function testSortByRand() { ], 'display' => [ 'type' => 'list', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -1460,7 +1496,7 @@ public function testEditableContactFields() { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -1825,7 +1861,7 @@ public function testContactTypeIcons(): void { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -1878,7 +1914,7 @@ public function testKeyIsReturned(): void { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -1916,7 +1952,7 @@ public function testRunWithToolbar(): void { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -2036,7 +2072,7 @@ public function testToolbarLinksPermissionOperators($linkOperator, $linkPerms, $ ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -2126,7 +2162,7 @@ public function testRunWithEntityFile(): void { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -2184,6 +2220,44 @@ public function testRunWithEntityFile(): void { $this->assertEquals(['test_file.txt', 'test_file.png', 'test_file_foo.unknown'], array_column($result[0]['columns'][1]['links'], 'text')); } + public function testRunWithAddressProximity(): void { + require_once __DIR__ . '/../../../../../../../tests/phpunit/CRM/Utils/Geocode/TestProvider.php'; + $sampleData = [ + ['geo_code_1' => \CRM_Utils_Geocode_TestProvider::GEO_CODE_1, 'geo_code_2' => \CRM_Utils_Geocode_TestProvider::GEO_CODE_2], + ['geo_code_1' => \CRM_Utils_Geocode_TestProvider::GEO_CODE_1 - .05, 'geo_code_2' => \CRM_Utils_Geocode_TestProvider::GEO_CODE_2 + .05], + ['geo_code_1' => '0', 'geo_code_2' => '0'], + ]; + $addresses = $this->saveTestRecords('Address', ['records' => $sampleData]) + ->column('id'); + + \Civi\Api4\Setting::set(FALSE) + ->addValue('geoProvider', 'TestProvider') + ->execute(); + + $params = [ + 'checkPermissions' => FALSE, + 'return' => 'page:1', + 'savedSearch' => [ + 'api_entity' => 'Address', + 'api_params' => [ + 'version' => 4, + // Hack proximity into select clause to allow filter + 'select' => ['id', 'proximity'], + 'where' => [ + ['id', 'IN', $addresses], + ], + ], + ], + 'display' => NULL, + 'filters' => ['proximity' => ['distance' => 1000, 'address' => \CRM_Utils_Geocode_TestProvider::ADDRESS]], + 'afform' => NULL, + 'debug' => TRUE, + ]; + + $result = civicrm_api4('SearchDisplay', 'run', $params); + $this->assertCount(2, $result); + } + /** * Returns all contacts in VIEW mode but only specified contact for EDIT. * diff --git a/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php b/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php index 2cf32ba633b5..ac81e735ed8b 100644 --- a/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php +++ b/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php @@ -502,4 +502,90 @@ public function testEntityReferenceJoins() { $this->assertEquals('Dewey', $result[0]['columns'][0]['val']); } + public function testJoinWithCustomFieldEndingIn_() { + $subject = uniqid(__FUNCTION__); + + $contact = Contact::create(FALSE) + ->execute()->single(); + + // CustomGroup based on Activity Type + CustomGroup::create(FALSE) + ->addValue('extends', 'Activity') + ->addValue('title', 'testactivity2') + ->addChain('field', CustomField::create() + ->addValue('custom_group_id', '$id') + ->addValue('label', 'testactivity_') + ->addValue('data_type', 'Boolean') + ->addValue('html_type', 'Radio') + ) + ->execute(); + + $sampleData = [ + ['activity_type_id:name' => 'Meeting', 'testactivity2.testactivity_' => TRUE], + ]; + $this->saveTestRecords('Activity', [ + 'defaults' => ['subject' => $subject, 'source_contact_id', $contact['id']], + 'records' => $sampleData, + ]); + + $params = [ + 'checkPermissions' => FALSE, + 'return' => 'page:1', + 'savedSearch' => [ + 'api_entity' => 'Contact', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'GROUP_CONCAT(DISTINCT Contact_ActivityContact_Activity_01.testactivity2.testactivity_:label) AS GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label', + ], + 'orderBy' => [], + 'where' => [['contact_type:name', '=', 'Individual']], + 'groupBy' => ['id'], + 'join' => [ + ['Activity AS Contact_ActivityContact_Activity_01', 'INNER', 'ActivityContact', + ['id', '=', 'Contact_ActivityContact_Activity_01.contact_id'], + ['Contact_ActivityContact_Activity_01.record_type_id:name', '=', '"Activity Source"'], + ['Contact_ActivityContact_Activity_01.activity_type_id:name', '=', '"Meeting"'], + ], + ], + 'having' => [], + ], + ], + 'display' => [ + 'type' => 'table', + 'label' => '', + 'settings' => [ + 'actions' => TRUE, + 'pager' => [], + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'id', + 'dataType' => 'Integer', + 'label' => 'Contact ID', + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label', + 'dataType' => 'Boolean', + 'label' => '(List) Contact Activities: testactivity2: testactivity_', + 'sortable' => TRUE, + ], + ], + 'sort' => [ + ['id', 'ASC'], + ], + ], + ], + 'afform' => NULL, + ]; + + $result = civicrm_api4('SearchDisplay', 'run', $params); + + $this->assertArrayHasKey('GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label', $result[0]['data']); + $this->assertEquals('Yes', $result[0]['data']['GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label'][0]); + } + } diff --git a/ext/search_kit/tests/phpunit/bootstrap.php b/ext/search_kit/tests/phpunit/bootstrap.php index 5133778c8191..63c9148e8e1c 100644 --- a/ext/search_kit/tests/phpunit/bootstrap.php +++ b/ext/search_kit/tests/phpunit/bootstrap.php @@ -26,7 +26,7 @@ */ function cv($cmd, $decode = 'json') { $cmd = 'cv ' . $cmd; - $descriptorSpec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => STDERR); + $descriptorSpec = [0 => ["pipe", "r"], 1 => ["pipe", "w"], 2 => STDERR]; $oldOutput = getenv('CV_OUTPUT'); putenv("CV_OUTPUT=json"); diff --git a/ext/sequentialcreditnotes/info.xml b/ext/sequentialcreditnotes/info.xml index 5adb4899b31b..d0488d5ab129 100644 --- a/ext/sequentialcreditnotes/info.xml +++ b/ext/sequentialcreditnotes/info.xml @@ -15,19 +15,22 @@ http://www.gnu.org/licenses/agpl-3.0.html 2020-01-28 - 5.67.alpha1 + 5.68.alpha1 mgmt:hidden stable - 5.67 + 5.68 setting-php@1.0.0 CRM/Sequentialcreditnotes - 23.02.0 + 23.02.1 + + + diff --git a/ext/sequentialcreditnotes/sequentialcreditnotes.civix.php b/ext/sequentialcreditnotes/sequentialcreditnotes.civix.php index 4b35c35b7634..429615a02827 100644 --- a/ext/sequentialcreditnotes/sequentialcreditnotes.civix.php +++ b/ext/sequentialcreditnotes/sequentialcreditnotes.civix.php @@ -133,8 +133,8 @@ function _sequentialcreditnotes_civix_insert_navigation_menu(&$menu, $path, $ite if (empty($path)) { $menu[] = [ 'attributes' => array_merge([ - 'label' => CRM_Utils_Array::value('name', $item), - 'active' => 1, + 'label' => $item['name'] ?? NULL, + 'active' => 1, ], $item), ]; return TRUE; diff --git a/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php b/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php index d814534a78c4..76ae428a296a 100644 --- a/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php +++ b/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php @@ -6,7 +6,7 @@ * * Generated from standaloneusers/xml/schema/CRM/Standaloneusers/User.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:44014e10073e5e7f63059f09956e77ca) + * (GenCodeChecksum:60852489e3705659312988971c632fb7) */ use CRM_Standaloneusers_ExtensionUtil as E; @@ -22,7 +22,7 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO { * * @var string */ - public static $_tableName = 'civicrm_user'; + public static $_tableName = 'civicrm_uf_match'; /** * Field to show when displaying a record. @@ -58,38 +58,56 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO { public $id; /** - * FK to Contact - possibly redundant + * Which Domain is this match entry for * - * @var int|string|null + * @var int|string * (SQL type: int unsigned) * Note that values will be retrieved from the database as a string. */ - public $contact_id; + public $domain_id; /** - * @var string - * (SQL type: varchar(60)) + * UF ID. Redundant in Standalone. Needs to be identical to id. + * + * @var int|string + * (SQL type: int unsigned) * Note that values will be retrieved from the database as a string. */ - public $username; + public $uf_id; + + /** + * Email (e.g. for password resets) + * + * @var string|null + * (SQL type: varchar(255)) + * Note that values will be retrieved from the database as a string. + */ + public $uf_name; /** - * Hashed password + * FK to Contact ID * + * @var int|string|null + * (SQL type: int unsigned) + * Note that values will be retrieved from the database as a string. + */ + public $contact_id; + + /** * @var string - * (SQL type: varchar(128)) + * (SQL type: varchar(60)) * Note that values will be retrieved from the database as a string. */ - public $password; + public $username; /** - * Email (e.g. for password resets) + * Hashed, not plaintext password * * @var string - * (SQL type: varchar(255)) + * (SQL type: varchar(128)) * Note that values will be retrieved from the database as a string. */ - public $email; + public $hashed_password; /** * FK to Role @@ -138,19 +156,28 @@ class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO { public $timezone; /** - * The language for the user. + * UI language preferred by the given user/contact * - * @var int|string|null - * (SQL type: int unsigned) + * @var string|null + * (SQL type: varchar(5)) * Note that values will be retrieved from the database as a string. */ public $language; + /** + * The unspent token + * + * @var string|null + * (SQL type: varchar(40)) + * Note that values will be retrieved from the database as a string. + */ + public $password_reset_token; + /** * Class constructor. */ public function __construct() { - $this->__table = 'civicrm_user'; + $this->__table = 'civicrm_uf_match'; parent::__construct(); } @@ -173,6 +200,7 @@ public static function getEntityTitle($plural = FALSE) { 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(), 'domain_id', 'civicrm_domain', 'id'); Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'contact_id', 'civicrm_contact', 'id'); CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'links_callback', Civi::$statics[__CLASS__]['links']); } @@ -190,7 +218,7 @@ public static function &fields() { 'id' => [ 'name' => 'id', 'type' => CRM_Utils_Type::T_INT, - 'title' => E::ts('ID'), + 'title' => E::ts('UF Match ID'), 'description' => E::ts('Unique User ID'), 'required' => TRUE, 'usage' => [ @@ -199,8 +227,8 @@ public static function &fields() { 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.id', - 'table_name' => 'civicrm_user', + 'where' => 'civicrm_uf_match.id', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, @@ -208,78 +236,131 @@ public static function &fields() { 'type' => 'Number', ], 'readonly' => TRUE, - 'add' => NULL, + 'add' => '5.67', ], - 'contact_id' => [ - 'name' => 'contact_id', + 'domain_id' => [ + 'name' => 'domain_id', 'type' => CRM_Utils_Type::T_INT, - 'title' => E::ts('Contact ID'), - 'description' => E::ts('FK to Contact - possibly redundant'), + 'title' => E::ts('Domain ID'), + 'description' => E::ts('Which Domain is this match entry for'), + 'required' => TRUE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.contact_id', - 'table_name' => 'civicrm_user', + 'where' => 'civicrm_uf_match.domain_id', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'add' => NULL, + 'FKClassName' => 'CRM_Core_DAO_Domain', + 'html' => [ + 'label' => E::ts("Domain"), + ], + 'pseudoconstant' => [ + 'table' => 'civicrm_domain', + 'keyColumn' => 'id', + 'labelColumn' => 'name', + ], + 'add' => '3.0', ], - 'username' => [ - 'name' => 'username', - 'type' => CRM_Utils_Type::T_STRING, - 'title' => E::ts('Username'), + 'uf_id' => [ + 'name' => 'uf_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => E::ts('CMS ID'), + 'description' => E::ts('UF ID. Redundant in Standalone. Needs to be identical to id.'), 'required' => TRUE, - 'maxlength' => 60, - 'size' => CRM_Utils_Type::BIG, 'usage' => [ 'import' => FALSE, 'export' => FALSE, 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.username', - 'table_name' => 'civicrm_user', + 'where' => 'civicrm_uf_match.uf_id', + 'default' => '0', + 'table_name' => 'civicrm_uf_match', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'add' => '1.1', + ], + 'uf_name' => [ + 'name' => 'uf_name', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => E::ts('User Email'), + 'description' => E::ts('Email (e.g. for password resets)'), + 'maxlength' => 255, + 'size' => CRM_Utils_Type::HUGE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_uf_match.uf_name', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, 'html' => [ - 'type' => 'Text', + 'type' => 'Email', ], 'add' => NULL, ], - 'password' => [ - 'name' => 'password', + 'contact_id' => [ + 'name' => 'contact_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => E::ts('Contact ID'), + 'description' => E::ts('FK to Contact ID'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_uf_match.contact_id', + 'table_name' => 'civicrm_uf_match', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'FKClassName' => 'CRM_Contact_DAO_Contact', + 'html' => [ + 'label' => E::ts("Contact"), + ], + 'add' => '1.1', + ], + 'username' => [ + 'name' => 'username', 'type' => CRM_Utils_Type::T_STRING, - 'title' => E::ts('Password'), - 'description' => E::ts('Hashed password'), + 'title' => E::ts('Username'), 'required' => TRUE, - 'maxlength' => 128, - 'size' => CRM_Utils_Type::HUGE, + 'maxlength' => 60, + 'size' => CRM_Utils_Type::BIG, 'usage' => [ 'import' => FALSE, 'export' => FALSE, 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.password', - 'table_name' => 'civicrm_user', + 'where' => 'civicrm_uf_match.username', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], 'add' => NULL, ], - 'email' => [ - 'name' => 'email', + 'hashed_password' => [ + 'name' => 'hashed_password', 'type' => CRM_Utils_Type::T_STRING, - 'title' => E::ts('Email'), - 'description' => E::ts('Email (e.g. for password resets)'), + 'title' => E::ts('Hashed Password'), + 'description' => E::ts('Hashed, not plaintext password'), 'required' => TRUE, - 'maxlength' => 255, + 'maxlength' => 128, 'size' => CRM_Utils_Type::HUGE, 'usage' => [ 'import' => FALSE, @@ -287,14 +368,13 @@ public static function &fields() { 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.email', - 'table_name' => 'civicrm_user', + 'where' => 'civicrm_uf_match.hashed_password', + 'default' => '', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - ], + 'readonly' => TRUE, 'add' => NULL, ], 'roles' => [ @@ -310,8 +390,8 @@ public static function &fields() { 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.roles', - 'table_name' => 'civicrm_user', + 'where' => 'civicrm_uf_match.roles', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, @@ -338,9 +418,9 @@ public static function &fields() { 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.when_created', + 'where' => 'civicrm_uf_match.when_created', 'default' => 'CURRENT_TIMESTAMP', - 'table_name' => 'civicrm_user', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, @@ -357,8 +437,8 @@ public static function &fields() { 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.when_last_accessed', - 'table_name' => 'civicrm_user', + 'where' => 'civicrm_uf_match.when_last_accessed', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, @@ -375,8 +455,8 @@ public static function &fields() { 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.when_updated', - 'table_name' => 'civicrm_user', + 'where' => 'civicrm_uf_match.when_updated', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, @@ -393,9 +473,9 @@ public static function &fields() { 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.is_active', + 'where' => 'civicrm_uf_match.is_active', 'default' => '1', - 'table_name' => 'civicrm_user', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, @@ -418,8 +498,8 @@ public static function &fields() { 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.timezone', - 'table_name' => 'civicrm_user', + 'where' => 'civicrm_uf_match.timezone', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, @@ -430,27 +510,43 @@ public static function &fields() { ], 'language' => [ 'name' => 'language', - 'type' => CRM_Utils_Type::T_INT, - 'title' => E::ts('Language'), - 'description' => E::ts('The language for the user.'), + 'type' => CRM_Utils_Type::T_STRING, + 'title' => E::ts('Preferred Language'), + 'description' => E::ts('UI language preferred by the given user/contact'), + 'maxlength' => 5, + 'size' => CRM_Utils_Type::SIX, 'usage' => [ 'import' => FALSE, 'export' => FALSE, 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_user.language', - 'table_name' => 'civicrm_user', + 'where' => 'civicrm_uf_match.language', + 'table_name' => 'civicrm_uf_match', 'entity' => 'User', 'bao' => 'CRM_Standaloneusers_DAO_User', 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'languages', - 'optionEditPath' => 'civicrm/admin/options/languages', + 'add' => '2.1', + ], + 'password_reset_token' => [ + 'name' => 'password_reset_token', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => E::ts('Password Reset Token'), + 'description' => E::ts('The unspent token'), + 'maxlength' => 40, + 'size' => CRM_Utils_Type::BIG, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, ], + 'where' => 'civicrm_uf_match.password_reset_token', + 'table_name' => 'civicrm_uf_match', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'readonly' => TRUE, 'add' => NULL, ], ]; @@ -498,7 +594,7 @@ public function getLog() { * @return array */ public static function &import($prefix = FALSE) { - $r = CRM_Core_DAO_AllCoreTables::getImports(__CLASS__, 'user', $prefix, []); + $r = CRM_Core_DAO_AllCoreTables::getImports(__CLASS__, 'uf_match', $prefix, []); return $r; } @@ -510,7 +606,7 @@ public static function &import($prefix = FALSE) { * @return array */ public static function &export($prefix = FALSE) { - $r = CRM_Core_DAO_AllCoreTables::getExports(__CLASS__, 'user', $prefix, []); + $r = CRM_Core_DAO_AllCoreTables::getExports(__CLASS__, 'uf_match', $prefix, []); return $r; } @@ -523,6 +619,14 @@ public static function &export($prefix = FALSE) { */ public static function indices($localize = TRUE) { $indices = [ + 'I_civicrm_uf_match_uf_id' => [ + 'name' => 'I_civicrm_uf_match_uf_id', + 'field' => [ + 0 => 'uf_id', + ], + 'localizable' => FALSE, + 'sig' => 'civicrm_uf_match::0::uf_id', + ], 'UI_username' => [ 'name' => 'UI_username', 'field' => [ @@ -530,7 +634,27 @@ public static function indices($localize = TRUE) { ], 'localizable' => FALSE, 'unique' => TRUE, - 'sig' => 'civicrm_user::1::username', + 'sig' => 'civicrm_uf_match::1::username', + ], + 'UI_uf_name_domain_id' => [ + 'name' => 'UI_uf_name_domain_id', + 'field' => [ + 0 => 'uf_name', + 1 => 'domain_id', + ], + 'localizable' => FALSE, + 'unique' => TRUE, + 'sig' => 'civicrm_uf_match::1::uf_name::domain_id', + ], + 'UI_contact_domain_id' => [ + 'name' => 'UI_contact_domain_id', + 'field' => [ + 0 => 'contact_id', + 1 => 'domain_id', + ], + 'localizable' => FALSE, + 'unique' => TRUE, + 'sig' => 'civicrm_uf_match::1::contact_id::domain_id', ], ]; return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices; diff --git a/ext/standaloneusers/CRM/Standaloneusers/Page/ChangePassword.php b/ext/standaloneusers/CRM/Standaloneusers/Page/ChangePassword.php new file mode 100644 index 000000000000..04c9c3bdc18f --- /dev/null +++ b/ext/standaloneusers/CRM/Standaloneusers/Page/ChangePassword.php @@ -0,0 +1,14 @@ +assign('hibp', CIVICRM_HIBP_URL); + $this->assign('loggedInUserID', CRM_Utils_System::getLoggedInUfID()); + Civi::service('angularjs.loader')->addModules('crmChangePassword'); + // @todo specify the user in the URL somehow. + parent::run(); + } + +} diff --git a/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php b/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php new file mode 100644 index 000000000000..1f18b66c3949 --- /dev/null +++ b/ext/standaloneusers/CRM/Standaloneusers/Page/ResetPassword.php @@ -0,0 +1,32 @@ +assign('hibp', CIVICRM_HIBP_URL); + // $this->assign('loggedInUserID', CRM_Utils_System::getLoggedInUfID()); + Civi::service('angularjs.loader')->addModules('crmResetPassword'); + + // If we have a password reset token, validate it without 'spending' it. + $token = CRM_Utils_Request::retrieveValue('token', 'String', NULL, FALSE, $method = 'GET'); + if ($token) { + if (!Security::singleton()->checkPasswordResetToken($token, FALSE)) { + $token = 'invalid'; + } + $this->assign('token', $token); + } + + parent::run(); + } + +} diff --git a/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php b/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php index ecde5dc97806..ff208b3c45a3 100644 --- a/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php +++ b/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php @@ -1,5 +1,6 @@ set('authx_login_cred', array_unique(array_merge( Civi::settings()->get('authx_login_cred'), ['pass'] ))); - $users = \Civi\Api4\User::get(FALSE)->selectRowCount()->execute()->countMatched(); - if ($users == 0) { - CRM_Core_DAO::executeQuery('DELETE FROM civicrm_uf_match'); - } + $this->createPasswordResetMessageTemplate(); // `standaloneusers` is installed as part of the overall install process for `Standalone`. // A subsequent step will configure some default users (*depending on local options*). // See also: `StandaloneUsers.civi-setup.php` } + protected function createPasswordResetMessageTemplate() { + + $baseTpl = [ + 'workflow_name' => 'password_reset', + 'msg_title' => 'Password reset', + 'msg_subject' => '{ts}Password reset link for{/ts} {domain.name}', + 'msg_text' => << <<{ts}A password reset link was requested for this account.  If this wasn\'t you (and nobody else can access this email account) you can safely ignore this email.{/ts}

+ +

{\$resetUrlHtml}

+ +

{domain.name}

+ HTML, + ]; + + // Create a "reserved" template. This is a pristine copy provided for reference. + MessageTemplate::save(FALSE) + ->setDefaults($baseTpl) + ->setRecords([ + ['is_reserved' => TRUE, 'is_default' => FALSE], + ['is_reserved' => FALSE, 'is_default' => TRUE], + ]) + ->execute(); + + } + /** * Example: Run an external SQL script when the module is uninstalled. */ diff --git a/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php b/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php new file mode 100644 index 000000000000..3797232262d4 --- /dev/null +++ b/ext/standaloneusers/CRM/Standaloneusers/WorkflowMessage/PasswordReset.php @@ -0,0 +1,82 @@ + $token], TRUE, NULL, FALSE); + $resetUrlHtml = htmlspecialchars($resetUrlPlaintext); + $this->logParams = [ + 'userID' => $user['id'], + 'username' => $user['username'], + 'email' => $user['uf_name'], + 'url' => $resetUrlPlaintext, + ]; + $this + ->setResetUrlPlaintext($resetUrlPlaintext) + ->setResetUrlHtml($resetUrlHtml) + ->setUsernamePlaintext($user['username']) + ->setUsernameHtml(htmlspecialchars($user['username'])) + ->setTo($user['uf_name']); + return $this; + } + + public function getParamsForLog(): array { + return $this->logParams; + } + +} diff --git a/ext/standaloneusers/Civi/Api4/Action/User/Create.php b/ext/standaloneusers/Civi/Api4/Action/User/Create.php new file mode 100644 index 000000000000..b28fcf6b5980 --- /dev/null +++ b/ext/standaloneusers/Civi/Api4/Action/User/Create.php @@ -0,0 +1,12 @@ +password)) { + throw new API_Exception("Invalid password"); + } + + // todo: some minimum password quality check? + + // Only valid change here is password, for a known ID. + $security = Security::singleton(); + $userID = $security->checkPasswordResetToken($this->token); + if (!$userID) { + throw new API_Exception("Invalid token."); + } + + User::update(FALSE) + ->addWhere('id', '=', $userID) + ->addValue('password', $this->password) + ->execute(); + + $result['success'] = 1; + \Civi::log()->info("Changed password for user {userID} via User.PasswordReset", compact('userID')); + } + +} diff --git a/ext/standaloneusers/Civi/Api4/Action/User/Save.php b/ext/standaloneusers/Civi/Api4/Action/User/Save.php new file mode 100644 index 000000000000..34148924dd41 --- /dev/null +++ b/ext/standaloneusers/Civi/Api4/Action/User/Save.php @@ -0,0 +1,9 @@ +identifier); + if (!$identifier) { + throw new API_Exception("Missing identifier"); + } + + $user = User::get(FALSE) + ->addSelect('id', 'uf_name', 'username') + ->addWhere('is_active', '=', TRUE) + ->setLimit(1) + ->addWhere( + filter_var($identifier, FILTER_VALIDATE_EMAIL) ? 'uf_name' : 'username', + '=', + $identifier) + ->execute() + ->first(); + $userID = $user['id'] ?? 0; + + try { + // Allow flood control by extensions. (e.g. Moat). + $event = \Civi\Core\Event\GenericHookEvent::create([ + 'action' => 'send_password_reset', + 'identifiers' => ["user:$userID"], + ]); + \Civi::dispatcher()->dispatch('civi.flood.drip', $event); + } + catch (\Exception $e) { + // If we caught an exception, disable sending. + $userID = 0; + } + + if ($userID) { + // (Re)generate token and store on User. + $token = static::updateToken($userID); + + $workflowMessage = Security::singleton()->preparePasswordResetWorkflow($user, $token); + if ($workflowMessage) { + // The template_params are used in the template like {$resetUrlHtml} and {$resetUrlHtml} {$usernamePlaintext} {$usernameHtml} + try { + [$sent, /*$subject, $text, $html*/] = $workflowMessage->sendTemplate(); + if (!$sent) { + throw new \RuntimeException("sendTemplate() returned unsent."); + } + Civi::log()->info("Successfully sent password reset to user {userID} ({username}) to {email}", $workflowMessage->getParamsForLog()); + } + catch (\Exception $e) { + Civi::log()->error("Failed to send password reset to user {userID} ({username}) to {email}", $workflowMessage->getParamsForLog() + ['exception' => $e]); + } + } + } + + // Ensure we took at least 0.25s. The assumption is that it takes + // less than 0.25s to generate and send an email, and so this will + // disguise whether an email has been sent or not. It's won't + // thwart concerted timing attacks, but in combination with flood + // control, it might help. + usleep(1000000 * max(0, $endNoSoonerThan - microtime(TRUE))); + } + + /** + * Generate and store a token on the User record. + * + * @param int $userID + * + * @return string + * The token + */ + public static function updateToken(int $userID): string { + // Generate a once-use token that expires in 1 hour. + // We'll store this on the User record, that way invalidating any previous token that may have been generated. + // The format is + // The UserID shouldn't need to be secret. + // We only store on the User record. + $expires = time() + 60 * 60; + $token = dechex($expires) . substr(preg_replace('@[/+=]+@', '', base64_encode(random_bytes(64))), 0, 32); + + User::update(FALSE) + ->addValue('password_reset_token', $token) + ->addWhere('id', '=', $userID) + ->execute(); + + return $token . dechex($userID); + } + +} diff --git a/ext/standaloneusers/Civi/Api4/Action/User/Update.php b/ext/standaloneusers/Civi/Api4/Action/User/Update.php new file mode 100644 index 000000000000..2fcdace1f838 --- /dev/null +++ b/ext/standaloneusers/Civi/Api4/Action/User/Update.php @@ -0,0 +1,9 @@ +getCheckPermissions()) { + // We must have a logged in user if we're checking permissions. + $loggedInUserID = \CRM_Utils_System::getLoggedInUfID(); + if (!$loggedInUserID) { + throw new UnauthorizedException("Unauthorized"); + } + + // We never allow one user to directly change the hashed password of another. + // We assume that directly setting hashed_password would only ever be done by + // integration/migration scripts which would not use checkPermissions() + // Some other things should also not be changed by permissioned API call. + $disallowChanging = ['hashed_password', 'when_created', 'when_last_accessed', 'when_updated']; + $forbidden = array_intersect_key($record, array_flip($disallowChanging)); + if ($forbidden) { + throw new UnauthorizedException("Not allowed to change " . implode(' or ', array_keys($forbidden))); + } + + $requireAdminPermissionToChange = ['contact_id', 'roles', 'is_active']; + $forbidden = array_intersect_key($record, array_flip($requireAdminPermissionToChange)); + if (!\CRM_Core_Permission::check(['cms:administer users']) && $forbidden) { + throw new UnauthorizedException("Not allowed to change " . implode(' or ', array_keys($forbidden))); + } + } + if (array_key_exists('password', $record)) { + if (!empty($record['hashed_password'])) { + throw new API_Exception("Ambiguous password parameters: Cannot pass password AND hashed_password."); + } + if (empty($record['password'])) { + throw new API_Exception("Disallowing empty password."); + } + } + parent::formatWriteValues($record); + } + + /** + * This is called with the values for a record fully loaded. + * + * Note that we will now have hashed_password, as well as possibly password. + * + */ + protected function validateValues() { + if (!$this->getCheckPermissions()) { + return; + } + $loggedInUserID = \CRM_Utils_System::getLoggedInUfID() ?? FALSE; + $hasAdminPermission = \CRM_Core_Permission::check(['cms:administer users']); + $authenticatedAsLoggedInUser = FALSE; + $security = Security::singleton(); + // Check that we have the logged-in-user's password. + if ($this->actorPassword && $loggedInUserID) { + $storedHashedPassword = \Civi\Api4\User::get(FALSE) + ->addWhere('id', '=', $loggedInUserID) + ->addSelect('hashed_password') + ->execute() + ->single()['hashed_password']; + if (!$security->checkPassword($this->actorPassword, $storedHashedPassword)) { + throw new UnauthorizedException("Incorrect password"); + } + $authenticatedAsLoggedInUser = TRUE; + } + + $records = ($this->getActionName() === 'save') ? $this->records : [$this->getValues()]; + foreach ($records as $values) { + // Cases: + // 1. Not logged in: only valid change is password, if we have a passwordResetToken. + // 2. Logged in: if change includes password, require $authenticatedAsLoggedInUser + // 2.1 if changing a different user to the logged in user, require $hasAdminPermission + // 3. Logged in: change is without password + // 3.1 if changing a different user to the logged in user, require $hasAdminPermission + + $changingPassword = array_key_exists('password', $values); + if (!$loggedInUserID) { + throw new UnauthorizedException("Unauthorized"); + } + else { + $changingOtherUser = ($values['id'] ?? FALSE) !== $loggedInUserID; + if ($changingOtherUser && !$hasAdminPermission) { + throw new UnauthorizedException("You are not permitted to change other users' accounts."); + } + if ($changingPassword && !$authenticatedAsLoggedInUser) { + throw new UnauthorizedException("Unauthorized"); + } + } + } + } + + /** + * Overrideable function to save items using the appropriate BAO function + * + * @param array[] $items + * Items already formatted by self::writeObjects + * @return \CRM_Core_DAO[] + * Array of saved DAO records + */ + protected function write(array $items) { + foreach ($items as &$item) { + // If given, convert password to hashed_password now. + if (isset($item['password'])) { + $item['hashed_password'] = Security::singleton()->hashPassword($item['password']); + unset($item['password']); + } + } + unset($item); + + // Call parent to do the main saving. + $saved = parent::write($items); + + // Enforce uf_id === id + foreach ($saved as $bao) { + if ($bao->uf_id !== $bao->id) { + $bao->uf_id = $bao->id; + $bao->save(); + } + } + return $saved; + } + +} diff --git a/ext/standaloneusers/Civi/Api4/Service/Spec/Provider/UserSpecProvider.php b/ext/standaloneusers/Civi/Api4/Service/Spec/Provider/UserSpecProvider.php new file mode 100644 index 000000000000..486fa97f871e --- /dev/null +++ b/ext/standaloneusers/Civi/Api4/Service/Spec/Provider/UserSpecProvider.php @@ -0,0 +1,42 @@ +setTitle(ts('New password')); + $password->setDescription('Provide a new password for this user.'); + $password->setInputType('Password'); + $spec->addFieldSpec($password); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'User' && in_array($action, ['create', 'update', 'save']); + } + +} diff --git a/ext/standaloneusers/Civi/Api4/User.php b/ext/standaloneusers/Civi/Api4/User.php index ddb629fadda2..a013da726932 100644 --- a/ext/standaloneusers/Civi/Api4/User.php +++ b/ext/standaloneusers/Civi/Api4/User.php @@ -1,6 +1,11 @@ setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return \Civi\Api4\Action\User\Create + */ + public static function create($checkPermissions = TRUE): Create { + return (new Create(static::getEntityName(), __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return \Civi\Api4\Action\User\Update + */ + public static function update($checkPermissions = TRUE): Update { + return (new Update(static::getEntityName(), __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return \Civi\Api4\Action\User\SendPasswordReset + */ + public static function sendPasswordReset($checkPermissions = TRUE): SendPasswordReset { + return (new SendPasswordReset(static::getEntityName(), __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + + /** + * Permissions are wide on this but are checked in validateValues. + */ + public static function permissions() { + return [ + 'default' => ['access CiviCRM'], + 'passwordReset' => ['access password resets'], + 'sendPasswordReset' => ['access password resets'], + ]; + } + } diff --git a/ext/standaloneusers/Civi/Authx/Standalone.php b/ext/standaloneusers/Civi/Authx/Standalone.php index 0eea52cc9f84..f3156c5127ac 100644 --- a/ext/standaloneusers/Civi/Authx/Standalone.php +++ b/ext/standaloneusers/Civi/Authx/Standalone.php @@ -21,7 +21,7 @@ class Standalone implements AuthxInterface { public function checkPassword(string $username, string $password) { $security = Security::singleton(); $user = $security->loadUserByName($username); - return $security->checkPassword($password, $user['password'] ?? '') ? $user['id'] : NULL; + return $security->checkPassword($password, $user['hashed_password'] ?? '') ? $user['id'] : NULL; } /** diff --git a/ext/standaloneusers/Civi/Standalone/PasswordAlgorithms/AlgorithmInterface.php b/ext/standaloneusers/Civi/Standalone/PasswordAlgorithms/AlgorithmInterface.php new file mode 100644 index 000000000000..edfdde795c03 --- /dev/null +++ b/ext/standaloneusers/Civi/Standalone/PasswordAlgorithms/AlgorithmInterface.php @@ -0,0 +1,21 @@ +_d7_password_crypt('sha512', $plaintext, $storedPassword)); + } + + /** + * Creates a hashed value to store for given password. + * + * Responsible for loading any of its configurable settings. + * + */ + public function hashPassword(string $plaintext): string { + return $this->_d7_password_crypt('sha512', $plaintext, $this->_d7_password_generate_salt()); + } + + /** + * This is taken from Drupal 7.91 + * + * Encodes bytes into printable base 64 using the *nix standard from crypt(). + * + * @param $input + * The string containing bytes to encode. + * @param $count + * The number of characters (bytes) to encode. + * + * @return string + * Encoded string + */ + public function _d7_password_base64_encode($input, $count): string { + $output = ''; + $i = 0; + $itoa64 = self::ITOA64; + do { + $value = ord($input[$i++]); + $output .= $itoa64[$value & 0x3f]; + if ($i < $count) { + $value |= ord($input[$i]) << 8; + } + $output .= $itoa64[($value >> 6) & 0x3f]; + if ($i++ >= $count) { + break; + } + if ($i < $count) { + $value |= ord($input[$i]) << 16; + } + $output .= $itoa64[($value >> 12) & 0x3f]; + if ($i++ >= $count) { + break; + } + $output .= $itoa64[($value >> 18) & 0x3f]; + } while ($i < $count); + + return $output; + } + + /** + * This is taken from Drupal 7.91 + * + * Generates a random base 64-encoded salt prefixed with settings for the hash. + * + * Proper use of salts may defeat a number of attacks, including: + * - The ability to try candidate passwords against multiple hashes at once. + * - The ability to use pre-hashed lists of candidate passwords. + * - The ability to determine whether two users have the same (or different) + * password without actually having to guess one of the passwords. + * + * @param $count_log2 + * Integer that determines the number of iterations used in the hashing + * process. A larger value is more secure, but takes more time to complete. + * + * @return string + * A 12 character string containing the iteration count and a random salt. + */ + public function _d7_password_generate_salt($count_log2 = NULL): string { + + // Standalone: D7 has this stored as a CMS variable setting. + // @todo use global setting that can be changed in civicrm.settings.php + // For now, we just pick a value half way between our hard-coded min and max. + if ($count_log2 === NULL) { + $count_log2 = (int) ((static::$maxHashCount + static::$minHashCount) / 2); + } + $output = '$S$'; + // Ensure that $count_log2 is within set bounds. + $count_log2 = max(static::$minHashCount, min(static::$maxHashCount, $count_log2)); + // We encode the final log2 iteration count in base 64. + $output .= self::ITOA64[$count_log2]; + // 6 bytes is the standard salt for a portable phpass hash. + $output .= $this->_d7_password_base64_encode(random_bytes(6), 6); + return $output; + } + + /** + * This is taken from Drupal 7.91 + * + * Hash a password using a secure stretched hash. + * + * By using a salt and repeated hashing the password is "stretched". Its + * security is increased because it becomes much more computationally costly + * for an attacker to try to break the hash by brute-force computation of the + * hashes of a large number of plain-text words or strings to find a match. + * + * @param $algo + * The string name of a hashing algorithm usable by hash(), like 'sha256'. + * @param $password + * Plain-text password up to 512 bytes (128 to 512 UTF-8 characters) to hash. + * @param $setting + * An existing hash or the output of _d7_password_generate_salt(). Must be + * at least 12 characters (the settings and salt). + * + * @return string|bool + * A string containing the hashed password (and salt) or FALSE on failure. + * The return string will be truncated at DRUPAL_HASH_LENGTH characters max. + */ + protected function _d7_password_crypt($algo, $password, $setting) { + // Prevent DoS attacks by refusing to hash large passwords. + if (strlen($password) > 512) { + return FALSE; + } + // The first 12 characters of an existing hash are its setting string. + $setting = substr($setting, 0, 12); + + if ($setting[0] != '$' || $setting[2] != '$') { + return FALSE; + } + + $count_log2 = strpos(self::ITOA64, $setting[3]); + + // Hashes may be imported from elsewhere, so we allow != DRUPAL_HASH_COUNT + if ($count_log2 < self::$minHashCount || $count_log2 > self::$maxHashCount) { + return FALSE; + } + $salt = substr($setting, 4, 8); + // Hashes must have an 8 character salt. + if (strlen($salt) != 8) { + return FALSE; + } + + // Convert the base 2 logarithm into an integer. + $count = 1 << $count_log2; + $hash = hash($algo, $password, TRUE); + do { + $hash = hash($algo, $hash . $password, TRUE); + } while (--$count); + + $len = strlen($hash); + $output = $setting . $this->_d7_password_base64_encode($hash, $len); + // _d7_password_base64_encode() of a 16 byte MD5 will always be 22 characters. + // _d7_password_base64_encode() of a 64 byte sha512 will always be 86 characters. + $expected = 12 + ceil((8 * $len) / 6); + return (strlen($output) == $expected) ? substr($output, 0, self::$hashLength) : FALSE; + } + +} diff --git a/ext/standaloneusers/Civi/Standalone/Security.php b/ext/standaloneusers/Civi/Standalone/Security.php index a6ddaa0792bc..587f1f504e14 100644 --- a/ext/standaloneusers/Civi/Standalone/Security.php +++ b/ext/standaloneusers/Civi/Standalone/Security.php @@ -2,6 +2,10 @@ namespace Civi\Standalone; use CRM_Core_Session; +use Civi; +use Civi\Api4\User; +use Civi\Api4\MessageTemplate; +use CRM_Standaloneusers_WorkflowMessage_PasswordReset; /** * This is a single home for security related functions for Civi Standalone. @@ -12,13 +16,6 @@ */ class Security { - public const ITOA64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; - - public static $minHashCount = 7; - public static $maxHashCount = 30; - public static $hashLength = 55; - public static $hashMethod = 'sha512'; - /** * @return static */ @@ -29,24 +26,6 @@ public static function singleton() { return \Civi::$statics[__METHOD__]; } - /** - * Check whether a password matches a hashed version. - */ - public function checkPassword(string $plaintextPassword, string $storedHashedPassword): bool { - $type = substr($storedHashedPassword, 0, 3); - switch ($type) { - case '$S$': - // A normal Drupal 7 password. - $hash = $this->_password_crypt(static::$hashMethod, $plaintextPassword, $storedHashedPassword); - break; - - default: - // Invalid password - return FALSE; - } - return hash_equals($storedHashedPassword, $hash); - } - /** * CRM_Core_Permission_Standalone::check() delegates here. * @@ -154,30 +133,29 @@ public function logoutUser() { * - 'cms_name' * - 'cms_pass' plaintext password * - 'notify' boolean - * @param string $mailParam + * @param string $emailParam * Name of the $param which contains the email address. * * @return int|bool * uid if user was created, false otherwise */ - public function createUser(&$params, $mailParam) { + public function createUser(&$params, $emailParam) { try { - // Q. should this be in the api for User.create? - $hashedPassword = $this->_password_crypt(static::$hashMethod, $params['cms_pass'], $this->_password_generate_salt()); - $mail = $params[$mailParam]; - - $userID = \Civi\Api4\User::create(FALSE) + $email = $params[$emailParam]; + $userID = User::create(FALSE) ->addValue('username', $params['cms_name']) - ->addValue('email', $mail) - ->addValue('password', $hashedPassword) + ->addValue('uf_name', $email) + ->addValue('password', $params['cms_pass']) + ->addValue('contact_id', $params['contact_id'] ?? NULL) + // ->addValue('uf_id', 0) // does not work without this. ->execute()->single()['id']; } catch (\Exception $e) { - \Civi::log()->warning("Failed to create user '$mail': " . $e->getMessage()); + \Civi::log()->warning("Failed to create user '$email': " . $e->getMessage()); return FALSE; } - // @todo This is what Drupal does, but it's unclear why. + // @todo This next line is what Drupal does, but it's unclear why. // I think it assumes we want to be logged in as this contact, and as there's no uf match, it's not in civi. // But I'm not sure if we are always becomming this user; I'm not sure waht calls this function. // CRM_Core_Config::singleton()->inCiviCRM = FALSE; @@ -193,7 +171,7 @@ public function createUser(&$params, $mailParam) { public function updateCMSName($ufID, $email) { \Civi\Api4\User::update(FALSE) ->addWhere('id', '=', $ufID) - ->addValue('email', $email) + ->addValue('uf_name', $email) ->execute(); } @@ -314,140 +292,164 @@ public function synchronizeUsers() { } /** - * This is taken from Drupal 7.91 - * - * Hash a password using a secure stretched hash. - * - * By using a salt and repeated hashing the password is "stretched". Its - * security is increased because it becomes much more computationally costly - * for an attacker to try to break the hash by brute-force computation of the - * hashes of a large number of plain-text words or strings to find a match. - * - * @param $algo - * The string name of a hashing algorithm usable by hash(), like 'sha256'. - * @param $password - * Plain-text password up to 512 bytes (128 to 512 UTF-8 characters) to hash. - * @param $setting - * An existing hash or the output of _password_generate_salt(). Must be - * at least 12 characters (the settings and salt). - * - * @return string|bool - * A string containing the hashed password (and salt) or FALSE on failure. - * The return string will be truncated at DRUPAL_HASH_LENGTH characters max. + * High level function to encrypt password using the site-default mechanism. */ - public function _password_crypt($algo, $password, $setting) { - // Prevent DoS attacks by refusing to hash large passwords. - if (strlen($password) > 512) { - return FALSE; + public function hashPassword(string $plaintext): string { + // For now, we just implement D7's but this should be configurable. + // Sites should be able to move from one password hashing algo to another + // e.g. if a vulnerability is discovered. + $algo = new \Civi\Standalone\PasswordAlgorithms\Drupal7(); + return $algo->hashPassword($plaintext); + } + + /** + * Check whether a password matches a hashed version. + */ + public function checkPassword(string $plaintextPassword, string $storedHashedPassword): bool { + + if (preg_match('@^\$S\$[A-Za-z./0-9]{52}$@', $storedHashedPassword)) { + // Looks like a default D7 password. + $algo = new \Civi\Standalone\PasswordAlgorithms\Drupal7(); + return $algo->checkPassword($plaintextPassword, $storedHashedPassword); } - // The first 12 characters of an existing hash are its setting string. - $setting = substr($setting, 0, 12); - if ($setting[0] != '$' || $setting[2] != '$') { + if (preg_match('@^\$P\$B[a-zA-Z0-9./]{30}$@', $storedHashedPassword)) { + Civi::log()->warning("Denying access to user whose password looks like a WordPress one because we haven't coded support for that."); return FALSE; } - $count_log2 = strpos(self::ITOA64, $setting[3]); - - // Hashes may be imported from elsewhere, so we allow != DRUPAL_HASH_COUNT - if ($count_log2 < self::$minHashCount || $count_log2 > self::$maxHashCount) { + // See if we can parse it against this spec... + // One day we might like to support this format because it allows all sorts of hashing algorithms. + // https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md + // $[$v=][$=(,=)*][$[$]] + if (!preg_match('/ + ^ + \$([a-z0-9-]{1,32}) # Match 1 algorithm identifier + (\$v=[0-9+])? # Match 2 optional version + (\$[a-z0-9-]{1,32}=[a-zA-Z0-9/+.-]*(?:,[a-z0-9-]{1,32}=[a-zA-Z0-9/+.-]*)*)? # 3: optional parameters + \$([a-zA-Z0-9/+.-]+) # Match 4 salt + \$([a-zA-Z0-9/+]+) # Match 5 B64 encoded hash + $/x', $storedHashedPassword, $matches)) { + + Civi::log()->warning("Denying access to user whose stored password is not in a format we can parse."); return FALSE; } - $salt = substr($setting, 4, 8); - // Hashes must have an 8 character salt. - if (strlen($salt) != 8) { - return FALSE; + [, $identifier, $version, $params, $salt, $hash] = $matches; + + // Map type to algorithm name. Some common ones here, but we don't implement them all. + $algo = [ + '1' => 'md5', + '5' => 'sha256_crypt', + '6' => 'sha512_crypt', + '2' => 'bcrypt', + '2b' => 'bcrypt', + '2x' => 'bcrypt', + '2y' => 'bcrypt', + ][$identifier] ?? ''; + + $version = ltrim($version, '$'); + $parsedParams = []; + if (!empty($params)) { + $parsedParams = []; + foreach (explode(',', (ltrim($params, '$'))) as $kv) { + [$k, $v] = explode('=', $kv); + $parsedParams[$k] = $v; + } } + $params = $parsedParams; + + // salt and hash should be base64 encoded. + $salt = base64_decode(ltrim($salt, '$'), TRUE); + $hash = base64_decode(ltrim($hash, '$'), TRUE); - // Convert the base 2 logarithm into an integer. - $count = 1 << $count_log2; - $hash = hash($algo, $password, TRUE); - do { - $hash = hash($algo, $hash . $password, TRUE); - } while (--$count); - - $len = strlen($hash); - $output = $setting . $this->_password_base64_encode($hash, $len); - // _password_base64_encode() of a 16 byte MD5 will always be 22 characters. - // _password_base64_encode() of a 64 byte sha512 will always be 86 characters. - $expected = 12 + ceil((8 * $len) / 6); - return (strlen($output) == $expected) ? substr($output, 0, self::$hashLength) : FALSE; + // @todo + // Implement a pluggable interface here to handle some of these password types or more. + Civi::log()->warning("Denying access to user whose stored password relies on '$algo' which we have not implemented yet."); + return FALSE; } /** - * This is taken from Drupal 7.91 - * - * Generates a random base 64-encoded salt prefixed with settings for the hash. + * Check a password reset token matches for a User. * - * Proper use of salts may defeat a number of attacks, including: - * - The ability to try candidate passwords against multiple hashes at once. - * - The ability to use pre-hashed lists of candidate passwords. - * - The ability to determine whether two users have the same (or different) - * password without actually having to guess one of the passwords. + * @param string $token + * @param bool $spend + * If TRUE, and the token matches, the token is then reset; so it can only be used once. + * If FALSE no changes are made. * - * @param $count_log2 - * Integer that determines the number of iterations used in the hashing - * process. A larger value is more secure, but takes more time to complete. + * @return NULL|int + * If int, it's the UserID * - * @return string - * A 12 character string containing the iteration count and a random salt. */ - public function _password_generate_salt($count_log2 = NULL): string { + public function checkPasswordResetToken(string $token, bool $spend = TRUE): ?int { + if (!preg_match('/^([0-9a-f]{8})([a-zA-Z0-9]{32})([0-9a-f]+)$/', $token, $matches)) { + // Hacker + Civi::log()->warning("Rejected passwordResetToken with invalid syntax.", compact('token')); + return NULL; + } + + $userID = hexdec($matches[3]); + if (!$userID > 0) { + // Hacker + Civi::log()->warning("Rejected passwordResetToken with invalid userID.", compact('token', 'userID')); + return NULL; + } + + $expiry = hexdec($matches[1]); + if (time() > $expiry) { + // Less serious + Civi::log()->info("Rejected expired passwordResetToken for user $userID"); + return NULL; + } - // Standalone: D7 has this stored as a CMS variable setting. - // @todo use global setting that can be changed in civicrm.settings.php - // For now, we just pick a value half way between our hard-coded min and max. - if ($count_log2 === NULL) { - $count_log2 = (int) ((static::$maxHashCount + static::$minHashCount) / 2); + $storedToken = $matches[1] . $matches[2]; + $matched = User::get(FALSE) + ->addWhere('id', '=', $userID) + ->addWhere('password_reset_token', '=', $storedToken) + ->addWhere('is_active', '=', 1) + ->selectRowCount() + ->execute()->countMatched() === 1; + + if ($matched && $spend) { + $matched = User::update(FALSE) + ->addWhere('id', '=', $userID) + ->addValue('password_reset_token', NULL) + ->execute(); } - $output = '$S$'; - // Ensure that $count_log2 is within set bounds. - $count_log2 = max(static::$minHashCount, min(static::$maxHashCount, $count_log2)); - // We encode the final log2 iteration count in base 64. - $output .= self::ITOA64[$count_log2]; - // 6 bytes is the standard salt for a portable phpass hash. - $output .= $this->_password_base64_encode(random_bytes(6), 6); - return $output; + Civi::log()->info(($matched ? 'Accepted' : 'Rejected') . " passwordResetToken for user $userID"); + return $matched ? $userID : NULL; } /** - * This is taken from Drupal 7.91 - * - * Encodes bytes into printable base 64 using the *nix standard from crypt(). - * - * @param $input - * The string containing bytes to encode. - * @param $count - * The number of characters (bytes) to encode. + * Prepare a password reset workflow email, if configured. * - * @return string - * Encoded string + * @return \CRM_Standaloneusers_WorkflowMessage_PasswordReset|null */ - public function _password_base64_encode($input, $count): string { - $output = ''; - $i = 0; - $itoa64 = self::ITOA64; - do { - $value = ord($input[$i++]); - $output .= $itoa64[$value & 0x3f]; - if ($i < $count) { - $value |= ord($input[$i]) << 8; - } - $output .= $itoa64[($value >> 6) & 0x3f]; - if ($i++ >= $count) { - break; - } - if ($i < $count) { - $value |= ord($input[$i]) << 16; - } - $output .= $itoa64[($value >> 12) & 0x3f]; - if ($i++ >= $count) { - break; - } - $output .= $itoa64[($value >> 18) & 0x3f]; - } while ($i < $count); + public function preparePasswordResetWorkflow(array $user, string $token): ?CRM_Standaloneusers_WorkflowMessage_PasswordReset { + // Find the message template + $tplID = MessageTemplate::get(FALSE) + ->setSelect(['id']) + ->addWhere('workflow_name', '=', 'password_reset') + ->addWhere('is_default', '=', TRUE) + ->addWhere('is_reserved', '=', FALSE) + ->addWhere('is_active', '=', TRUE) + ->execute()->first()['id']; + if (!$tplID) { + // Some sites may deliberately disable this, but it's unusual, so leave a notice in the log. + Civi::log()->notice("There is no active, default password_reset message template, which has prevented emailing a reset to {username}", ['username' => $user['username']]); + return NULL; + } + if (!filter_var($user['uf_name'] ?? '', \FILTER_VALIDATE_EMAIL)) { + Civi::log()->warning("User $user[id] has an invalid email. Failed to send password reset."); + return NULL; + } + + // The template_params are used in the template like {$resetUrlHtml} and {$resetUrlHtml} {$usernamePlaintext} {$usernameHtml} + list($domainFromName, $domainFromEmail) = \CRM_Core_BAO_Domain::getNameAndEmail(TRUE); + $workflowMessage = (new \CRM_Standaloneusers_WorkflowMessage_PasswordReset()) + ->setDataFromUser($user, $token) + ->setFrom("\"$domainFromName\" <$domainFromEmail>"); - return $output; + return $workflowMessage; } } diff --git a/ext/standaloneusers/ang/afformX.aff.html b/ext/standaloneusers/ang/afformEditRole.aff.html similarity index 100% rename from ext/standaloneusers/ang/afformX.aff.html rename to ext/standaloneusers/ang/afformEditRole.aff.html diff --git a/ext/standaloneusers/ang/afformEditRole.aff.php b/ext/standaloneusers/ang/afformEditRole.aff.php new file mode 100644 index 000000000000..07420f89beea --- /dev/null +++ b/ext/standaloneusers/ang/afformEditRole.aff.php @@ -0,0 +1,11 @@ + 'form', + 'title' => E::ts('Edit Role'), + 'icon' => 'fa-list-alt', + 'server_route' => 'civicrm/admin/role', + 'permission' => ['access CiviCRM'], + 'redirect' => 'civicrm/admin/roles', +]; diff --git a/ext/standaloneusers/ang/afformEditUserAccount.aff.html b/ext/standaloneusers/ang/afformEditUserAccount.aff.html index 739d072112de..53e67473d196 100644 --- a/ext/standaloneusers/ang/afformEditUserAccount.aff.html +++ b/ext/standaloneusers/ang/afformEditUserAccount.aff.html @@ -3,7 +3,7 @@
- + diff --git a/ext/standaloneusers/ang/afformEditUserAccount.aff.json b/ext/standaloneusers/ang/afformEditUserAccount.aff.json deleted file mode 100644 index a8c6ea005f1e..000000000000 --- a/ext/standaloneusers/ang/afformEditUserAccount.aff.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "form", - "requires": [], - "entity_type": null, - "join_entity": null, - "title": "Edit User account", - "description": "", - "is_dashlet": false, - "is_public": false, - "is_token": false, - "contact_summary": null, - "summary_contact_type": null, - "icon": "fa-list-alt", - "server_route": "civicrm/admin/user", - "permission": "cms:administer users", - "redirect": "/civicrm/admin/users", - "create_submission": true, - "navigation": null -} diff --git a/ext/standaloneusers/ang/afformEditUserAccount.aff.php b/ext/standaloneusers/ang/afformEditUserAccount.aff.php new file mode 100644 index 000000000000..2c8ce2c33ba0 --- /dev/null +++ b/ext/standaloneusers/ang/afformEditUserAccount.aff.php @@ -0,0 +1,11 @@ + 'form', + 'title' => E::ts('Edit User account'), + 'icon' => 'fa-list-alt', + 'server_route' => 'civicrm/admin/user', + 'permission' => ['cms:administer users'], + 'redirect' => '/civicrm/admin/users', +]; diff --git a/ext/standaloneusers/ang/afformX.aff.json b/ext/standaloneusers/ang/afformX.aff.json deleted file mode 100644 index d7979beb90f7..000000000000 --- a/ext/standaloneusers/ang/afformX.aff.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "form", - "title": "Edit Role", - "icon": "fa-list-alt", - "server_route": "civicrm/admin/role", - "permission": "access CiviCRM", - "redirect": "civicrm/admin/roles", - "create_submission": true, - "requires": [], - "description": "", - "is_dashlet": false, - "is_public": false, - "is_token": false, - "entity_type": null, - "join_entity": null, - "contact_summary": null, - "summary_contact_type": null, - "navigation": null -} diff --git a/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html b/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html index fd9a7e7c9d79..669ca2e222a9 100644 --- a/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html +++ b/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html @@ -1,15 +1,15 @@
- - + +

{{:: ts('User accounts allow people to access CiviCRM. What they can access is determined by which roles the users have, and what permissions are granted to those roles.') }}

- - + +
- +
diff --git a/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json b/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json deleted file mode 100644 index 0608fbdfe33a..000000000000 --- a/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "search", - "requires": [], - "entity_type": null, - "join_entity": null, - "title": "Administer User Accounts", - "description": "", - "is_dashlet": false, - "is_public": false, - "is_token": false, - "contact_summary": null, - "summary_contact_type": null, - "icon": "fa-users", - "server_route": "civicrm/admin/users", - "permission": "cms:administer users", - "redirect": null, - "create_submission": false, - "navigation": { - "parent": "Users and Permissions", - "label": "User Accounts", - "weight": 0 - } -} diff --git a/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php b/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php new file mode 100644 index 000000000000..c2bf7bc7b75b --- /dev/null +++ b/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php @@ -0,0 +1,15 @@ + 'search', + 'title' => E::ts('Administer User Accounts'), + 'icon' => 'fa-users', + 'server_route' => 'civicrm/admin/users', + 'permission' => ['cms:administer users'], + 'navigation' => [ + 'parent' => 'Users and Permissions', + 'label' => E::ts('User Accounts'), + 'weight' => 0, + ], +]; diff --git a/ext/standaloneusers/ang/afsearchUserRoles.aff.json b/ext/standaloneusers/ang/afsearchUserRoles.aff.json deleted file mode 100644 index 46224d8692dd..000000000000 --- a/ext/standaloneusers/ang/afsearchUserRoles.aff.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "search", - "title": "User Roles", - "description": "List of roles defined on the system.", - "icon": "fa-graduation-cap", - "server_route": "civicrm/admin/roles", - "permission": "cms:administer users", - "navigation": { - "parent": "Users and Permissions", - "label": "User Roles", - "weight": 0 - }, - "requires": [], - "is_dashlet": false, - "is_public": false, - "is_token": false, - "entity_type": null, - "join_entity": null, - "contact_summary": null, - "summary_contact_type": null, - "redirect": null, - "create_submission": null -} diff --git a/ext/standaloneusers/ang/afsearchUserRoles.aff.php b/ext/standaloneusers/ang/afsearchUserRoles.aff.php new file mode 100644 index 000000000000..85fd811028da --- /dev/null +++ b/ext/standaloneusers/ang/afsearchUserRoles.aff.php @@ -0,0 +1,16 @@ + 'search', + 'title' => E::ts('User Roles'), + 'description' => E::ts('List of roles defined on the system.'), + 'icon' => 'fa-graduation-cap', + 'server_route' => 'civicrm/admin/roles', + 'permission' => ['cms:administer users'], + 'navigation' => [ + 'parent' => 'Users and Permissions', + 'label' => E::ts('User Roles'), + 'weight' => 0, + ], +]; diff --git a/ext/standaloneusers/ang/crmChangePassword.ang.php b/ext/standaloneusers/ang/crmChangePassword.ang.php new file mode 100644 index 000000000000..427f19a9dd36 --- /dev/null +++ b/ext/standaloneusers/ang/crmChangePassword.ang.php @@ -0,0 +1,17 @@ + 'standaloneusers', + 'js' => [ + 'ang/crmChangePassword.js', + // 'ang/crmQueueMonitor/*.js', + // 'ang/crmQueueMonitor/*/*.js', + ], + // 'css' => ['ang/crmQueueMonitor.css'], + 'partials' => ['ang/crmChangePassword'], + 'requires' => ['crmUi', 'crmUtil', 'api4'], + 'basePages' => ['civicrm/admin/user/password'], + 'exports' => [ + // Export the module as an [E]lement + 'crm-change-password' => 'E', + ], +]; diff --git a/ext/standaloneusers/ang/crmChangePassword.js b/ext/standaloneusers/ang/crmChangePassword.js new file mode 100644 index 000000000000..80d087661b70 --- /dev/null +++ b/ext/standaloneusers/ang/crmChangePassword.js @@ -0,0 +1,112 @@ +(function (angular, $, _) { + "use strict"; + + angular.module('crmChangePassword', CRM.angRequires('crmChangePassword')); + + angular.module('crmChangePassword').component('crmChangePassword', { + templateUrl: '~/crmChangePassword/crmChangePassword.html', + bindings: { + // things listed here become properties on the controller using values from attributes. + hibp: '@', + userId: '@' + }, + controller: function($scope, $timeout, crmApi4) { + var ts = $scope.ts = CRM.ts(null), + ctrl = this; + + console.log('init crmChangePassword component starting'); + // $onInit gets run after the this controller is called, and after the bindings have been applied. + // this.$onInit = function() { console.log('user', ctrl.userId); }; + ctrl.actorPassword = ''; + ctrl.newPassword = ''; + ctrl.newPasswordAgain = ''; + ctrl.busy = ''; + ctrl.pwnd = false; + + let updateAngular = (prop, newVal) => { + $timeout(() => { + console.log("Setting", prop, "to", newVal); + ctrl[prop] = newVal; + }, 0); + }; + + ctrl.attemptChange = () => { + updateAngular('busy', ''); + updateAngular('pwnd', false); + updateAngular('formInactive', true); + if (ctrl.newPassword.length < 8) { + alert(ts("C'mon now, you can do better than that.")); + return; + } + if (ctrl.newPassword != ctrl.newPasswordAgain) { + alert(ts("Passwords do not match")); + return; + } + + let promises = Promise.resolve(null); + if (ctrl.hibp) { + promises = promises.then(() => { + updateAngular('busy', ts('Checking password is not known to have been involved in data breach...')); + return sha1(ctrl.newPassword) + .then(hash => { + if (!hash.match(/^[a-f0-9]+$/)) { + updateAngular('busy', ts('Could not check. Is your browser up-to-date?')); + } + else { + hash = hash.toUpperCase(); + let hashPrefix = hash.substring(0, 5); + return fetch(ctrl.hibp + hashPrefix) + .then(r => r.text()) + .then(hibpResult => { + if (hibpResult && + hibpResult.split(/\r\n/).find(line => hashPrefix + line.replace(/:\d+$/, '') === hash)) { + // e.g. Password123 + updateAngular('pwn', true); + return; + } + updateAngular('busy', ''); + }) + .catch( () => { + updateAngular('busy', ts('Could not perform check; service error.')); + }); + } + }); + }); + } + + promises = promises.then(() => { + updateAngular('busy', ctrl.busy + ts('Changing...')); + // Now submit api request. + const userUpdateParams = { + actorPassword: ctrl.actorPassword, + values: {password: ctrl.newPassword}, + where: [['id', '=', ctrl.userId]] + }; + return crmApi4('User', 'Update', userUpdateParams) + .then(r => updateAngular('busy', ts('Password successfully updated'))) + .catch(e => { + let msg = (e.error_message === 'Authorization failed') ? + ts("Sorry, that didn't work. Perhaps you mistyped your password?") : + e.error_message; + updateAngular('busy', msg); + }); + }); + }; + + // Generate SHA-1 digest for given text. Returns Promise + function sha1(message) { + const encoder = new TextEncoder(); + const data = encoder.encode(message); + // const hashBuffer = + return crypto.subtle.digest('SHA-1', data) + .then(hashBuffer => { + const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array + const hashHex = hashArray + .map((b) => b.toString(16).padStart(2, "0")) + .join(""); // convert bytes to hex string + return hashHex; + }); + } + } + }); +})(angular, CRM.$, CRM._); diff --git a/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html b/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html new file mode 100644 index 000000000000..d2604837fd82 --- /dev/null +++ b/ext/standaloneusers/ang/crmChangePassword/crmChangePassword.html @@ -0,0 +1,49 @@ +
+
+ +
+ +
+ +
+ +
+ +
+ + + {{ts('Passwords do not match')}} + +
+ + + +
+
{{$ctrl.busy}}
+
+

{{ts('Known compromised password')}}

+

{{ts('The password you entered is known to have been included in data breaches. This means it can no longer be considered secure.')}}

+

{{ts('Please choose a different password.')}}

+

{{ts('Also, if you have used that password anywhere else, you should change it as soon as you can.')}}

+

{{ts('For more information, see:')}} haveibeenpwned.com

+
+ +
diff --git a/ext/standaloneusers/ang/crmResetPassword.ang.php b/ext/standaloneusers/ang/crmResetPassword.ang.php new file mode 100644 index 000000000000..53d27a7b75f4 --- /dev/null +++ b/ext/standaloneusers/ang/crmResetPassword.ang.php @@ -0,0 +1,17 @@ + 'standaloneusers', + 'js' => [ + 'ang/crmResetPassword.js', + // 'ang/crmQueueMonitor/*.js', + // 'ang/crmQueueMonitor/*/*.js', + ], + // 'css' => ['ang/crmQueueMonitor.css'], + 'partials' => ['ang/crmResetPassword'], + 'requires' => ['crmUi', 'crmUtil', 'api4'], + 'basePages' => ['civicrm/login/password'], + 'exports' => [ + // Export the module as an [E]lement + 'crm-reset-password' => 'E', + ], +]; diff --git a/ext/standaloneusers/ang/crmResetPassword.js b/ext/standaloneusers/ang/crmResetPassword.js new file mode 100644 index 000000000000..2d5db04fd45a --- /dev/null +++ b/ext/standaloneusers/ang/crmResetPassword.js @@ -0,0 +1,136 @@ +(function (angular) { + "use strict"; + + angular.module('crmResetPassword', CRM.angRequires('crmResetPassword')); + + angular.module('crmResetPassword').component('crmResetPassword', { + templateUrl: '~/crmResetPassword/crmResetPassword.html', + bindings: { + // things listed here become properties on the controller using values from attributes. + hibp: '@', + token: '@' + }, + controller: function($scope, $timeout, crmApi4) { + var ts = $scope.ts = CRM.ts(null), + ctrl = this; + + // console.log('init crmResetPassword component starting'); + // $onInit gets run after the this controller is called, and after the bindings have been applied. + // this.$onInit = function() { console.log('user', ctrl.userId); }; + + ctrl.completeReset = () => { + ctrl.busy=''; + ctrl.formSubmitted = false; + ctrl.identifier = ''; + ctrl.newPassword = ''; + ctrl.newPasswordAgain = ''; + ctrl.pwnd = false; + ctrl.resetSuccessfullySubmitted=false; + ctrl.token=''; + }; + ctrl.completeReset(); + + let updateAngular = (prop, newVal) => { + $timeout(() => { + console.log("Setting", prop, "to", newVal); + ctrl[prop] = newVal; + }, 0); + }; + ctrl.sendPasswordReset = () => { + updateAngular('busy', ts('Just a moment...')); + updateAngular('formSubmitted', true); + if (!ctrl.identifier) { + alert(ts('Please provide your username/email.')); + return; + } + crmApi4('User', 'sendPasswordReset', { identifier: ctrl.identifier }) + .then(r => { + updateAngular('busy', ''); + updateAngular('resetSuccessfullySubmitted', true); + }) + .catch(e => { + updateAngular('busy', ts('Sorry, something went wrong. Please contact your site administrators.')); + }); + }; + + ctrl.attemptChange = () => { + updateAngular('busy', ''); + updateAngular('formSubmitted', true); + updateAngular('pwnd', false); + if (ctrl.newPassword.length < 8) { + alert(ts("Passwords under 8 characters are simply not secure. Ideally you should use a secure password generator.")); + return; + } + if (ctrl.newPassword != ctrl.newPasswordAgain) { + alert(ts("Passwords do not match")); + return; + } + + let promises = Promise.resolve(null); + if (ctrl.hibp) { + promises = promises.then(() => { + updateAngular('busy', ts('Checking password is not known to have been involved in data breach...')); + return sha1(ctrl.newPassword) + .then(hash => { + if (!hash.match(/^[a-f0-9]+$/)) { + updateAngular('busy', ts('Could not check. Is your browser up-to-date?')); + } + else { + hash = hash.toUpperCase(); + let hashPrefix = hash.substring(0, 5); + return fetch(ctrl.hibp + hashPrefix) + .then(r => r.text()) + .then(hibpResult => { + if (hibpResult && + hibpResult.split(/\r\n/).find(line => hashPrefix + line.replace(/:\d+$/, '') === hash)) { + // e.g. Password123 + updateAngular('pwn', true); + return; + } + updateAngular('busy', ''); + }) + .catch( () => { + updateAngular('busy', ts('Could not perform check; service error.')); + }); + } + }); + }); + } + + promises = promises.then(() => { + updateAngular('busy', ctrl.busy + ts('Changing...')); + updateAngular('formSubmitted', true); + // Now submit api request. + return crmApi4('User', 'passwordReset', { + token: ctrl.token, + password: ctrl.newPassword, + }) + .then(r => { + updateAngular('busy', ts('Password successfully updated. Redirecting to login...')); + $timeout(() => { + window.location = '/civicrm/login'; + }, 1300); + }) + .catch(e => { + updateAngular('token', 'invalid'); + }); + }); + }; + + // Generate SHA-1 digest for given text. Returns Promise + function sha1(message) { + const encoder = new TextEncoder(); + const data = encoder.encode(message); + // const hashBuffer = + return crypto.subtle.digest('SHA-1', data) + .then(hashBuffer => { + const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array + const hashHex = hashArray + .map((b) => b.toString(16).padStart(2, "0")) + .join(""); // convert bytes to hex string + return hashHex; + }); + } + } + }); +})(angular); diff --git a/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html b/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html new file mode 100644 index 000000000000..26793c848eca --- /dev/null +++ b/ext/standaloneusers/ang/crmResetPassword/crmResetPassword.html @@ -0,0 +1,61 @@ +
+ +
+ +
+ +
+ + +
+
+

{{ts('Thanks. If your username/email matched an active account, we will email you with a special link to provide a new password.')}}

+

{{ts('The link must be used within an hour, and can only be used once.')}}

+
+ +
{{$ctrl.busy}}
+ + +
+
+
+ +
+ +
+ + + {{ts('Passwords do not match')}} + +
+ + +
+
+ +
+

{{ts("This password reset link has expired or is otherwise invalid.")}}

+

{{ts('Send new password reset link')}}

+
+ +
+ diff --git a/ext/standaloneusers/info.xml b/ext/standaloneusers/info.xml index 5d392fd36f7f..dab664f0b8bd 100644 --- a/ext/standaloneusers/info.xml +++ b/ext/standaloneusers/info.xml @@ -15,10 +15,10 @@ http://www.gnu.org/licenses/agpl-3.0.html 2022-11-11 - 5.67.alpha1 + 5.68.alpha1 alpha - 5.67 + 5.68 org.civicrm.search_kit @@ -36,7 +36,9 @@ crmStandaloneusers + scan-classes@1.0.0 mgd-php@1.0.0 + ang-php@1.0.0 setting-php@1.0.0 menu-xml@1.0.0 smarty-v2@1.0.1 diff --git a/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php b/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php index d4e0e2ac8a16..dccaaeb66073 100644 --- a/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php +++ b/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php @@ -21,7 +21,7 @@ 'select' => [ 'id', 'username', - 'email', + 'uf_name', 'is_active', 'when_created', 'when_last_accessed', @@ -82,7 +82,7 @@ ], [ 'type' => 'field', - 'key' => 'email', + 'key' => 'uf_name', 'dataType' => 'String', 'label' => E::ts('Email'), 'sortable' => TRUE, diff --git a/ext/standaloneusers/sql/auto_install.sql b/ext/standaloneusers/sql/auto_install.sql index 6bec096b99db..ec2f3676e9be 100644 --- a/ext/standaloneusers/sql/auto_install.sql +++ b/ext/standaloneusers/sql/auto_install.sql @@ -17,7 +17,7 @@ SET FOREIGN_KEY_CHECKS=0; -DROP TABLE IF EXISTS `civicrm_user`; +DROP TABLE IF EXISTS `civicrm_uf_match`; DROP TABLE IF EXISTS `civicrm_role`; SET FOREIGN_KEY_CHECKS=1; @@ -46,26 +46,33 @@ ENGINE=InnoDB; -- /******************************************************* -- * --- * civicrm_user +-- * civicrm_uf_match -- * --- * A standalone user account +-- * Standalone User Account. In Standalone this is a superset of the original civicrm_uf_match table. -- * -- *******************************************************/ -CREATE TABLE `civicrm_user` ( +CREATE TABLE `civicrm_uf_match` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique User ID', - `contact_id` int unsigned COMMENT 'FK to Contact - possibly redundant', + `domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this match entry for', + `uf_id` int unsigned NOT NULL DEFAULT 0 COMMENT 'UF ID. Redundant in Standalone. Needs to be identical to id.', + `uf_name` varchar(255) COMMENT 'Email (e.g. for password resets)', + `contact_id` int unsigned COMMENT 'FK to Contact ID', `username` varchar(60) NOT NULL, - `password` varchar(128) NOT NULL COMMENT 'Hashed password', - `email` varchar(255) NOT NULL COMMENT 'Email (e.g. for password resets)', + `hashed_password` varchar(128) NOT NULL DEFAULT "" COMMENT 'Hashed, not plaintext password', `roles` varchar(128) COMMENT 'FK to Role', `when_created` timestamp DEFAULT CURRENT_TIMESTAMP, `when_last_accessed` timestamp NULL, `when_updated` timestamp NULL, `is_active` tinyint NOT NULL DEFAULT 1, `timezone` varchar(32) NULL COMMENT 'User\'s timezone', - `language` int unsigned COMMENT 'The language for the user.', + `language` varchar(5) COMMENT 'UI language preferred by the given user/contact', + `password_reset_token` varchar(40) COMMENT 'The unspent token', PRIMARY KEY (`id`), + INDEX `I_civicrm_uf_match_uf_id`(uf_id), UNIQUE INDEX `UI_username`(username), - CONSTRAINT FK_civicrm_user_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE + UNIQUE INDEX `UI_uf_name_domain_id`(uf_name, domain_id), + UNIQUE INDEX `UI_contact_domain_id`(contact_id, domain_id), + CONSTRAINT FK_civicrm_uf_match_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`), + CONSTRAINT FK_civicrm_uf_match_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL ) ENGINE=InnoDB; diff --git a/ext/standaloneusers/sql/auto_uninstall.sql b/ext/standaloneusers/sql/auto_uninstall.sql index f754abde63ab..e963db9f2a0c 100644 --- a/ext/standaloneusers/sql/auto_uninstall.sql +++ b/ext/standaloneusers/sql/auto_uninstall.sql @@ -15,7 +15,7 @@ SET FOREIGN_KEY_CHECKS=0; -DROP TABLE IF EXISTS `civicrm_user`; +DROP TABLE IF EXISTS `civicrm_uf_match`; DROP TABLE IF EXISTS `civicrm_role`; SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file diff --git a/ext/standaloneusers/standaloneusers.php b/ext/standaloneusers/standaloneusers.php index 9bdb964792a6..dff4299e3f3e 100644 --- a/ext/standaloneusers/standaloneusers.php +++ b/ext/standaloneusers/standaloneusers.php @@ -1,5 +1,10 @@ + + diff --git a/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl b/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl index 7cc1073bda65..4dc29936751e 100644 --- a/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl +++ b/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl @@ -255,11 +255,11 @@ a:hover, a:focus {
- - + +
- +
diff --git a/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl b/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl new file mode 100644 index 000000000000..5a594b335679 --- /dev/null +++ b/ext/standaloneusers/templates/CRM/Standaloneusers/Page/ResetPassword.tpl @@ -0,0 +1,5 @@ + + + diff --git a/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php b/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php index e41312be06c8..d22c669a229d 100644 --- a/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php +++ b/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php @@ -1,9 +1,9 @@ switchBackFromOurUFClasses(TRUE); + $this->deleteStuffWeMade(); + // $this->switchBackFromOurUFClasses(TRUE); parent::tearDown(); } + protected function loginUser($userID) { + $security = Security::singleton(); + $user = \Civi\Api4\User::get(FALSE) + ->addWhere('id', '=', $userID) + ->execute()->first(); + + $contactID = civicrm_api3('UFMatch', 'get', [ + 'sequential' => 1, + 'return' => ['contact_id'], + 'uf_id' => $user['id'], + ])['values'][0]['contact_id'] ?? NULL; + $this->assertNotNull($contactID); + /** @var \Civi\Standalone\Security $security */ + $security->loginAuthenticatedUserRecord($user, FALSE); + } + public function testCreateUser():void { [$contactID, $userID, $security] = $this->createFixtureContactAndUser(); $user = \Civi\Api4\User::get(FALSE) - ->addSelect('*', 'uf_match.*') ->addWhere('id', '=', $userID) - ->addJoin('UFMatch AS uf_match', 'INNER', ['uf_match.uf_id', '=', 'id']) ->execute()->single(); $this->assertEquals('user_one', $user['username']); - $this->assertEquals('user_one@example.org', $user['email']); - $this->assertStringStartsWith('$', $user['password']); + $this->assertEquals($contactID, $user['contact_id']); + $this->assertEquals($userID, $user['id']); + $this->assertEquals($userID, $user['uf_id']); + $this->assertEquals('user_one@example.org', $user['uf_name']); + $this->assertStringStartsWith('$', $user['hashed_password']); - $this->assertTrue($security->checkPassword('secret1', $user['password'])); - $this->assertFalse($security->checkPassword('some other password', $user['password'])); + // Test that the password can be checked ok. + $this->assertTrue($security->checkPassword('secret1', $user['hashed_password'])); + $this->assertFalse($security->checkPassword('some other password', $user['hashed_password'])); } public function testPerms() { [$contactID, $userID, $security] = $this->createFixtureContactAndUser(); + $ufID = \CRM_Core_BAO_UFMatch::getUFId($contactID); + $this->assertEquals($userID, $ufID); // Create a custom role $roleID = \Civi\Api4\Role::create(FALSE) @@ -94,55 +115,319 @@ public function testPerms() { ->addWhere('id', '=', $userID) ->execute(); - $this->switchToOurUFClasses(); + // $this->switchToOurUFClasses(); foreach (['access CiviCRM', 'view all contacts', 'add contacts', 'edit all contacts'] as $allowed) { $this->assertTrue(\CRM_Core_Permission::check([$allowed], $contactID), "Should have '$allowed' permission but don't"); } foreach (['administer CiviCRM', 'access uploaded files'] as $notAllowed) { $this->assertFalse(\CRM_Core_Permission::check([$notAllowed], $contactID), "Should NOT have '$allowed' permission but do"); } - $this->switchBackFromOurUFClasses(); + // $this->switchBackFromOurUFClasses(); } - protected function switchToOurUFClasses() { - if (!empty($this->originalUFPermission)) { - throw new \RuntimeException("are you calling switchToOurUFClasses twice?"); - } - $this->originalUFPermission = \CRM_Core_Config::singleton()->userPermissionClass; - $this->originalUF = \CRM_Core_Config::singleton()->userSystem; - \CRM_Core_Config::singleton()->userPermissionClass = new \CRM_Core_Permission_Standalone(); - \CRM_Core_Config::singleton()->userSystem = new \CRM_Utils_System_Standalone(); - } + // protected function switchToOurUFClasses() { + // return; + // if (!empty($this->originalUFPermission)) { + // throw new \RuntimeException("are you calling switchToOurUFClasses twice?"); + // } + // $this->originalUFPermission = \CRM_Core_Config::singleton()->userPermissionClass; + // $this->originalUF = \CRM_Core_Config::singleton()->userSystem; + // \CRM_Core_Config::singleton()->userPermissionClass = new \CRM_Core_Permission_Standalone(); + // \CRM_Core_Config::singleton()->userSystem = new \CRM_Utils_System_Standalone(); + // } + // + // protected function switchBackFromOurUFClasses($justInCase = FALSE) { + // return; + // if (!$justInCase && empty($this->originalUFPermission)) { + // throw new \RuntimeException("are you calling switchBackFromOurUFClasses() twice?"); + // } + // \CRM_Core_Config::singleton()->userPermissionClass = $this->originalUFPermission; + // \CRM_Core_Config::singleton()->userSystem = $this->originalUF; + // $this->originalUFPermission = $this->originalUF = NULL; + // } - protected function switchBackFromOurUFClasses($justInCase = FALSE) { - if (!$justInCase && empty($this->originalUFPermission)) { - throw new \RuntimeException("are you calling switchBackFromOurUFClasses() twice?"); + /** + * Temporary debugging function + */ + public function dumpUFMatch(string $s = '') { + $d = \CRM_Core_DAO::executeQuery("SELECT * FROM civicrm_uf_match;"); + print "\ndump---------- $s\n"; + foreach ($d->fetchAll() as $row) { + print json_encode($row, JSON_UNESCAPED_SLASHES) . "\n"; } - \CRM_Core_Config::singleton()->userPermissionClass = $this->originalUFPermission; - \CRM_Core_Config::singleton()->userSystem = $this->originalUF; - $this->originalUFPermission = $this->originalUF = NULL; + print "--------------\n"; } + /** + * @return Array[int, int, \Civi\Standalone\Security] + */ public function createFixtureContactAndUser(): array { - $contactID = \Civi\Api4\Contact::create(FALSE) ->setValues([ 'contact_type' => 'Individual', 'display_name' => 'Admin McDemo', ])->execute()->first()['id']; - $security = Security::singleton(); - $params = ['cms_name' => 'user_one', 'cms_pass' => 'secret1', 'notify' => FALSE, 'contactID' => $contactID, 'email' => 'user_one@example.org']; - - $this->switchToOurUFClasses(); + $params = ['cms_name' => 'user_one', 'cms_pass' => 'secret1', 'notify' => FALSE, 'contact_id' => $contactID, 'email' => 'user_one@example.org']; + // $this->switchToOurUFClasses(); $userID = \CRM_Core_BAO_CMSUser::create($params, 'email'); - $this->switchBackFromOurUFClasses(); - + // $this->switchBackFromOurUFClasses(); $this->assertGreaterThan(0, $userID); $this->contactID = $contactID; $this->userID = $userID; + $security = Security::singleton(); return [$contactID, $userID, $security]; } + public function ensureStaffRoleExists() { + $staffRole = \Civi\Api4\Role::get(FALSE) + ->addWhere('name', '=', 'staffRole') + ->execute()->first(); + if (!$staffRole) { + \Civi\Api4\Role::create(FALSE) + ->setValues([ + 'name' => 'staff', + 'label' => 'General staff', + 'permissions' => [ + "access CiviCRM", + "access Contact Dashboard", + "view my contact", + "edit my contact", + "make online contributions", + "view event info", + "register for events", + "authenticate with password", + ], + ])->execute(); + } + } + + public function testUserApi() { + [$contactID, $adminUserID, $security] = $this->createFixtureContactAndUser(); + // Make our main user an admin and log them in. + User::update(FALSE)->addWhere('id', '=', $adminUserID)->addValue('roles:name', ['admin'])->execute(); + $this->loginUser($adminUserID); + $this->ensureStaffRoleExists(); + + // Create a 2nd contact and linked user. + $stafferContactID = \Civi\Api4\Contact::create(FALSE) + ->setValues(['display_name' => 'Test Staffer']) + ->execute()->first()['id']; + /** @var \Civi\Api4\Action\User\Create */ + $userID = User::create(FALSE) + ->setValues([ + 'username' => 'testuser1', + 'password' => 'shhh', + 'contact_id' => $stafferContactID, + 'roles:name' => ['staff'], + 'uf_name' => 'testuser1@example.org', + ]) + ->execute()->first()['id']; + $user = User::get(FALSE)->addWhere('id', '=', $userID)->execute()->first(); + \Civi\Api4\UFMatch::create(FALSE) + ->setValues([ + 'contact_id' => $stafferContactID, + 'uf_id' => $user['id'], + ]) + ->execute(); + ; + $userId = \CRM_Core_BAO_UFMatch::getUFId($stafferContactID); + $this->assertNotNull($userId); + + $this->assertArrayNotHasKey('password', $user); + $this->assertMatchesRegularExpression('/^[$].+[$].+/', $user['hashed_password']); + + // Update to the loaded values should NOT result in the password being changed. + $updatedUser = User::update(FALSE) + ->setValues($user) + ->addWhere('id', '=', $user['id']) + ->setReload(TRUE) + ->execute()->first(); + $this->assertEquals($user['hashed_password'], $updatedUser['hashed_password']); + + // Ditto save + $updated = User::save(FALSE) + ->setRecords([$user]) + ->setReload(TRUE) + ->execute()->first(); + $updatedUser = User::get(FALSE)->addWhere('id', '=', $user['id'])->execute()->first(); + $this->assertEquals($user['hashed_password'], $updatedUser['hashed_password']); + + // Test we can force saving a raw password + $updatedUser = User::update(FALSE) + ->setReload(TRUE) + ->addValue('hashed_password', '$shhh') + ->addWhere('id', '=', $user['id']) + ->execute()->first(); + $this->assertEquals('$shhh', $updatedUser['hashed_password']); + + // Now move on to tests with checkPermissions:TRUE + + // Check we are allowed to update this user's password if we provide our own, since we have 'cms:administer users' + // ...by password + $previousHash = $updatedUser['hashed_password']; + $updatedUser = User::update(TRUE) + ->addValue('password', 'topSecret') + ->addWhere('id', '=', $user['id']) + ->setActorPassword('secret1') + ->setReload(TRUE) + ->execute()->first(); + $this->assertNotEquals($previousHash, $updatedUser['hashed_password'], "Expected that the password was changed, but it wasn't."); + $previousHash = $updatedUser['hashed_password']; + + // ...but NOT by hashed_password + $previousHash = $updatedUser['hashed_password']; + try { + $updatedUser = User::update(TRUE) + ->addValue('hashed_password', '$someNefariousHash') + ->addWhere('id', '=', $user['id']) + ->setActorPassword('secret1') + ->execute(); + $this->fail("Expected UnauthorizedException got none."); + } + catch (\Civi\API\Exception\UnauthorizedException $e) { + $this->assertEquals('Not allowed to change hashed_password', $e->getMessage()); + } + + // Check that if we don't supply OUR correct password, we're not allowed to update the user's password. + try { + User::update(TRUE) + ->addValue('password', 'anotherNewPassword') + ->addWhere('id', '=', $user['id']) + ->setActorPassword('wrong pass') + ->execute(); + $this->fail("Expected UnauthorizedException got none."); + } + catch (\Civi\API\Exception\UnauthorizedException $e) { + $this->assertEquals('Incorrect password', $e->getMessage()); + } + + // Check that if we don't supply OUR password at all, we're not allowed to update the user's password. + try { + User::update(TRUE) + ->addValue('password', 'anotherNewPassword') + ->addWhere('id', '=', $user['id']) + ->execute(); + $this->fail("Expected UnauthorizedException got none."); + } + catch (\Civi\API\Exception\UnauthorizedException $e) { + $this->assertEquals('Unauthorized', $e->getMessage()); + } + + // Now login as the user in question who only has the 'staff' role. + $this->loginUser($user['id']); + + // Check we are allowed to update our own password if we provide the current one. + $updatedUser = User::update(TRUE) + ->setActorPassword('topSecret') + ->addValue('password', 'ourNewSecret') + ->addWhere('id', '=', $user['id']) + ->setReload(TRUE) + ->execute()->first(); + $this->assertNotEquals($previousHash, $updatedUser['hashed_password'], "Expected that the password was changed, but it wasn't."); + $previousHash = $updatedUser['hashed_password']; + + // Check that if we don't supply OUR correct password, we're not allowed to update our password. + try { + User::update(TRUE) + ->addValue('password', 'anotherNewPassword') + ->addWhere('id', '=', $user['id']) + ->setActorPassword('wrong pass') + ->execute(); + $this->fail("Expected UnauthorizedException got none."); + } + catch (\Civi\API\Exception\UnauthorizedException $e) { + $this->assertEquals('Incorrect password', $e->getMessage()); + } + + // Check that if we don't supply OUR password at all, we're not allowed to update the user's password. + try { + User::update(TRUE) + ->addValue('password', 'anotherNewPassword') + ->addWhere('id', '=', $user['id']) + ->execute(); + $this->fail("Expected UnauthorizedException got none."); + } + catch (\Civi\API\Exception\UnauthorizedException $e) { + $this->assertEquals('Unauthorized', $e->getMessage()); + } + + // Check that we're not allowed to update the admin user's password, since we are not an admin. + try { + User::update(TRUE) + ->addValue('password', 'anotherNewPassword') + ->addWhere('id', '=', $adminUserID) + ->setActorPassword('ourNewSecret') + ->execute(); + $this->fail("Expected UnauthorizedException got none."); + } + catch (\Civi\API\Exception\UnauthorizedException $e) { + $this->assertEquals("You are not permitted to change other users' accounts.", $e->getMessage()); + } + + $this->deleteStuffWeMade(); + } + + public function testForgottenPassword() { + + /** @var Security $security */ + [$contactID, $userID, $security] = $this->createFixtureContactAndUser(); + + // Create token. + $token = \Civi\Api4\Action\User\SendPasswordReset::updateToken($userID); + $this->assertMatchesRegularExpression('/^([0-9a-f]{8}[a-zA-Z0-9]{32})([0-9a-f]+)$/', $token); + + // Fake an expired token + $old = dechex(time() - 1); + $this->assertNull($security->checkPasswordResetToken($old . substr($token, 9))); + + // Check token fails if contact ID is different. + $this->assertNull($security->checkPasswordResetToken($token . '0')); + + // Check it works, but only once. + $extractedUserID = $security->checkPasswordResetToken($token); + $this->assertEquals($userID, $extractedUserID); + $this->assertNull($security->checkPasswordResetToken($token)); + + // OK, let's change that password. + $token = \Civi\Api4\Action\User\SendPasswordReset::updateToken($userID); + + // Attempt to change the user's password using this token to authenticate. + $result = User::passwordReset(TRUE) + ->setToken($token) + ->setPassword('fingersCrossed') + ->execute(); + + $this->assertEquals(1, $result['success']); + $user = User::get(FALSE)->addWhere('id', '=', $userID)->execute()->single(); + $this->assertTrue($security->checkPassword('fingersCrossed', $user['hashed_password'])); + + // Should not work a 2nd time with same token. + try { + User::passwordReset(TRUE) + ->setToken($token) + ->setPassword('oooh') + ->execute(); + $this->fail("Should not have been able to reuse token"); + } + catch (\Exception $e) { + $this->assertEquals('Invalid token.', $e->getMessage()); + } + + // Check the message template generation + $token = \Civi\Api4\Action\User\SendPasswordReset::updateToken($userID); + $workflow = $security->preparePasswordResetWorkflow($user, $token); + $this->assertNotNull($workflow); + $result = $workflow->renderTemplate(); + + $this->assertMatchesRegularExpression(';https?://[^/]+/civicrm/login/password.*' . $token . ';', $result['text']); + $this->assertMatchesRegularExpression(';https?://[^/]+/civicrm/login/password.*' . $token . ';', $result['html']); + $this->assertEquals('Password reset link for Demonstrators Anonymous', $result['subject']); + } + + protected function deleteStuffWeMade() { + User::delete(FALSE)->addWhere('username', '=', 'testuser1')->execute(); + } + } diff --git a/ext/standaloneusers/xml/Menu/standaloneusers.xml b/ext/standaloneusers/xml/Menu/standaloneusers.xml index e82ee26f448f..118d3d766e54 100644 --- a/ext/standaloneusers/xml/Menu/standaloneusers.xml +++ b/ext/standaloneusers/xml/Menu/standaloneusers.xml @@ -11,4 +11,16 @@ CRM_Standaloneusers_Page_Login::logout *always allow* + + civicrm/admin/user/password + CRM_Standaloneusers_Page_ChangePassword + Change Password + access CiviCRM + + + civicrm/login/password + CRM_Standaloneusers_Page_ResetPassword + Reset Password + access password resets + diff --git a/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.entityType.php b/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.entityType.php index 5ef16e5b9de0..65c36187b91d 100644 --- a/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.entityType.php +++ b/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.entityType.php @@ -5,6 +5,6 @@ [ 'name' => 'User', 'class' => 'CRM_Standaloneusers_DAO_User', - 'table' => 'civicrm_user', + 'table' => 'civicrm_uf_match', ], ]; diff --git a/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml b/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml index 4cb23909f556..4b2e5be0ea2f 100644 --- a/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml +++ b/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml @@ -3,8 +3,8 @@ CRM/StandaloneusersUser - civicrm_user - A standalone user account + civicrm_uf_match + Standalone User Account. In Standalone this is a superset of the original civicrm_uf_match table.usernameusernameemail @@ -16,28 +16,81 @@ id + UF Match ID int unsigned true Unique User ID Number + 5.67 id true - + + domain_id + Domain ID + int unsigned + true + Which Domain is this match entry for + +
civicrm_domain
+ id + name + + + + + 3.0 + + + domain_id + civicrm_domain
+ id + 3.0 +
+ + uf_id + CMS ID + int unsigned + true + 0 + UF ID. Redundant in Standalone. Needs to be identical to id. + 1.1 + + + I_civicrm_uf_match_uf_id + uf_id + 3.3 + + + uf_name + User Email + varchar + 255 + Email (e.g. for password resets) + + Email + + contact_id + Contact ID int unsigned - FK to Contact - possibly redundant + FK to Contact ID + + + + 1.1 contact_id civicrm_contact
id - CASCADE + 1.1 + SET NULL
@@ -57,22 +110,13 @@ - password + hashed_password varchar true + "" 128 - Hashed password - - - - email - varchar - true - 255 - Email (e.g. for password resets) - - Text - + true + Hashed, not plaintext password @@ -135,15 +179,32 @@ language - int unsigned - Language - - languages - - - Select - - The language for the user. + Preferred Language + varchar + 5 + UI language preferred by the given user/contact + 2.1 + + + UI_uf_name_domain_id + uf_name + domain_id + true + 2.1 + + + UI_contact_domain_id + contact_id + domain_id + true + 1.6 + + + password_reset_token + Password Reset Token + The unspent token + varchar + 40 + true - diff --git a/ext/user_dashboard/ang/afsearchUserDashboard.aff.php b/ext/user_dashboard/ang/afsearchUserDashboard.aff.php new file mode 100644 index 000000000000..acb8944bc934 --- /dev/null +++ b/ext/user_dashboard/ang/afsearchUserDashboard.aff.php @@ -0,0 +1,32 @@ + 'search', + 'title' => E::ts('User Dashboard'), + 'server_route' => 'civicrm/user', + 'permission' => ['access Contact Dashboard'], + 'layout' => '', + // temporary, remove after merging https://github.com/civicrm/civicrm-core/pull/27783 + 'requires' => ['af', 'afCore', 'crmSearchDisplayTable'], +]; + +// Add displays for every SavedSearch tagged "UserDashboard" +$searchDisplays = civicrm_api4('SearchDisplay', 'get', [ + 'checkPermissions' => FALSE, + 'select' => ['name', 'label', 'type:name', 'saved_search_id.name'], + 'where' => [ + ['saved_search_id.is_current', '=', TRUE], + ['saved_search_id.tags:name', 'IN', ['UserDashboard']], + ], + 'orderBy' => ['name' => 'ASC'], +]); +foreach ($searchDisplays as $display) { + $afform['layout'] .= << + <{$display['type:name']} search-name="{$display['saved_search_id.name']}" display-name="$display[name]"> +
+ HTML; +} + +return $afform; diff --git a/ext/user_dashboard/info.xml b/ext/user_dashboard/info.xml new file mode 100644 index 000000000000..4e87e481b109 --- /dev/null +++ b/ext/user_dashboard/info.xml @@ -0,0 +1,36 @@ + + + user_dashboard + User Dashboard + Adds a page for users to see their contributions, memberships, etc. + AGPL-3.0 + + CiviCRM + info@civicrm.org + + + http://FIXME + http://FIXME + http://FIXME + http://www.gnu.org/licenses/agpl-3.0.html + + 2023-10-07 + 1.0 + alpha + + 5.68.alpha1 + + This extension is still experimental + + + + + + CRM/UserDashboard + 23.02.1 + crmUserDashboard + + + mgd-php@1.0.0 + + diff --git a/ext/user_dashboard/managed/Dashboard_Tag.mgd.php b/ext/user_dashboard/managed/Dashboard_Tag.mgd.php new file mode 100644 index 000000000000..753a40b9e933 --- /dev/null +++ b/ext/user_dashboard/managed/Dashboard_Tag.mgd.php @@ -0,0 +1,27 @@ + 'Dashboard_Tag', + 'entity' => 'Tag', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'label' => E::ts('User Dashboard'), + 'name' => 'UserDashboard', + 'description' => E::ts('Search will appear on the User Dashboard page'), + 'is_reserved' => TRUE, + 'used_for' => [ + 'civicrm_saved_search', + ], + 'color' => '#5d677b', + ], + 'match' => [ + 'name', + ], + ], + ], +]; diff --git a/ext/user_dashboard/managed/SavedSearch_UserDashboard_Activities.mgd.php b/ext/user_dashboard/managed/SavedSearch_UserDashboard_Activities.mgd.php new file mode 100644 index 000000000000..65538659cc3e --- /dev/null +++ b/ext/user_dashboard/managed/SavedSearch_UserDashboard_Activities.mgd.php @@ -0,0 +1,175 @@ + 'SavedSearch_UserDashboard_Activities', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Activities', + 'label' => E::ts('User Dashboard - Activities'), + 'api_entity' => 'Activity', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'subject', + 'activity_type_id:label', + 'GROUP_CONCAT(DISTINCT Activity_ActivityContact_Contact_01.sort_name) AS GROUP_CONCAT_Activity_ActivityContact_Contact_01_sort_name', + 'GROUP_CONCAT(DISTINCT Activity_ActivityContact_Contact_02.sort_name) AS GROUP_CONCAT_Activity_ActivityContact_Contact_02_sort_name', + 'activity_date_time', + 'status_id:label', + ], + 'orderBy' => [], + 'where' => [ + [ + 'status_id:name', + '!=', + 'Completed', + ], + ], + 'groupBy' => [ + 'id', + ], + 'join' => [ + [ + 'Contact AS Activity_ActivityContact_Contact_01', + 'LEFT', + 'ActivityContact', + [ + 'id', + '=', + 'Activity_ActivityContact_Contact_01.activity_id', + ], + [ + 'Activity_ActivityContact_Contact_01.record_type_id:name', + '=', + '"Activity Source"', + ], + ], + [ + 'Contact AS Activity_ActivityContact_Contact_02', + 'LEFT', + 'ActivityContact', + [ + 'id', + '=', + 'Activity_ActivityContact_Contact_02.activity_id', + ], + [ + 'Activity_ActivityContact_Contact_02.record_type_id:name', + '=', + '"Activity Targets"', + ], + ], + [ + 'Contact AS Activity_ActivityContact_Contact_03', + 'INNER', + 'ActivityContact', + [ + 'id', + '=', + 'Activity_ActivityContact_Contact_03.activity_id', + ], + [ + 'Activity_ActivityContact_Contact_03.record_type_id:name', + '=', + '"Activity Assignees"', + ], + [ + 'Activity_ActivityContact_Contact_03.id', + '=', + '"user_contact_id"', + ], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Activities_SearchDisplay_UserDashboard_Activities', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Activities', + 'label' => E::ts('Your Assigned Activities'), + 'saved_search_id.name' => 'UserDashboard_Activities', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'expose_limit' => TRUE, + 'hide_single' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'activity_type_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'subject', + 'dataType' => 'String', + 'label' => E::ts('Subject'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Activity_ActivityContact_Contact_01_sort_name', + 'dataType' => 'String', + 'label' => E::ts('Added by'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Activity_ActivityContact_Contact_02_sort_name', + 'dataType' => 'String', + 'label' => E::ts('With'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'activity_date_time', + 'dataType' => 'Timestamp', + 'label' => E::ts('Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/ext/user_dashboard/managed/SavedSearch_UserDashboard_Groups.mgd.php b/ext/user_dashboard/managed/SavedSearch_UserDashboard_Groups.mgd.php new file mode 100644 index 000000000000..34c4d43b317c --- /dev/null +++ b/ext/user_dashboard/managed/SavedSearch_UserDashboard_Groups.mgd.php @@ -0,0 +1,149 @@ + 'SavedSearch_UserDashboard_Groups', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Groups', + 'label' => E::ts('User Dashboard - Groups'), + 'api_entity' => 'Group', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'frontend_title', + 'Group_GroupContact_Contact_01.status:label', + 'MAX(Group_SubscriptionHistory_group_id_01.date) AS MAX_Group_SubscriptionHistory_group_id_01_date', + ], + 'orderBy' => [], + 'where' => [ + [ + 'Group_GroupContact_Contact_01.id', + '=', + 'user_contact_id', + ], + [ + 'visibility:name', + '=', + 'Public Pages', + ], + [ + 'is_active', + '=', + TRUE, + ], + ], + 'groupBy' => [ + 'id', + 'Group_GroupContact_Contact_01.id', + ], + 'join' => [ + [ + 'Contact AS Group_GroupContact_Contact_01', + 'LEFT', + 'GroupContact', + [ + 'id', + '=', + 'Group_GroupContact_Contact_01.group_id', + ], + ], + [ + 'SubscriptionHistory AS Group_SubscriptionHistory_group_id_01', + 'LEFT', + [ + 'id', + '=', + 'Group_SubscriptionHistory_group_id_01.group_id', + ], + [ + 'Group_SubscriptionHistory_group_id_01.contact_id', + '=', + '"user_contact_id"', + ], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Groups_SearchDisplay_UserDashboard_Groups', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Groups', + 'label' => E::ts('Your Group(s)'), + 'saved_search_id.name' => 'UserDashboard_Groups', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [ + [ + 'Group_GroupContact_Contact_01.status', + 'ASC', + ], + ], + 'limit' => 20, + 'pager' => [ + 'expose_limit' => TRUE, + 'hide_single' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'frontend_title', + 'dataType' => 'String', + 'label' => E::ts('Group'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'Group_GroupContact_Contact_01.status:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'MAX_Group_SubscriptionHistory_group_id_01_date', + 'dataType' => 'Timestamp', + 'label' => E::ts('Since'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + 'cssRules' => [ + [ + 'disabled', + 'Group_GroupContact_Contact_01.status', + '=', + 'Removed', + ], + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/ext/user_dashboard/managed/SavedSearch_UserDashboard_Pledges.mgd.php b/ext/user_dashboard/managed/SavedSearch_UserDashboard_Pledges.mgd.php new file mode 100644 index 000000000000..9b9f696c7bd7 --- /dev/null +++ b/ext/user_dashboard/managed/SavedSearch_UserDashboard_Pledges.mgd.php @@ -0,0 +1,146 @@ + 'SavedSearch_UserDashboard_Pledges', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Pledges', + 'label' => E::ts('User Dashboard - Pledges'), + 'api_entity' => 'Pledge', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'amount', + 'SUM(Pledge_PledgePayment_pledge_id_01.actual_amount) AS SUM_Pledge_PledgePayment_pledge_id_01_actual_amount', + 'financial_type_id:label', + 'create_date', + 'MIN(Pledge_PledgePayment_pledge_id_02.scheduled_date) AS MIN_Pledge_PledgePayment_pledge_id_02_scheduled_date', + 'MAX(Pledge_PledgePayment_pledge_id_02.scheduled_amount) AS MAX_Pledge_PledgePayment_pledge_id_02_scheduled_amount', + 'status_id:label', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [ + 'id', + ], + 'join' => [ + [ + 'PledgePayment AS Pledge_PledgePayment_pledge_id_01', + 'LEFT', + ['id', '=', 'Pledge_PledgePayment_pledge_id_01.pledge_id'], + ['Pledge_PledgePayment_pledge_id_01.status_id:name', '=', '"Completed"'], + ], + [ + 'PledgePayment AS Pledge_PledgePayment_pledge_id_02', + 'LEFT', + ['id', '=', 'Pledge_PledgePayment_pledge_id_02.pledge_id'], + ['Pledge_PledgePayment_pledge_id_02.status_id:name', '!=', '"Completed"'], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Pledges_SearchDisplay_UserDashboard_Pledges', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Pledges', + 'label' => E::ts('Your Pledges'), + 'saved_search_id.name' => 'UserDashboard_Pledges', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'amount', + 'dataType' => 'Money', + 'label' => E::ts('Pledged'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'SUM_Pledge_PledgePayment_pledge_id_01_actual_amount', + 'dataType' => 'Money', + 'label' => E::ts('Total Paid'), + 'sortable' => TRUE, + 'empty_value' => '0', + ], + [ + 'type' => 'field', + 'key' => 'financial_type_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Pledged For'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'create_date', + 'dataType' => 'Timestamp', + 'label' => E::ts('Pledge Made'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'MIN_Pledge_PledgePayment_pledge_id_02_scheduled_date', + 'dataType' => 'Timestamp', + 'label' => E::ts('Next Pay Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'MAX_Pledge_PledgePayment_pledge_id_02_scheduled_amount', + 'dataType' => 'Money', + 'label' => E::ts('Next Amount'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/ext/user_dashboard/managed/UserDashboard_Contributions.mgd.php b/ext/user_dashboard/managed/UserDashboard_Contributions.mgd.php new file mode 100644 index 000000000000..d5b5638feb78 --- /dev/null +++ b/ext/user_dashboard/managed/UserDashboard_Contributions.mgd.php @@ -0,0 +1,114 @@ + 'SavedSearch_UserDashboard_Contributions', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Contributions', + 'label' => E::ts('User Dashboard - Contributions'), + 'api_entity' => 'Contribution', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'total_amount', + 'financial_type_id:label', + 'contribution_status_id:label', + 'receive_date', + 'receipt_date', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Contributions_SearchDisplay_UserDashboard_Contributions', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Contributions', + 'label' => E::ts('Your Contribution(s)'), + 'saved_search_id.name' => 'UserDashboard_Contributions', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'total_amount', + 'dataType' => 'String', + 'label' => E::ts('Total Amount'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'financial_type_id:label', + 'dataType' => 'String', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'receive_date', + 'dataType' => 'Date', + 'label' => E::ts('Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'receipt_date', + 'dataType' => 'Date', + 'label' => E::ts('Receipt Sent'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'contribution_status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/ext/user_dashboard/managed/UserDashboard_Events.mgd.php b/ext/user_dashboard/managed/UserDashboard_Events.mgd.php new file mode 100644 index 000000000000..c1cb1087cdf6 --- /dev/null +++ b/ext/user_dashboard/managed/UserDashboard_Events.mgd.php @@ -0,0 +1,106 @@ + 'SavedSearch_UserDashboard_Events', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Events', + 'label' => E::ts('User Dashboard - Events'), + 'api_entity' => 'Participant', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'event_id.title', + 'role_id:label', + 'status_id:label', + 'event_id.start_date', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Events_SearchDisplay_UserDashboard_Events', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Events', + 'label' => E::ts('Your Event(s)'), + 'saved_search_id.name' => 'UserDashboard_Events', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'event_id.title', + 'dataType' => 'String', + 'label' => E::ts('Event'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'event_id.start_date', + 'dataType' => 'Date', + 'label' => E::ts('Event Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'role_id:label', + 'dataType' => 'String', + 'label' => E::ts('Role'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/ext/user_dashboard/managed/UserDashboard_Memberships.mgd.php b/ext/user_dashboard/managed/UserDashboard_Memberships.mgd.php new file mode 100644 index 000000000000..3604070c83cd --- /dev/null +++ b/ext/user_dashboard/managed/UserDashboard_Memberships.mgd.php @@ -0,0 +1,114 @@ + 'SavedSearch_UserDashboard_Memberships', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Memberships', + 'label' => E::ts('User Dashboard - Memberships'), + 'api_entity' => 'Membership', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'membership_type_id:label', + 'status_id:label', + 'start_date', + 'end_date', + 'join_date', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Memberships_SearchDisplay_UserDashboard_Memberships', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Memberships', + 'label' => E::ts('Your Membership(s)'), + 'saved_search_id.name' => 'UserDashboard_Memberships', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'membership_type_id:label', + 'dataType' => 'String', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'join_date', + 'dataType' => 'Date', + 'label' => E::ts('Member Since'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'start_date', + 'dataType' => 'Date', + 'label' => E::ts('Start Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'end_date', + 'dataType' => 'Date', + 'label' => E::ts('End Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/ext/user_dashboard/managed/UserDashboard_PCPs.mgd.php b/ext/user_dashboard/managed/UserDashboard_PCPs.mgd.php new file mode 100644 index 000000000000..4098795f142b --- /dev/null +++ b/ext/user_dashboard/managed/UserDashboard_PCPs.mgd.php @@ -0,0 +1,98 @@ + 'SavedSearch_UserDashboard_PCPs', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_PCPs', + 'label' => E::ts('User Dashboard - PCPs'), + 'api_entity' => 'PCP', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'title', + 'status_id:label', + 'page_id.frontend_title', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_PCPs_SearchDisplay_UserDashboard_PCPs', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_PCPs', + 'label' => E::ts('Personal Campaign Pages'), + 'saved_search_id.name' => 'UserDashboard_PCPs', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'title', + 'dataType' => 'String', + 'label' => E::ts('Title'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'page_id.frontend_title', + 'dataType' => 'String', + 'label' => E::ts('Campaign'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/ext/user_dashboard/managed/UserDashboard_Relationships.mgd.php b/ext/user_dashboard/managed/UserDashboard_Relationships.mgd.php new file mode 100644 index 000000000000..85c7a653dc35 --- /dev/null +++ b/ext/user_dashboard/managed/UserDashboard_Relationships.mgd.php @@ -0,0 +1,143 @@ + 'SavedSearch_UserDashboard_Relationships', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Relationships', + 'label' => E::ts('User Dashboard - Relationships'), + 'api_entity' => 'RelationshipCache', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'near_relation:label', + 'RelationshipCache_Contact_far_contact_id_01.display_name', + 'start_date', + 'RelationshipCache_Contact_far_contact_id_01.address_primary.city', + 'RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label', + 'RelationshipCache_Contact_far_contact_id_01.email_primary.email', + 'RelationshipCache_Contact_far_contact_id_01.phone_primary.phone', + ], + 'orderBy' => [], + 'where' => [ + ['near_contact_id', '=', 'user_contact_id'], + ['is_current', '=', TRUE], + ], + 'groupBy' => [], + 'join' => [ + [ + 'Contact AS RelationshipCache_Contact_far_contact_id_01', + 'LEFT', + ['far_contact_id', '=', 'RelationshipCache_Contact_far_contact_id_01.id'], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Relationships_SearchDisplay_UserDashboard_Relationships', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Relationships', + 'label' => E::ts('Your Contacts / Organizations'), + 'saved_search_id.name' => 'UserDashboard_Relationships', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'near_relation:label', + 'dataType' => 'String', + 'label' => E::ts('Relationship'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.display_name', + 'dataType' => 'String', + 'label' => E::ts('With'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'field' => 'RelationshipCache_Contact_far_contact_id_01.contact_sub_type:icon', + 'side' => 'left', + ], + [ + 'field' => 'RelationshipCache_Contact_far_contact_id_01.contact_type:icon', + 'side' => 'left', + ], + ], + ], + [ + 'type' => 'field', + 'key' => 'start_date', + 'dataType' => 'Date', + 'label' => E::ts('Since'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.address_primary.city', + 'dataType' => 'String', + 'label' => E::ts('City'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('State/Prov'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.email_primary.email', + 'dataType' => 'String', + 'label' => E::ts('Email'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.phone_primary.phone', + 'dataType' => 'String', + 'label' => E::ts('Phone'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/ext/user_dashboard/user_dashboard.civix.php b/ext/user_dashboard/user_dashboard.civix.php new file mode 100644 index 000000000000..3f00bdefdefe --- /dev/null +++ b/ext/user_dashboard/user_dashboard.civix.php @@ -0,0 +1,200 @@ +getUrl(self::LONG_NAME), '/'); + } + return CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME, $file); + } + + /** + * Get the path of a resource file (in this extension). + * + * @param string|NULL $file + * Ex: NULL. + * Ex: 'css/foo.css'. + * @return string + * Ex: '/var/www/example.org/sites/default/ext/org.example.foo'. + * Ex: '/var/www/example.org/sites/default/ext/org.example.foo/css/foo.css'. + */ + public static function path($file = NULL) { + // return CRM_Core_Resources::singleton()->getPath(self::LONG_NAME, $file); + return __DIR__ . ($file === NULL ? '' : (DIRECTORY_SEPARATOR . $file)); + } + + /** + * Get the name of a class within this extension. + * + * @param string $suffix + * Ex: 'Page_HelloWorld' or 'Page\\HelloWorld'. + * @return string + * Ex: 'CRM_Foo_Page_HelloWorld'. + */ + public static function findClass($suffix) { + return self::CLASS_PREFIX . '_' . str_replace('\\', '_', $suffix); + } + +} + +use CRM_UserDashboard_ExtensionUtil as E; + +/** + * (Delegated) Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config + */ +function _user_dashboard_civix_civicrm_config($config = NULL) { + static $configured = FALSE; + if ($configured) { + return; + } + $configured = TRUE; + + $extRoot = __DIR__ . DIRECTORY_SEPARATOR; + $include_path = $extRoot . PATH_SEPARATOR . get_include_path(); + set_include_path($include_path); + // Based on , this does not currently require mixin/polyfill.php. +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function _user_dashboard_civix_civicrm_install() { + _user_dashboard_civix_civicrm_config(); + // Based on , this does not currently require mixin/polyfill.php. +} + +/** + * (Delegated) Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function _user_dashboard_civix_civicrm_enable(): void { + _user_dashboard_civix_civicrm_config(); + // Based on , this does not currently require mixin/polyfill.php. +} + +/** + * Inserts a navigation menu item at a given place in the hierarchy. + * + * @param array $menu - menu hierarchy + * @param string $path - path to parent of this item, e.g. 'my_extension/submenu' + * 'Mailing', or 'Administer/System Settings' + * @param array $item - the item to insert (parent/child attributes will be + * filled for you) + * + * @return bool + */ +function _user_dashboard_civix_insert_navigation_menu(&$menu, $path, $item) { + // If we are done going down the path, insert menu + if (empty($path)) { + $menu[] = [ + 'attributes' => array_merge([ + 'label' => $item['name'] ?? NULL, + 'active' => 1, + ], $item), + ]; + return TRUE; + } + else { + // Find an recurse into the next level down + $found = FALSE; + $path = explode('/', $path); + $first = array_shift($path); + foreach ($menu as $key => &$entry) { + if ($entry['attributes']['name'] == $first) { + if (!isset($entry['child'])) { + $entry['child'] = []; + } + $found = _user_dashboard_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item); + } + } + return $found; + } +} + +/** + * (Delegated) Implements hook_civicrm_navigationMenu(). + */ +function _user_dashboard_civix_navigationMenu(&$nodes) { + if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) { + _user_dashboard_civix_fixNavigationMenu($nodes); + } +} + +/** + * Given a navigation menu, generate navIDs for any items which are + * missing them. + */ +function _user_dashboard_civix_fixNavigationMenu(&$nodes) { + $maxNavID = 1; + array_walk_recursive($nodes, function($item, $key) use (&$maxNavID) { + if ($key === 'navID') { + $maxNavID = max($maxNavID, $item); + } + }); + _user_dashboard_civix_fixNavigationMenuItems($nodes, $maxNavID, NULL); +} + +function _user_dashboard_civix_fixNavigationMenuItems(&$nodes, &$maxNavID, $parentID) { + $origKeys = array_keys($nodes); + foreach ($origKeys as $origKey) { + if (!isset($nodes[$origKey]['attributes']['parentID']) && $parentID !== NULL) { + $nodes[$origKey]['attributes']['parentID'] = $parentID; + } + // If no navID, then assign navID and fix key. + if (!isset($nodes[$origKey]['attributes']['navID'])) { + $newKey = ++$maxNavID; + $nodes[$origKey]['attributes']['navID'] = $newKey; + $nodes[$newKey] = $nodes[$origKey]; + unset($nodes[$origKey]); + $origKey = $newKey; + } + if (isset($nodes[$origKey]['child']) && is_array($nodes[$origKey]['child'])) { + _user_dashboard_civix_fixNavigationMenuItems($nodes[$origKey]['child'], $maxNavID, $nodes[$origKey]['attributes']['navID']); + } + } +} diff --git a/ext/user_dashboard/user_dashboard.php b/ext/user_dashboard/user_dashboard.php new file mode 100644 index 000000000000..5cd4495aa745 --- /dev/null +++ b/ext/user_dashboard/user_dashboard.php @@ -0,0 +1,80 @@ +name, 'UserDashboard_')) { + return; + } + + // Transition note: the legacy dashboard used a setting ('user_dashboard_options') + // to control which panes are enabled. + // This new extension uses a tag. + // For the next year or so, we'll conditionally tag the searches in this extension based on that setting. + // When the transition is complete, the setting can be deleted and this class can be simplified to unconditionally + // tag all SavedSearches in this extension. + $legacySetting = Civi\Api4\Setting::get(FALSE) + ->addSelect('user_dashboard_options:name') + ->execute() + ->first(); + + // If the legacy setting corresponding to this pane is enabled, tag it + $settingNames = [ + 'UserDashboard_Activities' => 'Assigned Activities', + 'UserDashboard_Groups' => 'Groups', + 'UserDashboard_Pledges' => 'CiviPledge', + 'UserDashboard_Contributions' => 'CiviContribute', + 'UserDashboard_Events' => 'CiviEvent', + 'UserDashboard_Memberships' => 'CiviMember', + 'UserDashboard_PCPs' => 'PCP', + 'UserDashboard_Relationships' => 'Permissioned Orgs', + ]; + + $settingName = $settingNames[$savedSearch->name] ?? NULL; + + if (!$settingName || in_array($settingName, $legacySetting['value'], TRUE)) { + Civi\Api4\EntityTag::save(FALSE) + ->addRecord(['entity_table' => 'civicrm_saved_search', 'entity_id' => $id, 'tag_id:name' => 'UserDashboard']) + ->execute(); + } +} diff --git a/karma.conf.js b/karma.conf.js index 2ef455d55f52..d34a6077cba5 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -20,7 +20,7 @@ var angularTempFile = cv(['php:eval', '-U', _CV.ADMIN_USER, cmd]); module.exports = function(config) { config.set({ autoWatch: true, - browsers: ['PhantomJS'], + browsers: ['ChromeHeadless'], exclude: [ 'ang/api4Explorer/Explorer.js' ], diff --git a/managed/contactSummary/SavedSearch_Contact_Summary_Notes.mgd.php b/managed/contactSummary/SavedSearch_Contact_Summary_Notes.mgd.php new file mode 100644 index 000000000000..b9a376ab5827 --- /dev/null +++ b/managed/contactSummary/SavedSearch_Contact_Summary_Notes.mgd.php @@ -0,0 +1,424 @@ + 'SavedSearch_Contact_Summary_Notes', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Contact_Summary_Notes', + 'label' => ts('Contact Summary Notes'), + 'form_values' => NULL, + 'mapping_id' => NULL, + 'search_custom_id' => NULL, + 'api_entity' => 'Note', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'subject', + 'note', + 'note_date', + 'modified_date', + 'contact_id.sort_name', + 'GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name', + 'COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [ + 'id', + ], + 'join' => [ + [ + 'File AS Note_EntityFile_File_01', + 'LEFT', + 'EntityFile', + [ + 'id', + '=', + 'Note_EntityFile_File_01.entity_id', + ], + [ + 'Note_EntityFile_File_01.entity_table', + '=', + "'civicrm_note'", + ], + ], + [ + 'Note AS Note_Note_entity_id_01', + 'LEFT', + [ + 'id', + '=', + 'Note_Note_entity_id_01.entity_id', + ], + [ + 'Note_Note_entity_id_01.entity_table', + '=', + "'civicrm_note'", + ], + ], + ], + 'having' => [], + ], + 'expires_date' => NULL, + 'description' => NULL, + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Contact_Summary_Notes_SearchDisplay_Contact_Summary_Notes_Tab', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Contact_Summary_Notes_Tab', + 'label' => ts('Contact Summary Notes Tab'), + 'saved_search_id.name' => 'Contact_Summary_Notes', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [ + ['note_date', 'DESC'], + ], + 'limit' => 25, + 'pager' => [ + 'hide_single' => TRUE, + 'show_count' => FALSE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'subject', + 'dataType' => 'String', + 'label' => ts('Subject'), + 'sortable' => TRUE, + 'editable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'note', + 'dataType' => 'Text', + 'label' => ts('Note'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'note_date', + 'dataType' => 'Timestamp', + 'label' => ts('Note Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'modified_date', + 'dataType' => 'Timestamp', + 'label' => ts('Modified'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'contact_id.sort_name', + 'dataType' => 'String', + 'label' => ts('Created By'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Note_EntityFile_File_01_file_name', + 'dataType' => 'String', + 'label' => ts('Attachments'), + 'sortable' => TRUE, + 'link' => [ + 'path' => '[GROUP_CONCAT_Note_EntityFile_File_01_url]', + 'entity' => '', + 'action' => '', + 'join' => '', + 'target' => '', + ], + 'icons' => [ + [ + 'field' => 'Note_EntityFile_File_01.icon', + 'side' => 'left', + ], + ], + 'cssRules' => [ + [ + 'crm-image-popup', + 'Note_EntityFile_File_01.is_image', + '=', + TRUE, + ], + ], + ], + [ + 'size' => 'btn-xs', + 'links' => [ + [ + 'path' => 'civicrm/note?action=add&reset=1&entity_table=civicrm_note&entity_id=[id]', + 'icon' => 'fa-comment-o', + 'text' => '0', + 'style' => 'default', + 'condition' => [ + 'COUNT_Note_Note_entity_id_01_id', + 'IS EMPTY', + ], + 'task' => '', + 'entity' => '', + 'action' => '', + 'join' => '', + 'target' => 'crm-popup', + ], + [ + 'path' => 'civicrm/contact/view/note/comments#?parent_id=[id]', + 'icon' => 'fa-comments', + 'text' => '[COUNT_Note_Note_entity_id_01_id]', + 'style' => 'info', + 'condition' => [ + 'COUNT_Note_Note_entity_id_01_id', + 'IS NOT EMPTY', + ], + 'task' => '', + 'entity' => '', + 'action' => '', + 'join' => '', + 'target' => 'crm-popup', + ], + ], + 'type' => 'buttons', + 'alignment' => '', + 'label' => ts('Comments'), + ], + [ + 'size' => 'btn-xs', + 'links' => [ + [ + 'icon' => 'fa-external-link', + 'text' => ts('View'), + 'style' => 'default', + 'condition' => [], + 'task' => '', + 'entity' => 'Note', + 'action' => 'view', + 'join' => '', + 'target' => 'crm-popup', + ], + [ + 'icon' => 'fa-pencil', + 'text' => ts('Edit'), + 'style' => 'default', + 'condition' => [], + 'task' => '', + 'entity' => 'Note', + 'action' => 'update', + 'join' => '', + 'target' => 'crm-popup', + ], + [ + 'icon' => 'fa-trash', + 'text' => ts('Delete'), + 'style' => 'danger', + 'condition' => [], + 'task' => '', + 'entity' => 'Note', + 'action' => 'delete', + 'join' => '', + 'target' => 'crm-popup', + ], + ], + 'type' => 'buttons', + 'alignment' => 'text-right', + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + 'headerCount' => FALSE, + 'toolbar' => [ + [ + 'text' => ts('Add Note'), + 'icon' => 'fa-plus', + 'style' => 'primary', + 'entity' => 'Note', + 'action' => 'add', + 'target' => 'crm-popup', + ], + ], + ], + 'acl_bypass' => FALSE, + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], + [ + 'name' => 'SavedSearch_Contact_Summary_Notes_SearchDisplay_Note_Comments', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Note_Comments', + 'label' => ts('Note Comments'), + 'saved_search_id.name' => 'Contact_Summary_Notes', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [ + ['note_date', 'DESC'], + ], + 'limit' => 25, + 'pager' => [ + 'hide_single' => TRUE, + 'show_count' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'subject', + 'dataType' => 'String', + 'label' => ts('Subject'), + 'sortable' => TRUE, + 'editable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'note', + 'dataType' => 'Text', + 'label' => ts('Note'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'note_date', + 'dataType' => 'Timestamp', + 'label' => ts('Note Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'modified_date', + 'dataType' => 'Timestamp', + 'label' => ts('Modified'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'contact_id.sort_name', + 'dataType' => 'String', + 'label' => ts('Created By'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Note_EntityFile_File_01_file_name', + 'dataType' => 'String', + 'label' => ts('Attachments'), + 'sortable' => TRUE, + 'link' => [ + 'path' => '[GROUP_CONCAT_Note_EntityFile_File_01_url]', + 'entity' => '', + 'action' => '', + 'join' => '', + 'target' => '', + ], + 'icons' => [ + [ + 'field' => 'Note_EntityFile_File_01.icon', + 'side' => 'left', + ], + ], + 'cssRules' => [ + [ + 'crm-image-popup', + 'Note_EntityFile_File_01.is_image', + '=', + TRUE, + ], + ], + ], + [ + 'size' => 'btn-xs', + 'links' => [ + [ + 'icon' => 'fa-external-link', + 'text' => ts('View'), + 'style' => 'default', + 'condition' => [], + 'task' => '', + 'entity' => 'Note', + 'action' => 'view', + 'join' => '', + 'target' => 'crm-popup', + ], + [ + 'icon' => 'fa-pencil', + 'text' => ts('Edit'), + 'style' => 'default', + 'condition' => [], + 'task' => '', + 'entity' => 'Note', + 'action' => 'update', + 'join' => '', + 'target' => 'crm-popup', + ], + [ + 'icon' => 'fa-trash', + 'text' => ts('Delete'), + 'style' => 'danger', + 'condition' => [], + 'task' => '', + 'entity' => 'Note', + 'action' => 'delete', + 'join' => '', + 'target' => 'crm-popup', + ], + ], + 'type' => 'buttons', + 'alignment' => 'text-right', + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + 'headerCount' => FALSE, + 'toolbar' => [ + [ + 'text' => ts('Add Comment'), + 'icon' => 'fa-plus', + 'style' => 'primary', + 'entity' => 'Note', + 'action' => 'add', + 'target' => 'crm-popup', + ], + ], + ], + 'acl_bypass' => FALSE, + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php b/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php new file mode 100644 index 000000000000..c2739138b75f --- /dev/null +++ b/managed/contactSummary/SavedSearch_Contact_Summary_Relationships.mgd.php @@ -0,0 +1,480 @@ + 'SavedSearch_Contact_Summary_Relationships', + 'entity' => 'SavedSearch', + 'cleanup' => 'unused', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Contact_Summary_Relationships', + 'label' => ts('Contact Summary Relationships'), + 'api_entity' => 'RelationshipCache', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'near_relation:label', + 'RelationshipCache_Contact_far_contact_id_01.display_name', + 'start_date', + 'end_date', + 'RelationshipCache_Contact_far_contact_id_01.address_primary.city', + 'RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label', + 'RelationshipCache_Contact_far_contact_id_01.email_primary.email', + 'RelationshipCache_Contact_far_contact_id_01.phone_primary.phone', + 'permission_near_to_far:label', + 'permission_far_to_near:label', + 'is_active', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => $joins, + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Contact_Summary_Relationships_SearchDisplay_Contact_Summary_Relationships_Tab', + 'entity' => 'SearchDisplay', + 'cleanup' => 'unused', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Contact_Summary_Relationships_Active', + 'label' => ts('Contact Summary Relationships Active'), + 'saved_search_id.name' => 'Contact_Summary_Relationships', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 50, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'near_relation:label', + 'dataType' => 'String', + 'label' => ts('Relationship'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'field' => 'permission_far_to_near:icon', + 'side' => 'left', + ], + ], + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.display_name', + 'dataType' => 'String', + 'label' => ts('With'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'field' => 'RelationshipCache_Contact_far_contact_id_01.contact_sub_type:icon', + 'side' => 'left', + ], + [ + 'field' => 'RelationshipCache_Contact_far_contact_id_01.contact_type:icon', + 'side' => 'left', + ], + [ + 'field' => 'permission_near_to_far:icon', + 'side' => 'right', + ], + ], + 'link' => [ + 'path' => '', + 'entity' => 'Contact', + 'action' => 'view', + 'join' => 'RelationshipCache_Contact_far_contact_id_01', + 'target' => '_blank', + ], + 'title' => ts('View Related Contact'), + ], + [ + 'type' => 'field', + 'key' => 'start_date', + 'dataType' => 'Date', + 'label' => ts('Dates'), + 'sortable' => TRUE, + 'rewrite' => '[start_date] - [end_date]', + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.address_primary.city', + 'dataType' => 'String', + 'label' => ts('City'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label', + 'dataType' => 'Integer', + 'label' => ts('State/Prov'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.email_primary.email', + 'dataType' => 'String', + 'label' => ts('Email'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'icon' => 'fa-ban', + 'side' => 'left', + 'if' => [ + 'RelationshipCache_Contact_far_contact_id_01.do_not_email', + '=', + TRUE, + ], + ], + ], + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.phone_primary.phone', + 'dataType' => 'String', + 'label' => ts('Phone'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'icon' => 'fa-ban', + 'side' => 'left', + 'if' => [ + 'RelationshipCache_Contact_far_contact_id_01.do_not_phone', + '=', + TRUE, + ], + ], + ], + ], + [ + 'text' => '', + 'style' => 'default', + 'size' => 'btn-xs', + 'icon' => 'fa-bars', + 'links' => [ + [ + 'entity' => 'Relationship', + 'action' => 'view', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-external-link', + 'text' => ts('View Relationship'), + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + [ + 'entity' => 'Relationship', + 'action' => 'update', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-pencil', + 'text' => ts('Update Relationship'), + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + [ + 'task' => 'disable', + 'entity' => 'Relationship', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-toggle-off', + 'text' => ts('Disable Relationship'), + 'style' => 'default', + 'path' => '', + 'action' => '', + 'condition' => [ + 'is_active', + '=', + TRUE, + ], + ], + [ + 'entity' => 'Relationship', + 'action' => 'delete', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-trash', + 'text' => ts('Delete Relationship'), + 'style' => 'danger', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + [ + 'entity' => 'Case', + 'action' => 'view', + 'join' => 'RelationshipCache_Case_case_id_01', + 'target' => '', + 'icon' => 'fa-folder-open', + 'text' => ts('Manage Case'), + 'style' => 'default', + 'condition' => [], + ], + ], + 'type' => 'menu', + 'alignment' => 'text-right', + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + 'toolbar' => [ + [ + 'action' => 'add', + 'entity' => 'Relationship', + 'text' => ts('Add Relationship'), + 'icon' => 'fa-plus', + 'style' => 'primary', + 'target' => 'crm-popup', + 'join' => '', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], + [ + 'name' => 'SavedSearch_Contact_Summary_Relationships_SearchDisplay_Contact_Summary_Relationships_Inactive', + 'entity' => 'SearchDisplay', + 'cleanup' => 'unused', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Contact_Summary_Relationships_Inactive', + 'label' => ts('Contact Summary Relationships Inactive'), + 'saved_search_id.name' => 'Contact_Summary_Relationships', + 'type' => 'table', + 'settings' => [ + 'description' => ts('These relationships are Disabled OR have a past End Date.'), + 'sort' => [], + 'limit' => 50, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'near_relation:label', + 'dataType' => 'String', + 'label' => ts('Relationship'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'field' => 'permission_far_to_near:icon', + 'side' => 'left', + ], + ], + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.display_name', + 'dataType' => 'String', + 'label' => ts('With'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'field' => 'RelationshipCache_Contact_far_contact_id_01.contact_sub_type:icon', + 'side' => 'left', + ], + [ + 'field' => 'RelationshipCache_Contact_far_contact_id_01.contact_type:icon', + 'side' => 'left', + ], + [ + 'field' => 'permission_near_to_far:icon', + 'side' => 'right', + ], + ], + 'link' => [ + 'path' => '', + 'entity' => 'Contact', + 'action' => 'view', + 'join' => 'RelationshipCache_Contact_far_contact_id_01', + 'target' => '_blank', + ], + 'title' => ts('View Related Contact'), + ], + [ + 'type' => 'field', + 'key' => 'start_date', + 'dataType' => 'Date', + 'label' => ts('Dates'), + 'sortable' => TRUE, + 'rewrite' => '[start_date] - [end_date]', + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.address_primary.city', + 'dataType' => 'String', + 'label' => ts('City'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label', + 'dataType' => 'Integer', + 'label' => ts('State/Prov'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.email_primary.email', + 'dataType' => 'String', + 'label' => ts('Email'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'icon' => 'fa-ban', + 'side' => 'left', + 'if' => [ + 'RelationshipCache_Contact_far_contact_id_01.do_not_email', + '=', + TRUE, + ], + ], + ], + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.phone_primary.phone', + 'dataType' => 'String', + 'label' => ts('Phone'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'icon' => 'fa-ban', + 'side' => 'left', + 'if' => [ + 'RelationshipCache_Contact_far_contact_id_01.do_not_phone', + '=', + TRUE, + ], + ], + ], + ], + [ + 'text' => '', + 'style' => 'default', + 'size' => 'btn-xs', + 'icon' => 'fa-bars', + 'links' => [ + [ + 'entity' => 'Relationship', + 'action' => 'view', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-external-link', + 'text' => ts('View Relationship'), + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + [ + 'entity' => 'Relationship', + 'action' => 'update', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-pencil', + 'text' => ts('Update Relationship'), + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + [ + 'task' => 'enable', + 'entity' => 'Relationship', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-toggle-on', + 'text' => ts('Enable Relationship'), + 'style' => 'default', + 'path' => '', + 'action' => '', + 'condition' => [ + 'is_active', + '=', + FALSE, + ], + ], + [ + 'entity' => 'Relationship', + 'action' => 'delete', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-trash', + 'text' => ts('Delete Relationship'), + 'style' => 'danger', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + ], + 'type' => 'menu', + 'alignment' => 'text-right', + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + 'disabled', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/mixin/setting-admin@1/example/tests/mixin/SettingsAdminTest.php b/mixin/setting-admin@1/example/tests/mixin/SettingsAdminTest.php new file mode 100644 index 000000000000..77d9fea1e1f9 --- /dev/null +++ b/mixin/setting-admin@1/example/tests/mixin/SettingsAdminTest.php @@ -0,0 +1,82 @@ +assertFileExists(static::getPath('/xml/Menu/shimmy.xml'), 'The shimmy extension must have a Menu XML file.'); + } + + public function testInstalled($cv): void { + // The permission is registered... + $items = $cv->api4('Permission', 'get', ['where' => [['name', '=', 'administer shimmy']]]); + $this->assertEquals(TRUE, $items[0]['is_active']); + + // The route is registered... + $items = $cv->api4('Route', 'get', ['where' => [['path', '=', 'civicrm/admin/setting/shimmy']]]); + $this->assertEquals('CRM_Admin_Form_Generic', $items[0]['page_callback']); + + // The nav-menu is registered... + $navMenu = $this->adminHttp('civicrm/ajax/navmenu'); + $this->assertTrue(static::hasPathLikeExpr(';civicrm/admin/setting/shimmy;', $navMenu), 'Page should be in nav-menu'); + + // And the route works... + $pageContent = $this->adminHttp('civicrm/admin/setting/shimmy?reset=1'); + $this->assertMatchesRegularExpression(';crm-setting-block;', $pageContent); + } + + public function testDisabled($cv): void { + $items = $cv->api4('Permission', 'get', ['where' => [['name', '=', 'administer shimmy']]]); + $this->assertEquals(FALSE, $items[0]['is_active']); + + $items = $cv->api4('Route', 'get', ['where' => [['path', '=', 'civicrm/admin/setting/shimmy']]]); + $this->assertEmpty($items); + + $navMenu = $this->adminHttp('civicrm/ajax/navmenu'); + $this->assertFalse(static::hasPathLikeExpr(';civicrm/admin/setting/shimmy;', $navMenu), 'Page should not be in nav-menu'); + + $pageContent = $this->adminHttp('civicrm/admin/setting/shimmy?reset=1'); + $this->assertDoesNotMatchRegularExpression(';crm-setting-block;', $pageContent); + } + + public function testUninstalled($cv): void { + $items = $cv->api4('Permission', 'get', ['where' => [['name', '=', 'administer shimmy']]]); + $this->assertEquals(0, count($items)); + + $items = $cv->api4('Route', 'get', ['where' => [['path', '=', 'civicrm/admin/setting/shimmy']]]); + $this->assertEmpty($items); + + $navMenu = $this->adminHttp('civicrm/ajax/navmenu'); + $this->assertFalse(static::hasPathLikeExpr(';civicrm/admin/setting/shimmy;', $navMenu), 'Page should not be in nav-menu'); + + $pageContent = $this->adminHttp('civicrm/admin/setting/shimmy?reset=1'); + $this->assertDoesNotMatchRegularExpression(';crm-setting-block;', $pageContent); + } + + protected static function getPath($suffix = ''): string { + return dirname(__DIR__, 2) . $suffix; + } + + protected static function adminHttp(string $path) { + $cmd = sprintf('http %s --login -U %s', escapeshellarg($path), escapeshellarg($GLOBALS['_CV']['ADMIN_USER'])); + return cv($cmd, 'raw'); + } + + protected static function hasPathLikeExpr($pattern, $httpResponse) { + // URL formatting varies by UF and content-type... we just want something generally close... + $httpResponse = str_replace('%2F', '/', $httpResponse); + $httpResponse = str_replace('%2f', '/', $httpResponse); + $httpResponse = str_replace('\\/', '/', $httpResponse); + return (bool) preg_match($pattern, $httpResponse); + } + +} diff --git a/mixin/setting-admin@1/mixin.php b/mixin/setting-admin@1/mixin.php new file mode 100644 index 000000000000..708421bb07d0 --- /dev/null +++ b/mixin/setting-admin@1/mixin.php @@ -0,0 +1,214 @@ + System Settings" to "{My Extension} Settings" + * + * (The values of "{myext}" and "{My Extension}" come from info.xml's `` and ``.) + * + * If you don't like the defaults, then there are a few override points: + * + * - If you manually create permission "administer {myext}", then your label/description takes precedence. + * - If you manually register route "civicrm/admin/setting/{myext}", then your definition takes precedence. + * - If you manually configure a setting with `settings_page`, then that setting will move to the other page. + * (To make a hidden setting, specify `settings_page => []`.) + * - If you manually add "civicrm/admin/setting/{myext}" to the menu, then your link takes precedence. + * + * Additionally, there is experimental support for overrides in info.xml. (Respected by v1.0.0 but not guaranteed future.) + * + * My Custom Title + * + * @mixinName setting-admin + * @mixinVersion 1.0.0 + * @since 5.67 + */ + +namespace Civi\Mixin\SettingAdminV1; + +use Civi; + +class About { + + /** + * @var \CRM_Extension_MixInfo + */ + private $mixInfo; + + /** + * @var \CRM_Extension_Info + */ + private $info; + + /** + * @param \CRM_Extension_MixInfo $mixInfo + */ + public static function instance(\CRM_Extension_MixInfo $mixInfo): About { + $about = new About(); + $about->mixInfo = $mixInfo; + $about->info = \CRM_Extension_System::singleton()->getMapper()->keyToInfo($mixInfo->longName); + return $about; + } + + public function getPath(): string { + return 'civicrm/admin/setting/' . $this->mixInfo->shortName; + } + + public function getPerm(): string { + return 'administer ' . $this->mixInfo->shortName; + } + + public function getLabel(): string { + return $this->info->label ? _ts($this->info->label, ['domain' => $this->info->key]) : $this->info->key; + } + + public function getPageTitle(): string { + // Changing the title any other way is slightly annoying because you have to override both route+nav. + // It might be nice if one (route or menu) reliably inherited its title from the other... + if (!empty($this->info->civix['setting-page-title'])) { + return $this->info->civix['setting-page-title']; + // Could call _ts(..., [domain=>...]), but translation appears to happen at another level, + // and double-translation might confuse multilingual. + } + return ts('%1 Settings', [1 => $this->getLabel()]); + } + + public function getRoute(): array { + return [ + 'title' => $this->getPageTitle(), + 'page_callback' => 'CRM_Admin_Form_Generic', + 'access_arguments' => [['administer CiviCRM', $this->getPerm()], 'or'], + 'adminGroup' => 'System Settings', + 'desc' => _ts($this->info->description ?: ''), + ]; + } + + public function getNavigation(): array { + return [ + 'label' => $this->getPageTitle(), + 'name' => sprintf('%s_setting_admin', $this->mixInfo->shortName), + 'url' => $this->getPath() . '?reset=1', + // 'icon' => 'crm-i fa-wrench', // None of the other "System Settings" have icons, so we don't. + // 'permission' => ['administer CiviCRM', $this->getPerm()], + 'permission' => "administer CiviCRM,{$this->getPerm()}", + 'permission_operator' => 'OR', + ]; + } + +} + +class Nav { + + /** + * Visit all items in the nav-tree. + * + * @param array $items + * @param callable $callback + * function(array &$item): mixed + * To short-circuit execution, the callback should return a non-null value. + * @return string|null + * Return NULL by default. If the walk was short-circuited, then return that value. + */ + public static function walk(&$items, callable $callback) { + foreach ($items as &$item) { + $result = $callback($item); + if ($result !== NULL) { + return $result; + } + if (!empty($item['child'])) { + $result = static::walk($item['child'], $callback); + if ($result !== NULL) { + return $result; + } + } + } + return NULL; + } + +} + +/** + * @param \CRM_Extension_MixInfo $mixInfo + * @param \CRM_Extension_BootCache $bootCache + */ +return function ($mixInfo, $bootCache) { + + // Register the setting page ("civicrm/admin/setting/{myext}"). + Civi::dispatcher()->addListener('&hook_civicrm_alterMenu', function (array &$items) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $about = About::instance($mixInfo); + if (!isset($items[$about->getPath()])) { + $items[$about->getPath()] = $about->getRoute(); + } + }, -1000); + + // Define a permission "administer {myext}" + Civi::dispatcher()->addListener('&hook_civicrm_permission', function (array &$permissions) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $about = About::instance($mixInfo); + $perm = 'administer ' . $mixInfo->shortName; + if (!isset($permissions[$perm])) { + $permissions[$perm] = ts('%1: Administer settings', [1 => $about->getLabel()]); + } + }, -1000); + + // Any settings with "group=={myext}" should be added to our setting page (unless overridden). + // By default, 'weight' is based on the order-of-declaration (spaced out with increments of 10). + Civi::dispatcher()->addListener('&hook_civicrm_alterSettingsMetaData', function(array &$settingsMetaData) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $weight = 1000; + $weightInterval = 10; + + foreach ($settingsMetaData as &$setting) { + if (($setting['group'] ?? '') === $mixInfo->shortName) { + if (!array_key_exists('settings_pages', $setting)) { + $setting['settings_pages'][$mixInfo->shortName] = [ + 'weight' => $weight, + ]; + $weight += $weightInterval; + } + } + } + }, -1000); + + // Add navigation-item ('civicrm/admin/setting/{myext}') unless you've already done so. + Civi::dispatcher()->addListener('&hook_civicrm_navigationMenu', function (&$menu) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $about = About::instance($mixInfo); + $newItem = $about->getNavigation() + ['active' => 1]; + + // Skip if we're already in the menu. (Ignore optional suffix `?reset=1`) + $found = Nav::walk($menu, function(&$item) use ($about) { + if (!isset($item['attributes']['url'])) { + return NULL; + } + return strpos($item['attributes']['url'], $about->getPath()) === 0 ? 'found' : NULL; + }); + if ($found) { + return; + } + + Nav::walk($menu, function(&$item) use ($newItem) { + if ($item['attributes']['name'] === 'System Settings') { + $item['child'][] = ['attributes' => $newItem]; + return 'done'; + } + }); + }, -1000); + +}; diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 93e7c97851fd..9c0ca05f0678 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -24,9 +24,6 @@ ./tests/phpunit/Civi - - ./tests/phpunit/WebTest - diff --git a/release-notes.md b/release-notes.md index a4ba38a48dfb..184b758194a3 100644 --- a/release-notes.md +++ b/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.67.0 + +Released November 1, 2023 + +- **[Synopsis](release-notes/5.67.0.md#synopsis)** +- **[Features](release-notes/5.67.0.md#features)** +- **[Bugs resolved](release-notes/5.67.0.md#bugs)** +- **[Miscellany](release-notes/5.67.0.md#misc)** +- **[Credits](release-notes/5.67.0.md#credits)** +- **[Feedback](release-notes/5.67.0.md#feedback)** + ## CiviCRM 5.66.0 Released October 4, 2023 diff --git a/release-notes/5.66.0.md b/release-notes/5.66.0.md index 21ef2e0b4f6e..4ff6cfb135ff 100644 --- a/release-notes/5.66.0.md +++ b/release-notes/5.66.0.md @@ -14,606 +14,985 @@ Released October 4, 2023 | *Does this version...?* | | |:--------------------------------------------------------------- |:-------:| -| Fix security vulnerabilities? | | -| Change the database schema? | | -| Alter the API? | | -| Require attention to configuration options? | | -| Fix problems installing or upgrading to a previous version? | | -| Introduce features? | | -| Fix bugs? | | +| Fix security vulnerabilities? | no | +| **Change the database schema?** | **yes** | +| **Alter the API?** | **yes** | +| Require attention to configuration options? | no | +| **Fix problems installing or upgrading to a previous version?** | **yes** | +| **Introduce features?** | **yes** | +| **Fix bugs?** | **yes** | ## Features -## Bugs resolved - ### Core CiviCRM -- **Upgrade - don't crash on earlier versions of mariadb ([27464](https://github.com/civicrm/civicrm-core/pull/27464))** +- **Add "phpstorm" extension ([27168](https://github.com/civicrm/civicrm-core/pull/27168), + [27175](https://github.com/civicrm/civicrm-core/pull/27175), + [27178](https://github.com/civicrm/civicrm-core/pull/27178), + [27179](https://github.com/civicrm/civicrm-core/pull/27179), + [27239](https://github.com/civicrm/civicrm-core/pull/27239), and [27262](https://github.com/civicrm/civicrm-core/pull/27262))** -- **Add system check for missing component extensions ([27453](https://github.com/civicrm/civicrm-core/pull/27453))** + Adds a "phpstorm" extension which implements a process for integrating some + dynamic data into PhpStorm. -- **Add weights on profile fields page (notices ([27452](https://github.com/civicrm/civicrm-core/pull/27452))** +- **Improve FormBuilder handling of non logged in flows + (Work Towards [dev/core#4232](https://lab.civicrm.org/dev/core/-/issues/4232): + [27041](https://github.com/civicrm/civicrm-core/pull/27041))** -- **Add code comments re the cleanup I didn't do ([27451](https://github.com/civicrm/civicrm-core/pull/27451))** + Improves FormBuilder schema to better handle form flows for anonymous users. -- **backport of 27448 ([27450](https://github.com/civicrm/civicrm-core/pull/27450))** +- **New core extension for scheduled reminders using criteria from + search-kit + ([dev/core#2644](https://lab.civicrm.org/dev/core/-/issues/2644): + [27081](https://github.com/civicrm/civicrm-core/pull/27081))** -- **Fix variable leakage in online event receipt ([27443](https://github.com/civicrm/civicrm-core/pull/27443))** + Adds the Scheduled Communications extension which makes it so one can set up + scheduled reminders using criteria from search-kit. -- **Fix missing weights on Custom data screen (notices) ([27428](https://github.com/civicrm/civicrm-core/pull/27428))** +- **User experience improvement, hide by default the Latitude and Longitude + fields, users can enable display if needed + ([dev/core#2640](https://lab.civicrm.org/dev/core/-/issues/2640): + [27100](https://github.com/civicrm/civicrm-core/pull/27100))** -- **Add weights on profile links (remove notices) ([27432](https://github.com/civicrm/civicrm-core/pull/27432))** + Hides the Latitude and Longitude fields by default. -- **Fix mistake in just-merged email processor code ([27408](https://github.com/civicrm/civicrm-core/pull/27408))** +- **Pass html text through a formatter when translating it to tokens + ([27204](https://github.com/civicrm/civicrm-core/pull/27204) and + [27203](https://github.com/civicrm/civicrm-core/pull/27203))** -- **Upgrader - Skip snapshots on some MariaDB env's (roughly: 10.6.0-10.6.5) ([27404](https://github.com/civicrm/civicrm-core/pull/27404))** + Converts new lines to page breaks when rendering text tokens to html. -- **APIv4: Implicit joins for email_primary, etc cause error ([27399](https://github.com/civicrm/civicrm-core/pull/27399))** +- **Add custom data when creating smart group + ([23312](https://github.com/civicrm/civicrm-core/pull/23312))** -- **Fix weight notices on ActivityType (option values) pages ([27395](https://github.com/civicrm/civicrm-core/pull/27395))** + Adds group custom fields when creating a new smart group from search action + Group -> Create Smart Group. -- **Revert "[REF] Update Zetacomponents/mail to be 1.9.5 to fix email validation handling" ([27394](https://github.com/civicrm/civicrm-core/pull/27394))** +- **Add sort for country/state fields in reports + ([dev/core#4532](https://lab.civicrm.org/dev/core/-/issues/4532): + [27135](https://github.com/civicrm/civicrm-core/pull/27135))** -- **dev/core#2800 Fix bounce processing to handle verp emails ([27356](https://github.com/civicrm/civicrm-core/pull/27356))** + Adds sort for country/state fields in reports. -- **Add email helper to new form test helper ([27384](https://github.com/civicrm/civicrm-core/pull/27384))** +- **Add system check for missing component extensions + ([27453](https://github.com/civicrm/civicrm-core/pull/27453))** -- **dev/core#4559 Don't include test, template, deleted entities in SearchDisplay totals ([27383](https://github.com/civicrm/civicrm-core/pull/27383))** + Expands the system check for required extensions to also cover component + extensions. -- **dev/core#4542 Fix priority handling in ACLs when dealing with objects… ([27381](https://github.com/civicrm/civicrm-core/pull/27381))** +- **Bump search_autocomplete_count default from 10 to 15 + ([27116](https://github.com/civicrm/civicrm-core/pull/27116))** -- **Expose fee_label for event tokens ([27372](https://github.com/civicrm/civicrm-core/pull/27372))** + Improves the overall responsiveness of Autocompletes by fetching more results + at a time. -- **Fix notice on unpaid event ([27367](https://github.com/civicrm/civicrm-core/pull/27367))** +- **Schema - Improve pseudoconstant metadata for `prefetch` and `controlField` + ([27054](https://github.com/civicrm/civicrm-core/pull/27054))** -- **[REF] Ensure that any NULL values in the title field are fixed prior … ([27368](https://github.com/civicrm/civicrm-core/pull/27368))** + Improves schema metadata with an eye toward optimizing APIv4 pseudoconstant + lookups. -- **Support retention of locale on links ([27128](https://github.com/civicrm/civicrm-core/pull/27128))** +- **Afform - Support multiple permissions in the GUI + ([27272](https://github.com/civicrm/civicrm-core/pull/27272))** -- **FiveSixtyFour: disable i18n rewrite on cancel_URL ([27364](https://github.com/civicrm/civicrm-core/pull/27364))** + Allows multiple permissions to be set for an Afform. -- **Ensure event ID is an integer ([27363](https://github.com/civicrm/civicrm-core/pull/27363))** +- **Afform - Allow submissions to be disabled and limited + ([27211](https://github.com/civicrm/civicrm-core/pull/27211))** -- **PseudoConstant - Prevent fatal when entity not available ([27358](https://github.com/civicrm/civicrm-core/pull/27358))** + Adds FormBuilder settings to disable submissions or limit the number of + submissions. -- **Remove unused variable ([27350](https://github.com/civicrm/civicrm-core/pull/27350))** +- **SearchKit - Improve handling of money currency + ([27202](https://github.com/civicrm/civicrm-core/pull/27202))** -- **dev/core#4555 When using a Contribution Page with a Membership Price Set, the contribution amount information never shows on the thank you page ([27330](https://github.com/civicrm/civicrm-core/pull/27330))** + Improves SearchKit support for different types of monetary entities (e.g. the + Expenses extension). -- **Fold deprecated function back into the caller ([27345](https://github.com/civicrm/civicrm-core/pull/27345))** +- **SearchKit - Expose sql functions provided by extensions + ([27197](https://github.com/civicrm/civicrm-core/pull/27197))** -- **[REF] Update Zetacomponents/mail to be 1.9.5 to fix email validation … ([27344](https://github.com/civicrm/civicrm-core/pull/27344))** + Allows extensions to contribute SqlFunctions to SearchKit. -- **5.65 ([27348](https://github.com/civicrm/civicrm-core/pull/27348))** +- **SearchKit - In-place edit without refreshing results + ([27105](https://github.com/civicrm/civicrm-core/pull/27105))** -- **5.65 ([27343](https://github.com/civicrm/civicrm-core/pull/27343))** + Speeds up the process of in-place-editing on a SearchKit display. -- **(dev/core#4433) - Implement Civi::url() with prefixes and OOP enhancements ([26861](https://github.com/civicrm/civicrm-core/pull/26861))** +- **Afform - Add Note as an afformEntity + ([27110](https://github.com/civicrm/civicrm-core/pull/27110))** -- **Move regex processing in EmailProcessor to handling class ([27337](https://github.com/civicrm/civicrm-core/pull/27337))** + Adds the Note entity to Form Builder. -- **5.65 ([27342](https://github.com/civicrm/civicrm-core/pull/27342))** +- **APIv4 Explorer - Keep list of suffixes in-sync + ([27109](https://github.com/civicrm/civicrm-core/pull/27109))** -- **SearchKit - Fix default search columns ([27331](https://github.com/civicrm/civicrm-core/pull/27331))** + Keeps the list of available pseudoconstant suffixes in APIv4 Explorer + consistent with the master list. -- **5.65 ([27341](https://github.com/civicrm/civicrm-core/pull/27341))** +- **API - Switched to cached function for looking up pemissioned groups + ([27140](https://github.com/civicrm/civicrm-core/pull/27140))** -- **Improve error handling by using civicrm_api3 not civicrm_api ([27321](https://github.com/civicrm/civicrm-core/pull/27321))** + Performance improvement for looking up acl groups. -- **Revert "Update CRM.status for compatability with native js promises" ([27338](https://github.com/civicrm/civicrm-core/pull/27338))** +- **Afform - Enhance returned values from AfformSubmission.afform_name options + ([27108](https://github.com/civicrm/civicrm-core/pull/27108))** -- **5.65 to master ([27336](https://github.com/civicrm/civicrm-core/pull/27336))** + Improves the psueudoconstant options list returned from + AfformSubmission.afform_name so that more attributes of the afform can be + accessed. -- **Event Dashboard: show events that have not ended yet ([27329](https://github.com/civicrm/civicrm-core/pull/27329))** +- **Allow for configuration of activity contacts, type and campaign for + email-to-activity + ([26905](https://github.com/civicrm/civicrm-core/pull/26905))** -- **Remove unreachable page ([27305](https://github.com/civicrm/civicrm-core/pull/27305))** + Adds more options when setting up email-to-activity. -- **Set link weight on manage case ([27327](https://github.com/civicrm/civicrm-core/pull/27327))** +- **APIv4 - Proper ACLs for relationship entity + ([27183](https://github.com/civicrm/civicrm-core/pull/27183))** -- **Remove unused parameter, pass by reference in private function with one caller ([27320](https://github.com/civicrm/civicrm-core/pull/27320))** + Improves v4 Relationship API to use fine-grained ACLs instead of + coarse-grained permission check which was too restrictive. -- **Define weight for links on extensions page, financial types, financial accounts ([27323](https://github.com/civicrm/civicrm-core/pull/27323))** +- **APIv4 - Add missing input type options + ([27236](https://github.com/civicrm/civicrm-core/pull/27236))** -- **5.65 to master ([27326](https://github.com/civicrm/civicrm-core/pull/27326))** + Makes APIv4 aware of a couple more input types (both core and custom fields + can have these types). -- **Remove long-broken function ([27317](https://github.com/civicrm/civicrm-core/pull/27317))** +- **Add API-based EntityLookupTrait + ([27257](https://github.com/civicrm/civicrm-core/pull/27257))** -- **Finish CiviCRM 2.1 deprecation - old style verp ([27318](https://github.com/civicrm/civicrm-core/pull/27318))** + Adds a helper class to make it easy to lookup entity values. -- **Use new lookup trait to eliminate use of undefined properties `userDisplayName` ([27259](https://github.com/civicrm/civicrm-core/pull/27259))** +- **Distmaker: add CiviCRM Standalone support + ([27104](https://github.com/civicrm/civicrm-core/pull/27104))** -- **Fix dev/core#4550 - Crash when saving repeating event ([27315](https://github.com/civicrm/civicrm-core/pull/27315))** + Adds support for building CiviCRM Standalone tar.gz archives for + nightly/rc/stable releases. -- **dev/3410#3410 Show 0 rather than nothing when paid amount is zero ([27288](https://github.com/civicrm/civicrm-core/pull/27288))** +- **Standalone: add error handler + ([26965](https://github.com/civicrm/civicrm-core/pull/26965))** -- **Fix financial transfer test to use form flow, allow all pending to transfer ([27281](https://github.com/civicrm/civicrm-core/pull/27281))** + Adds error handling for standalone implementations. -- **Show Contribution Page receipt text in offline contribution receipt ([27173](https://github.com/civicrm/civicrm-core/pull/27173))** +- **Update a couple more tpl variables to tokens + ([27372](https://github.com/civicrm/civicrm-core/pull/27372), + [27004](https://github.com/civicrm/civicrm-core/pull/27004) and + [27017](https://github.com/civicrm/civicrm-core/pull/27017))** -- **Let unset weights give an e-notice ([26243](https://github.com/civicrm/civicrm-core/pull/26243))** + Updates a couple smarty template variables to use tokens instead. -- **Make splitjob function static & private, Remove a couple of unused variables ([27304](https://github.com/civicrm/civicrm-core/pull/27304))** +- **SearchKit - Use Contact.sort_name instead of display_name for searches and + Autocompletes ([27112](https://github.com/civicrm/civicrm-core/pull/27112))** -- **5.65 ([27312](https://github.com/civicrm/civicrm-core/pull/27312))** + Improves searchkit user experience by using contact sort name instead of + display name for searches and autocompletes. -- **Remove some unused undefined properties from participant export ([27298](https://github.com/civicrm/civicrm-core/pull/27298))** +### CiviCase -- **[REF] Convert from session status to deprecation warning ([27255](https://github.com/civicrm/civicrm-core/pull/27255))** +- **Be able to remove clients from a case from the manage case view + ([27200](https://github.com/civicrm/civicrm-core/pull/27200))** -- **Fix token consistency test with new lines and
s ([27314](https://github.com/civicrm/civicrm-core/pull/27314))** + Makes it so users can remove clients from a case from the manage case view. -- **Switch to using token for trxn_id, online contribution receipt ([27295](https://github.com/civicrm/civicrm-core/pull/27295))** +### CiviContribute -- **dev/core#2644 Add Scheduled Communications extension ([27081](https://github.com/civicrm/civicrm-core/pull/27081))** +- **Add `Discount` to APIv4 + ([27122](https://github.com/civicrm/civicrm-core/pull/27122))** -- **[NFC] Be more confident and informative in the comment for CRM_Core_Session::set() ([27313](https://github.com/civicrm/civicrm-core/pull/27313))** + Adds APIv4 Discount entity. -- **Convert new lines to page breaks when rendering text tokens to html ([27203](https://github.com/civicrm/civicrm-core/pull/27203))** +### CiviEvent -- **Unconditionally assign smarty-var, remove unused variables ([26051](https://github.com/civicrm/civicrm-core/pull/26051))** +- **Afform - Enable creating event from a template + ([27058](https://github.com/civicrm/civicrm-core/pull/27058))** -- **Trivial cleanup in EmailProcessorTest ([27307](https://github.com/civicrm/civicrm-core/pull/27307))** + Enables selecting an event template when using Afform to create a new event. -- **Make function private, after universe search in EmailProcessor ([27309](https://github.com/civicrm/civicrm-core/pull/27309))** +### CiviMail -- **Make function private to reflect usage ([27308](https://github.com/civicrm/civicrm-core/pull/27308))** +- **Update SMS cannot send message to specify that a mobile phone number is + required ([27194](https://github.com/civicrm/civicrm-core/pull/27194))** -- **Declare CRM_Core_Exception in cleanDir, add type hints ([27306](https://github.com/civicrm/civicrm-core/pull/27306))** + Improves the error message when SMS cannot be sent to phone number because it + is not a mobile phone. -- **Add contribution page tokens to contribution tokens ([27201](https://github.com/civicrm/civicrm-core/pull/27201))** +### CiviMember -- **Move function to only form that calls it ([27299](https://github.com/civicrm/civicrm-core/pull/27299))** +- **Membership Detail improvements (Work towards + [dev/core#4522](https://lab.civicrm.org/dev/core/-/issues/4522): + [27118](https://github.com/civicrm/civicrm-core/pull/27118) and + [27249](https://github.com/civicrm/civicrm-core/pull/27249))** -- **Unconditionally assign smarty variable ([27300](https://github.com/civicrm/civicrm-core/pull/27300))** + Improves the Membership detail report by adding: Membership Status, + Auto-Renew, Auto-Renew Subscription Status, Start Date and End Date to the + sorting tab. -- **APIv4 - Fix setting nullable/required/default_value field metadata ([27302](https://github.com/civicrm/civicrm-core/pull/27302))** +## Bugs resolved -- **Pass html text through a formatter when translating it to tokens ([27204](https://github.com/civicrm/civicrm-core/pull/27204))** +### Core CiviCRM -- **CiviCampaign - Refactor civicrm_survey.recontact_interval ([27268](https://github.com/civicrm/civicrm-core/pull/27268))** +- **Admin UI: Attempting to delete custom field group with custom fields opens + the listing page in modal window + ([dev/core#4094](https://lab.civicrm.org/dev/core/-/issues/4094): + [27056](https://github.com/civicrm/civicrm-core/pull/27056))** -- **SearchKit - In-place edit without refreshing results ([27105](https://github.com/civicrm/civicrm-core/pull/27105))** + Use statusBounce instead of redirect when a custom group cannot be deleted. -- **Remove unused CONST ([27301](https://github.com/civicrm/civicrm-core/pull/27301))** +- **Standalone: language change does not stick (Work towards + [dev/core#4425](https://lab.civicrm.org/dev/core/-/issues/4425): + [27040](https://github.com/civicrm/civicrm-core/pull/27040), [27639](https://github.com/civicrm/civicrm-core/pull/27639))** -- **Remove, extraneous: punctuation? ([27297](https://github.com/civicrm/civicrm-core/pull/27297))** + Ensures currentPath for Standalone implementations does not return empty so + that language-switcher extension can work. -- **[REF] - Cleanup managed entities to all go through `hook_civicrm_managed` and deprecate unnamed entities ([27254](https://github.com/civicrm/civicrm-core/pull/27254))** +- **Import caching issue (Work towards + [dev/core#4467](https://lab.civicrm.org/dev/core/-/issues/4467): + [27076](https://github.com/civicrm/civicrm-core/pull/27076))** -- **Merge 5.65 to master ([27291](https://github.com/civicrm/civicrm-core/pull/27291))** + Ensure saving and updating an import field mapping saves correctly. -- **Afform - Allow submissions to be disabled and limited ([27211](https://github.com/civicrm/civicrm-core/pull/27211))** +- **Redis performance issue on delete contact + ([dev/core#4501](https://lab.civicrm.org/dev/core/-/issues/4501): + [27115](https://github.com/civicrm/civicrm-core/pull/27115))** -- **Add weights to scheduled jobs ([27283](https://github.com/civicrm/civicrm-core/pull/27283))** +- **Search Kit - Links conditional doesn't work with domain_id or domain = + current domain + ([dev/core#4509](https://lab.civicrm.org/dev/core/-/issues/4509): + [27093](https://github.com/civicrm/civicrm-core/pull/27093))** -- **Afform - Support multiple permissions in the GUI ([27272](https://github.com/civicrm/civicrm-core/pull/27272))** +- **ACLs' priority sometimes does the opposite of what it says it does + ([dev/core#4542](https://lab.civicrm.org/dev/core/-/issues/4542): + [27381](https://github.com/civicrm/civicrm-core/pull/27381))** -- **Fix incorrect event receipt regression ([27159](https://github.com/civicrm/civicrm-core/pull/27159))** +- **ACLs - Fix recent regression handling "edit all contacts" ([27409](https://github.com/civicrm/civicrm-core/pull/27409))** -- **Remove unused profiles from offline event receipts ([27150](https://github.com/civicrm/civicrm-core/pull/27150))** +- **Autocomplete - Fix search-by-id for entities without a numeric id ([27629](https://github.com/civicrm/civicrm-core/pull/27629))** -- **Pass specific ids rather than ids array ([27274](https://github.com/civicrm/civicrm-core/pull/27274))** +- **When using a Contribution Page with a Membership Price Set, the contribution + amount information never shows on the thank you page + ([dev/core#4555](https://lab.civicrm.org/dev/core/-/issues/4555): + [27330](https://github.com/civicrm/civicrm-core/pull/27330))** -- **Add weights to links on multipleRecordFieldsListing ([27284](https://github.com/civicrm/civicrm-core/pull/27284))** +- **SearchKit: Totals include test, template and deleted entities, while rows do + not, leading to mismatch + ([dev/core#4559](https://lab.civicrm.org/dev/core/-/issues/4559): + [27383](https://github.com/civicrm/civicrm-core/pull/27383))** -- **[test] [cleanup] Move _REQUEST cleanup to tearDown ([27285](https://github.com/civicrm/civicrm-core/pull/27285))** +- **Auto-complete option values aren't available to anonymous users + ([dev/core#3049](https://lab.civicrm.org/dev/core/-/issues/3049): + [26841](https://github.com/civicrm/civicrm-core/pull/26841))** -- **Update further tests to additional form flow, lock in bug fix ([27279](https://github.com/civicrm/civicrm-core/pull/27279))** +- **Add weights on profile fields page to fix notices + ([27452](https://github.com/civicrm/civicrm-core/pull/27452))** -- **5.65 ([27286](https://github.com/civicrm/civicrm-core/pull/27286))** +- **Upgrader - Skip snapshots on some MariaDB env's (roughly: 10.6.0-10.6.5) + ([27404](https://github.com/civicrm/civicrm-core/pull/27404), [27464](https://github.com/civicrm/civicrm-core/pull/27464))** -- **Minor cleanup in test ([27282](https://github.com/civicrm/civicrm-core/pull/27282))** +- **APIv4: Implicit joins for email_primary, etc cause error + ([dev/core#4562](https://lab.civicrm.org/dev/core/-/issues/4562): + [27399](https://github.com/civicrm/civicrm-core/pull/27399))** -- **Update one of our complex confirm tests to use full form flow, fix discovered failure to send to additional participants ([27277](https://github.com/civicrm/civicrm-core/pull/27277))** +- **APIv4 - Fix setting nullable/required/default_value field metadata + ([27302](https://github.com/civicrm/civicrm-core/pull/27302))** -- **API - Switched to cached function for looking up pemissioned groups ([27140](https://github.com/civicrm/civicrm-core/pull/27140))** +- **Let unset weights give an e-notice + ([26243](https://github.com/civicrm/civicrm-core/pull/26243))** -- **Add pre-upgrade message about the removed TrackingFields.tpl ([27276](https://github.com/civicrm/civicrm-core/pull/27276))** +- **Add weight to a few more links + ([27216](https://github.com/civicrm/civicrm-core/pull/27216), + [27323](https://github.com/civicrm/civicrm-core/pull/27323), + [27229](https://github.com/civicrm/civicrm-core/pull/27229), + [27283](https://github.com/civicrm/civicrm-core/pull/27283), + [27284](https://github.com/civicrm/civicrm-core/pull/27284) and + [27230](https://github.com/civicrm/civicrm-core/pull/27230))** -- **Fix Financial Items incorrectly recorded when using Payment API ([26987](https://github.com/civicrm/civicrm-core/pull/26987))** +- **Standalone: Fix ACL help/links, tweak Users and Permissions menu + ([27119](https://github.com/civicrm/civicrm-core/pull/27119))** -- **Remove some unnecessary variables & pass by ref ([27273](https://github.com/civicrm/civicrm-core/pull/27273))** +- **Improve error handling by using civicrm_api3 not civicrm_api + ([27321](https://github.com/civicrm/civicrm-core/pull/27321))** -- **SearchKit - Expose sql functions provided by extensions ([27197](https://github.com/civicrm/civicrm-core/pull/27197))** +- **Switch to using token for trxn_id, online contribution receipt + ([27295](https://github.com/civicrm/civicrm-core/pull/27295))** -- **Delete probably-unused TrackingFields.tpl ([27233](https://github.com/civicrm/civicrm-core/pull/27233))** +- **Delete probably-unused TrackingFields.tpl and adds a pre-upgrade message to + warn people ([27233](https://github.com/civicrm/civicrm-core/pull/27233) and + [27276](https://github.com/civicrm/civicrm-core/pull/27276))** -- **EntityLookupTrait - Add isDefined and getDefinition methods ([27275](https://github.com/civicrm/civicrm-core/pull/27275))** +- **Re-enable any queues that were disabled for background processing, on end + ([27023](https://github.com/civicrm/civicrm-core/pull/27023))** -- **SearchKit - Improve handling of money currency ([27202](https://github.com/civicrm/civicrm-core/pull/27202))** +- **Update one of our complex confirm tests to use full form flow, fix + discovered failure to send to additional participants + ([27277](https://github.com/civicrm/civicrm-core/pull/27277))** -- **ajax.js - Fix undeclared variable ([27269](https://github.com/civicrm/civicrm-core/pull/27269))** +- **Replace deprecated RegExp PHPUnit functions for v9 + ([27139](https://github.com/civicrm/civicrm-core/pull/27139))** -- **Add form helper for tests ([27267](https://github.com/civicrm/civicrm-core/pull/27267))** +- **Switch menubar search to use APIv4 & delete deprecated v3 'getquick' action + ([26676](https://github.com/civicrm/civicrm-core/pull/26676) and + [27263](https://github.com/civicrm/civicrm-core/pull/27263))** -- **[NFC] PhpStorm - Add more APIv4 function argument hints ([27262](https://github.com/civicrm/civicrm-core/pull/27262))** +- **EntityLookupTrait - Skip queries when looking up id + ([27261](https://github.com/civicrm/civicrm-core/pull/27261))** -- **EntityLookupTrait - Skip queries when looking up id ([27261](https://github.com/civicrm/civicrm-core/pull/27261))** +- **PHP8 date range not rendered correctly + ([27228](https://github.com/civicrm/civicrm-core/pull/27228))** -- **Fix fatal on Manage Extensions caused by financialacls links ([27264](https://github.com/civicrm/civicrm-core/pull/27264))** +- **standaloneusers: logout function must be static + ([27265](https://github.com/civicrm/civicrm-core/pull/27265))**s -- **Menubar Quicksearch - Followup fixes ([27263](https://github.com/civicrm/civicrm-core/pull/27263))** +- **Afform - make summary tab names less weird + ([27196](https://github.com/civicrm/civicrm-core/pull/27196))** -- **standaloneusers: logout function must be static ([27265](https://github.com/civicrm/civicrm-core/pull/27265))** +- **Afform - Ensure prefill entities are populated correctly ([27615](https://github.com/civicrm/civicrm-core/pull/27615))** -- **avoid double clicks on petition page ([27251](https://github.com/civicrm/civicrm-core/pull/27251))** +- **Improve initialization crash message + ([27138](https://github.com/civicrm/civicrm-core/pull/27138))** -- **Fix participantTest to not use transactions ([27260](https://github.com/civicrm/civicrm-core/pull/27260))** +- **Set weight on Note Form + ([27106](https://github.com/civicrm/civicrm-core/pull/27106))** -- **Switch menubar search to use APIv4 & delete deprecated v3 'getquick' action ([26676](https://github.com/civicrm/civicrm-core/pull/26676))** +- **Make import parser external ID error message more helpful + ([27103](https://github.com/civicrm/civicrm-core/pull/27103))** -- **Add API-based EntityLookupTrait ([27257](https://github.com/civicrm/civicrm-core/pull/27257))** +- **Show which extension has a parse error in info.xml + ([27028](https://github.com/civicrm/civicrm-core/pull/27028))** -- **Further fix forms to full form flow ([27256](https://github.com/civicrm/civicrm-core/pull/27256))** +- **E:: to make it look after the extension's translation + ([27027](https://github.com/civicrm/civicrm-core/pull/27027))** -- **Add weights to membership type links ([27231](https://github.com/civicrm/civicrm-core/pull/27231))** +- **Use phpunit when running on PHP 7.3+ + ([27036](https://github.com/civicrm/civicrm-core/pull/27036))** -- **dev/core#3049 - Update autocomplete custom fields to use APIv4 ([26841](https://github.com/civicrm/civicrm-core/pull/26841))** +- **ScheduledJob - Clean up form code & improve validation + ([26879](https://github.com/civicrm/civicrm-core/pull/26879))** -- **SearchKit - Fix autocomplete filters on in-place-edit fields ([27253](https://github.com/civicrm/civicrm-core/pull/27253))** +- **Fix Domain Organization form for notices & PHP 8 compliance + ([27190](https://github.com/civicrm/civicrm-core/pull/27190))** -- **Ensure tax_amount is not null ([26993](https://github.com/civicrm/civicrm-core/pull/26993))** +- **Flush Redis `prevnext` cache when clearing `civicrm_cache` + ([27113](https://github.com/civicrm/civicrm-core/pull/27113))** -- **Add sorting options on Membership Details report ([27249](https://github.com/civicrm/civicrm-core/pull/27249))** +- **Pass specific ids rather than ids array + ([27274](https://github.com/civicrm/civicrm-core/pull/27274))** -- **Fix forms to call full form flow ([27250](https://github.com/civicrm/civicrm-core/pull/27250))** +- **Fix fatal on Manage Extensions caused by financialacls links + ([27264](https://github.com/civicrm/civicrm-core/pull/27264))** -- **dev/core#444 Default to blank for required multi-lingual fields ([27226](https://github.com/civicrm/civicrm-core/pull/27226))** +- **Fix weight notices on ActivityType (option values) pages + ([27395](https://github.com/civicrm/civicrm-core/pull/27395))** -- **5.65 ([27248](https://github.com/civicrm/civicrm-core/pull/27248))** +- **PseudoConstant - Prevent fatal when entity not available + ([27358](https://github.com/civicrm/civicrm-core/pull/27358))** -- **Participant Form Test fixes ([27245](https://github.com/civicrm/civicrm-core/pull/27245))** +- **SearchKit - Fix autocomplete filters on in-place-edit fields + ([27253](https://github.com/civicrm/civicrm-core/pull/27253))** -- **Superficial clean up in test class ([27238](https://github.com/civicrm/civicrm-core/pull/27238))** +- **Fix sort groups on PHP 8 + ([27210](https://github.com/civicrm/civicrm-core/pull/27210))** -- **APIv4 - Add missing input type options ([27236](https://github.com/civicrm/civicrm-core/pull/27236))** +- **ContactSummary - Fix smarty notices in communication preferences section + ([27209](https://github.com/civicrm/civicrm-core/pull/27209))** -- **PHP8 date range not rendered correctly ([27228](https://github.com/civicrm/civicrm-core/pull/27228))** +- **Afform - Fix broken prefill functionality + ([27121](https://github.com/civicrm/civicrm-core/pull/27121))** -- **phpstorm - Prefer to store generated hints in source-tree ([27239](https://github.com/civicrm/civicrm-core/pull/27239))** +- **E-notice fix - switch order of and params check around + ([27188](https://github.com/civicrm/civicrm-core/pull/27188))** -- **Remove isset from Arb.xml ([27224](https://github.com/civicrm/civicrm-core/pull/27224))** +- **Fix deprecation notice on ExecuteJob screen + ([27157](https://github.com/civicrm/civicrm-core/pull/27157))** -- **Add weights to MemberSelectorSearch ([27230](https://github.com/civicrm/civicrm-core/pull/27230))** +- **Fix PHP8.1 repeated notice errors in Table.tpl + ([27137](https://github.com/civicrm/civicrm-core/pull/27137))** -- **Cleanup signature for test function `getFormObject` ([27225](https://github.com/civicrm/civicrm-core/pull/27225))** +- **Fix notices, PHP errors on event location tab + ([27212](https://github.com/civicrm/civicrm-core/pull/27212))** -- **Add weights to MessageTemplate links ([27229](https://github.com/civicrm/civicrm-core/pull/27229))** +- **Fix notices on domain.tpl by just adding what we need + ([27189](https://github.com/civicrm/civicrm-core/pull/27189))** -- **(dev/core#4522) Membership Detail improvements - add sorting for Memb… ([27118](https://github.com/civicrm/civicrm-core/pull/27118))** +- **Notice fix - schedule reminders + ([27154](https://github.com/civicrm/civicrm-core/pull/27154))** -- **Fix Contribution_Tab links to have weight, improve test ([27227](https://github.com/civicrm/civicrm-core/pull/27227))** +- **Undefined property fix + ([27148](https://github.com/civicrm/civicrm-core/pull/27148))** -- **Switch tests to use createTestEntity for payment processor ([27217](https://github.com/civicrm/civicrm-core/pull/27217))** +- **Notice fix on contact types browse + ([27153](https://github.com/civicrm/civicrm-core/pull/27153))** -- **5.65 to master ([27222](https://github.com/civicrm/civicrm-core/pull/27222))** +- **Fix e-notice by removing conditionality + ([27152](https://github.com/civicrm/civicrm-core/pull/27152))** -- **Fix undeclared properties in crufty old report ([27220](https://github.com/civicrm/civicrm-core/pull/27220))** +- **Windows fix for CRM_Utils_File::isChildPath + ([27102](https://github.com/civicrm/civicrm-core/pull/27102))** -- **Remove decade-only typo ([27219](https://github.com/civicrm/civicrm-core/pull/27219))** +- **Fix Standalone error handler: remove 5th argument + ([27099](https://github.com/civicrm/civicrm-core/pull/27099))** -- **Add weight to a few more links ([27216](https://github.com/civicrm/civicrm-core/pull/27216))** +- **Fatal error fixes in PHP 8.1 + ([27077](https://github.com/civicrm/civicrm-core/pull/27077))** -- **Remove some copy & paste code ([27214](https://github.com/civicrm/civicrm-core/pull/27214))** +- **Path fixes + ([27026](https://github.com/civicrm/civicrm-core/pull/27026))** -- **Remove Html2text security check, package deleted ([27218](https://github.com/civicrm/civicrm-core/pull/27218))** +- **Fix warning caused by passing null to strpos + ([300](https://github.com/civicrm/civicrm-wordpress/pull/300))** -- **Be able to remove clients from a case from the manage case view ([27200](https://github.com/civicrm/civicrm-core/pull/27200))** +- **kcfinder - Fix PHP 8.1 warnings from fastImage + ([368](https://github.com/civicrm/civicrm-packages/pull/368))** -- **Replace another badly named undeclared property ([27215](https://github.com/civicrm/civicrm-core/pull/27215))** +- **kcfinder - Fix cookies when running on alt HTTP port + ([367](https://github.com/civicrm/civicrm-packages/pull/367))** -- **Afform - make summary tab names less weird ([27196](https://github.com/civicrm/civicrm-core/pull/27196))** +- **Smarty - Fix e-notice in modifier.escape.php + ([366](https://github.com/civicrm/civicrm-packages/pull/366))** -- **Move no-longer-shared function back to it's form ([27213](https://github.com/civicrm/civicrm-core/pull/27213))** +- **Enotice fix ([27002](https://github.com/civicrm/civicrm-core/pull/27002))** -- **Fix notices, php errors on event location tab ([27212](https://github.com/civicrm/civicrm-core/pull/27212))** +- **E-notice fix ([27001](https://github.com/civicrm/civicrm-core/pull/27001))** -- **fix sort groups on PHP8 ([27210](https://github.com/civicrm/civicrm-core/pull/27210))** +- **E-notice fix, don't skip loading NULL fields + ([27048](https://github.com/civicrm/civicrm-core/pull/27048))** -- **ContactSummary - Fix smarty notices in communication preferences section ([27209](https://github.com/civicrm/civicrm-core/pull/27209))** +- **Fix missing weights on Custom data screen (notices) + ([27428](https://github.com/civicrm/civicrm-core/pull/27428))** -- **Remove old tests that only test test functions ([27208](https://github.com/civicrm/civicrm-core/pull/27208))** +- **Add weights on profile links (remove notices) + ([27432](https://github.com/civicrm/civicrm-core/pull/27432))** -- **Update SMS cannot send message to specify that a mobile phone number is required ([27194](https://github.com/civicrm/civicrm-core/pull/27194))** +- **Fix mistake in just-merged email processor code + ([27408](https://github.com/civicrm/civicrm-core/pull/27408))** -- **Simplify test ([27205](https://github.com/civicrm/civicrm-core/pull/27205))** +- **Fix undeclared properties in crufty old report + ([27220](https://github.com/civicrm/civicrm-core/pull/27220))** -- **Move smarty assign to be always assigned (notices) ([27207](https://github.com/civicrm/civicrm-core/pull/27207))** +- **ajax.js - Fix undeclared variable + ([27269](https://github.com/civicrm/civicrm-core/pull/27269))** -- **Remove never called testCleanUp function ([27206](https://github.com/civicrm/civicrm-core/pull/27206))** +- **Move smarty assign to be always assigned (notices) + ([27207](https://github.com/civicrm/civicrm-core/pull/27207))** -- **Improve initialization crash message ([27138](https://github.com/civicrm/civicrm-core/pull/27138))** +- **Fix undeclared property - use locally scoped variable + ([27090](https://github.com/civicrm/civicrm-core/pull/27090))** -- **dev/core#4541 Fix membership leap year bug that causes test failure ([27198](https://github.com/civicrm/civicrm-core/pull/27198))** +- **Smarty-notice fix - use array_key_exists + ([27117](https://github.com/civicrm/civicrm-core/pull/27117))** -- **[REF] Remove unreachable handling ([27192](https://github.com/civicrm/civicrm-core/pull/27192))** +- **PHP 8.x fatal fix + bonus smarty consistency + ([27091](https://github.com/civicrm/civicrm-core/pull/27091))** -- **Remove always-true empty check ([27193](https://github.com/civicrm/civicrm-core/pull/27193))** +### CiviCampaign -- **APIv4 - Proper ACLs for relationship entity ([27183](https://github.com/civicrm/civicrm-core/pull/27183))** +- **avoid double clicks on petition page + ([27251](https://github.com/civicrm/civicrm-core/pull/27251))** -- **CRM_Core_Form - Remove unused protected properties ([27191](https://github.com/civicrm/civicrm-core/pull/27191))** +### CiviCase -- **Flush Redis `prevnext` cache when clearing `civicrm_cache` ([27113](https://github.com/civicrm/civicrm-core/pull/27113))** +- **Set link weight on manage case + ([27327](https://github.com/civicrm/civicrm-core/pull/27327))** -- **[REF] Add pseudoconstant suffixes to xml/dao ([27172](https://github.com/civicrm/civicrm-core/pull/27172))** +- **Cannot add case type in multilingual installation with MariaDB 10.2 strict + mode ([dev/core#2581](https://lab.civicrm.org/dev/core/-/issues/2581): + [27226](https://github.com/civicrm/civicrm-core/pull/27226))** -- **[REF] 🏌️ CRM_Utils_Array cleanup ([27187](https://github.com/civicrm/civicrm-core/pull/27187))** +### CiviContribute -- **[NFC] Test - Add return type hints to test functions ([27186](https://github.com/civicrm/civicrm-core/pull/27186))** +- **Add contribution page tokens to contribution tokens + ([27201](https://github.com/civicrm/civicrm-core/pull/27201))** -- **Fix Domain Organization form for notices & php8 compliance ([27190](https://github.com/civicrm/civicrm-core/pull/27190))** + Adds contribution page tokens to contribution tokens. -- **Fix notices on domain.tpl by just adding what we need ([27189](https://github.com/civicrm/civicrm-core/pull/27189))** +- **Fix Financial Items incorrectly recorded when using Payment API + ([26987](https://github.com/civicrm/civicrm-core/pull/26987))** -- **Distmaker: add CiviCRM Standalone support ([27104](https://github.com/civicrm/civicrm-core/pull/27104))** +- **Contribution pages with extra URL parameters lead to incorrect AJAX URL + constructed in buildPaymentBlock – users cannot proceed to pay + ([dev/core#4487](https://lab.civicrm.org/dev/core/-/issues/4487): + [27037](https://github.com/civicrm/civicrm-core/pull/27037))** -- **APIv3 Explorer - Delete unused code ([27181](https://github.com/civicrm/civicrm-core/pull/27181))** +- **Ensure tax_amount is not null + ([26993](https://github.com/civicrm/civicrm-core/pull/26993))** -- **API - Soft-deprecate civicrm_api() wrapper ([27180](https://github.com/civicrm/civicrm-core/pull/27180))** +- **Fix permission check on Contribution form, clarify underlying functions + ([27013](https://github.com/civicrm/civicrm-core/pull/27013))** -- **E-notice fix - switch order of and params check around ([27188](https://github.com/civicrm/civicrm-core/pull/27188))** +- **Fix PHP 8.0 implode on ContributionBase + ([27053](https://github.com/civicrm/civicrm-core/pull/27053))** -- **[REF] Improve cron job handling when there is an invalid report insta… ([27185](https://github.com/civicrm/civicrm-core/pull/27185))** +- **Show Contribution Page receipt text in offline contribution receipt + ([27173](https://github.com/civicrm/civicrm-core/pull/27173))** -- **[REF] Fix infinite loop when trying to load a report instance with an… ([27184](https://github.com/civicrm/civicrm-core/pull/27184))** +- **Fix Contribution_Tab links to have weight, improve test + ([27227](https://github.com/civicrm/civicrm-core/pull/27227))** -- **5.65 ([27182](https://github.com/civicrm/civicrm-core/pull/27182))** +### CiviEvent -- **PhpStorm - Add a corybantic avalanche of type-hints ([27179](https://github.com/civicrm/civicrm-core/pull/27179))** +- **Registering a participant with Pending event payment gives misleading + information. ([dev/core#3410](https://lab.civicrm.org/dev/core/-/issues/3410): + [27288](https://github.com/civicrm/civicrm-core/pull/27288))** -- **Add test & fix for getOptions on options with a domain id ([27161](https://github.com/civicrm/civicrm-core/pull/27161))** + Show 0 rather than nothing when paid amount is zero -- **SearchKit - Use Contact.sort_name instead of display_name for searches and Autocompletes ([27112](https://github.com/civicrm/civicrm-core/pull/27112))** +- **Event Dashboard: show events that have not ended yet + ([27329](https://github.com/civicrm/civicrm-core/pull/27329))** -- **phpstorm - Multiple updates ([27175](https://github.com/civicrm/civicrm-core/pull/27175))** + Ensure events that span more than 7 days don't disappear from the Event + Dashboard before the event ends. -- **[REF] APIv4 - Simplify entity name gathering ([27177](https://github.com/civicrm/civicrm-core/pull/27177))** +- **Crash when saving repeating event + ([dev/core#4550](https://lab.civicrm.org/dev/core/-/issues/4550): + [27315](https://github.com/civicrm/civicrm-core/pull/27315))** -- **PHPStorm - Add static metadata file ([27178](https://github.com/civicrm/civicrm-core/pull/27178))** +- **Replace Event Total with Total Amount on confirm/thankyou pages + ([dev/core#4485](https://lab.civicrm.org/dev/core/-/issues/4485): + [27024](https://github.com/civicrm/civicrm-core/pull/27024))** -- **Test Cleanup - Refactor out uses of deprecated `callAPIAndDocument()` ([27176](https://github.com/civicrm/civicrm-core/pull/27176))** +- **View and Edit links for event participants are inconsistent and in some + cases do not allow editing + ([dev/core/#3361](https://lab.civicrm.org/dev/core/-/issues/3361): + [24657](https://github.com/civicrm/civicrm-core/pull/24657))** -- **Remove some unused parameters in test class ([27166](https://github.com/civicrm/civicrm-core/pull/27166))** +- **Fix variable leakage in online event receipt + ([27443](https://github.com/civicrm/civicrm-core/pull/27443))** -- **APIv3 - Delete api examples ([27174](https://github.com/civicrm/civicrm-core/pull/27174))** +- **Fix notice on unpaid event + ([27367](https://github.com/civicrm/civicrm-core/pull/27367))** -- **(dev/core#4536) Fix 'Primary Membership' filter options in Membership… ([27169](https://github.com/civicrm/civicrm-core/pull/27169))** +- **Fix incorrect event receipt regression + ([27159](https://github.com/civicrm/civicrm-core/pull/27159))** -- **Add "phpstorm" extension ([27168](https://github.com/civicrm/civicrm-core/pull/27168))** +- **Fix Manage Events breadcrumb regression + ([27095](https://github.com/civicrm/civicrm-core/pull/27095))** -- **Fix deprecation notice on ExecuteJob screen ([27157](https://github.com/civicrm/civicrm-core/pull/27157))** +- **Manage event - fix too many brackets + ([27061](https://github.com/civicrm/civicrm-core/pull/27061))** -- **Notice fix - schedule reminders ([27154](https://github.com/civicrm/civicrm-core/pull/27154))** +- **Fix event templates to use end_date token + ([27005](https://github.com/civicrm/civicrm-core/pull/27005))** -- **Remove broken deprecated function ([27163](https://github.com/civicrm/civicrm-core/pull/27163))** +- **Ensure event ID is an integer + ([27363](https://github.com/civicrm/civicrm-core/pull/27363))** -- **Also add event confirm text as default receipt_text for edit Participant ([27160](https://github.com/civicrm/civicrm-core/pull/27160))** +- **Also add event confirm text as default receipt_text for edit Participant + ([27160](https://github.com/civicrm/civicrm-core/pull/27160))** -- **Fix PHP8.1 repeated notice errors in Table.tpl ([27137](https://github.com/civicrm/civicrm-core/pull/27137))** +- **Online Event Receipt - Remove deprecated backticks ([27671](https://github.com/civicrm/civicrm-core/pull/27671))** -- **[REF] Fix Notice Errors on ACL listing page by assigning fields consi… ([27164](https://github.com/civicrm/civicrm-core/pull/27164))** +### CiviMail -- **Undefined property fix ([27148](https://github.com/civicrm/civicrm-core/pull/27148))** +- **Scheduled Job, fetch_bounces with is_create_activities=1 parameter creates + a new Contact using the Return-path email address which is incorrect + (Work towards [dev/core#2800](https://lab.civicrm.org/dev/core/-/issues/2800): + [27356](https://github.com/civicrm/civicrm-core/pull/27356))** -- **Add api-v4 discount api ([27122](https://github.com/civicrm/civicrm-core/pull/27122))** + Fixes bounce processing to handle verp emails. -- **Notice fix on contact types browse ([27153](https://github.com/civicrm/civicrm-core/pull/27153))** +- **Wording changes in the Unsubscribe form + ([27022](https://github.com/civicrm/civicrm-core/pull/27022))** -- **Fix e-notice by removing conditionality ([27152](https://github.com/civicrm/civicrm-core/pull/27152))** +- **"New Mailing" - Unsubscribe field doesn't appear ([27626](https://github.com/civicrm/civicrm-core/pull/27626))** -- **Fold private function back into calling function ([27145](https://github.com/civicrm/civicrm-core/pull/27145))** +- **Finish CiviCRM 2.1 deprecation - old-style VERP + ([27318](https://github.com/civicrm/civicrm-core/pull/27318))** -- **5.65 ([27142](https://github.com/civicrm/civicrm-core/pull/27142))** +### CiviMember -- **Standalone: Fix ACL help/links, tweak Users and Permissions menu ([27119](https://github.com/civicrm/civicrm-core/pull/27119))** +- **Report improvements (Work towards + [dev/core#4536](https://lab.civicrm.org/dev/core/-/issues/4536): + [27169](https://github.com/civicrm/civicrm-core/pull/27169))** -- **phpunit.xml.dist - Update extensions to use phpunit9 format ([27133](https://github.com/civicrm/civicrm-core/pull/27133))** + Fixes the 'Primary Membership' filter options in the Membership Details report + template. -- **Replace deprecated RegExp PHPUnit functions for v9 ([27139](https://github.com/civicrm/civicrm-core/pull/27139))** +- **Membership renewal on Feb 29 of a leap year is calculated incorrectly + ([dev/core#4541](https://lab.civicrm.org/dev/core/-/issues/4541): + [27198](https://github.com/civicrm/civicrm-core/pull/27198))** -- **REF - Simplify inline conditionals with Elvis ([27141](https://github.com/civicrm/civicrm-core/pull/27141))** +- **Add weights to membership type links + ([27231](https://github.com/civicrm/civicrm-core/pull/27231))** -- **ScheduledJob - Clean up form code & improve validation ([26879](https://github.com/civicrm/civicrm-core/pull/26879))** +### Backdrop Integration -- **(dev/core#4532) Add sort for country/state fields in reports ([27135](https://github.com/civicrm/civicrm-core/pull/27135))** +- **Global $language should be an object, not a string + ([dev/backdrop#80](https://lab.civicrm.org/dev/backdrop/-/issues/80): + [27038](https://github.com/civicrm/civicrm-core/pull/27038))** -- **5.65 ([27131](https://github.com/civicrm/civicrm-core/pull/27131))** +### Drupal Integration -- **dev/core#4501 Redis - fix ttl on prev-next cache ([27115](https://github.com/civicrm/civicrm-core/pull/27115))** +- **phpunit.xml.dist - Fix compatibility with phpunit9 + ([670](https://github.com/civicrm/civicrm-drupal/pull/670))** -- **Afform - Fix broken prefill functionality ([27121](https://github.com/civicrm/civicrm-core/pull/27121))** +### WordPress Integration -- **[REF] PCP - Update BAO to use writeRecord/deleteRecord ([27127](https://github.com/civicrm/civicrm-core/pull/27127))** +- **E2E_Core_PathUrlTest::testGetUrl_WpAdmin() fails because CiviCRM routing is + confusing (Work towards + [dev/core#4433](https://lab.civicrm.org/dev/core/-/issues/4433): + [26861](https://github.com/civicrm/civicrm-core/pull/26861))** -- **Builds on #27049 to extract getPriceSetID() ([27050](https://github.com/civicrm/civicrm-core/pull/27050))** +- **Plugin compatibility architecture and loss of locale on "Secondary URLs" + when using Polylang + ([dev/wordpress#143](https://lab.civicrm.org/dev/wordpress/-/issues/143): + [27128](https://github.com/civicrm/civicrm-core/pull/27128) and + [301](https://github.com/civicrm/civicrm-wordpress/pull/301))** -- **5.65 ([27124](https://github.com/civicrm/civicrm-core/pull/27124))** +## Miscellany -- **dev/core#2640 - hide latitude and longitude in address display by default ([27100](https://github.com/civicrm/civicrm-core/pull/27100))** +- **phpunit.xml.dist - Update extensions to use phpunit9 format + ([27133](https://github.com/civicrm/civicrm-core/pull/27133))** -- **Schema - Improve pseudoconstant metadata for `prefetch` and `controlField` ([27054](https://github.com/civicrm/civicrm-core/pull/27054))** +- **APIv3 - Delete API examples + ([27174](https://github.com/civicrm/civicrm-core/pull/27174))** -- **Smarty-notice fix - use array_key_exists ([27117](https://github.com/civicrm/civicrm-core/pull/27117))** +- **EntityLookupTrait - Add isDefined and getDefinition methods + ([27275](https://github.com/civicrm/civicrm-core/pull/27275))** -- **php8.x fatal fix + bonus smarty consistency ([27091](https://github.com/civicrm/civicrm-core/pull/27091))** +- **API - Soft-deprecate civicrm_api() wrapper + ([27180](https://github.com/civicrm/civicrm-core/pull/27180))** -- **Bump search_autocomplete_count default from 10 to 15 ([27116](https://github.com/civicrm/civicrm-core/pull/27116))** +- **APIv3 Explorer - Delete unused code + ([27181](https://github.com/civicrm/civicrm-core/pull/27181))** -- **Use tokens for participant.register_date ([27017](https://github.com/civicrm/civicrm-core/pull/27017))** +- **Pass in function values, rather than handling by form-name + ([27092](https://github.com/civicrm/civicrm-core/pull/27092))** -- **add Note as an afformEntity ([27110](https://github.com/civicrm/civicrm-core/pull/27110))** +- **Use new lookup trait to eliminate use of undefined properties + `userDisplayName` + ([27259](https://github.com/civicrm/civicrm-core/pull/27259))** -- **APIv4 Explorer - Keep list of suffixes in-sync ([27109](https://github.com/civicrm/civicrm-core/pull/27109))** -- **Afform - Enhance returned values from AfformSubmission.afform_name options ([27108](https://github.com/civicrm/civicrm-core/pull/27108))** +- **Joomla - Add placeholder to fix errors related to deleted file ([27591](https://github.com/civicrm/civicrm-core/pull/27591))** -- **Set weight on Note Form ([27106](https://github.com/civicrm/civicrm-core/pull/27106))** +- **Upgrader - Add breadcrumb guard ([27518](https://github.com/civicrm/civicrm-core/pull/27518))** -- **Make import parser external ID error message more helpful ([27103](https://github.com/civicrm/civicrm-core/pull/27103))** +- **Upgrader - Add multilingual schema updates ([27446](https://github.com/civicrm/civicrm-core/pull/27446))** -- **windows fix for CRM_Utils_File::isChildPath ([27102](https://github.com/civicrm/civicrm-core/pull/27102))** +- **CiviCampaign - Refactor civicrm_survey.recontact_interval + ([27268](https://github.com/civicrm/civicrm-core/pull/27268))** -- **dev/core#4509 Fix link conditionals when using current_domain for dom… ([27093](https://github.com/civicrm/civicrm-core/pull/27093))** +- **Move regex processing in EmailProcessor to handling class + ([27337](https://github.com/civicrm/civicrm-core/pull/27337))** -- **ActionScheduleTest - Update for compatibility with PHPUnit 9 ([27101](https://github.com/civicrm/civicrm-core/pull/27101))** +- **Bump recommended PHP version to 8.1, min recommendation to 8.0 + ([26985](https://github.com/civicrm/civicrm-core/pull/26985))** -- **Fix Standalone error handler: remove 5th argument ([27099](https://github.com/civicrm/civicrm-core/pull/27099))** +- **Add code comments re the cleanup I didn't do + ([27451](https://github.com/civicrm/civicrm-core/pull/27451))** -- **[NFC] Add some email processor hooks tests ([27097](https://github.com/civicrm/civicrm-core/pull/27097))** +- **Fold deprecated function back into the caller + ([27345](https://github.com/civicrm/civicrm-core/pull/27345))** -- **Allow for configuration of activity contacts, type and campaign for email-to-activity ([26905](https://github.com/civicrm/civicrm-core/pull/26905))** +- **Replace another badly named undeclared property + ([27215](https://github.com/civicrm/civicrm-core/pull/27215))** -- **Remove unusable assigns (copy & paste I believe) ([26952](https://github.com/civicrm/civicrm-core/pull/26952))** +- **Move no-longer-shared function back to it's form + ([27213](https://github.com/civicrm/civicrm-core/pull/27213))** -- **Fix Manage Events breadcrumb regression ([27095](https://github.com/civicrm/civicrm-core/pull/27095))** +- **Fold private function back into calling function + ([27145](https://github.com/civicrm/civicrm-core/pull/27145))** -- **Add custom data when creating smart group ([23312](https://github.com/civicrm/civicrm-core/pull/23312))** +- **Further fix forms to full form flow + ([27256](https://github.com/civicrm/civicrm-core/pull/27256))** -- **dev/core#4425 Override currentPath for Standalone ([27040](https://github.com/civicrm/civicrm-core/pull/27040))** +- **Move form specific code to relevant form (rather than access + mostly-undeclared property) + ([27069](https://github.com/civicrm/civicrm-core/pull/27069))** -- **Afform - Enable creating event from a template ([27058](https://github.com/civicrm/civicrm-core/pull/27058))** +- **Extract `getDiscountID()` + ([27049](https://github.com/civicrm/civicrm-core/pull/27049) and + [27050](https://github.com/civicrm/civicrm-core/pull/27050))** -- **standalone: add error handler ([26965](https://github.com/civicrm/civicrm-core/pull/26965))** +- **ScheduledReminders - Rewrite entire form using metadata + ([27003](https://github.com/civicrm/civicrm-core/pull/27003))** -- **Fix #4467 - Import caching issue ([27076](https://github.com/civicrm/civicrm-core/pull/27076))** +- **Move form-specific check to form + ([27068](https://github.com/civicrm/civicrm-core/pull/27068))** -- **Pass in function values, rather than handling by form-name ([27092](https://github.com/civicrm/civicrm-core/pull/27092))** +- **Simplify queries of NOT NULL fields + ([27008](https://github.com/civicrm/civicrm-core/pull/27008))** -- **Move form specific code to relevant form (rather than access mostly-undeclared property) ([27069](https://github.com/civicrm/civicrm-core/pull/27069))** +- **Clarify doc-block for form variable + ([27051](https://github.com/civicrm/civicrm-core/pull/27051))** -- **fatal error fixes in PHP 8.1 ([27077](https://github.com/civicrm/civicrm-core/pull/27077))** +- **Separate getStatusMessage function + ([27015](https://github.com/civicrm/civicrm-core/pull/27015))** -- **5.65 ([27082](https://github.com/civicrm/civicrm-core/pull/27082))** +- **Added details for sebalis in contributor-key.xml + ([27039](https://github.com/civicrm/civicrm-core/pull/27039))** -- **Fix undeclared property - use locally scoped variable ([27090](https://github.com/civicrm/civicrm-core/pull/27090))** +- **Move function to only form that calls it + ([27299](https://github.com/civicrm/civicrm-core/pull/27299))** -- **Remove use of sometimes-php8-warning causing `_quickConfig` property…(use `isQuickConfig()` function) ([27070](https://github.com/civicrm/civicrm-core/pull/27070))** +- **Unconditionally assign smarty variable + ([27300](https://github.com/civicrm/civicrm-core/pull/27300))** -- **Extract `getDiscountID()` ([27049](https://github.com/civicrm/civicrm-core/pull/27049))** +- **Unconditionally assign smarty-var, remove unused variables + ([26051](https://github.com/civicrm/civicrm-core/pull/26051))** -- **ScheduledReminders - Rewrite entire form using metadata ([27003](https://github.com/civicrm/civicrm-core/pull/27003))** +- **Make function private, after universe search in EmailProcessor + ([27309](https://github.com/civicrm/civicrm-core/pull/27309))** -- **Concurrency Tests - Update ExternalBatch for symfony/proces v4.1+ (esp Drupal 10) ([27072](https://github.com/civicrm/civicrm-core/pull/27072))** +- **Make function private to reflect usage + ([27308](https://github.com/civicrm/civicrm-core/pull/27308))** -- **5.65 ([27074](https://github.com/civicrm/civicrm-core/pull/27074))** +- **Declare CRM_Core_Exception in cleanDir, add type hints + ([27306](https://github.com/civicrm/civicrm-core/pull/27306))** -- **Fix permission check on Contribution form, clarify underlying functions ([27013](https://github.com/civicrm/civicrm-core/pull/27013))** +- **Make splitjob function static & private, Remove a couple of unused variables + ([27304](https://github.com/civicrm/civicrm-core/pull/27304))** -- **Move form-specific check to form ([27068](https://github.com/civicrm/civicrm-core/pull/27068))** +- **Do the todo (move the function to the trait as suggested + ([27063](https://github.com/civicrm/civicrm-core/pull/27063))** -- **Test fix, towards full form flow ([27067](https://github.com/civicrm/civicrm-core/pull/27067))** +- **Api4 - Remove unused key from getFields + ([27060](https://github.com/civicrm/civicrm-core/pull/27060))** -- **Api4 - Remove unused key from getFields ([27060](https://github.com/civicrm/civicrm-core/pull/27060))** +- **CRM_Core_Form - Remove unused protected properties + ([27191](https://github.com/civicrm/civicrm-core/pull/27191))** -- **Do the todo (move the function to the trait as suggested ([27063](https://github.com/civicrm/civicrm-core/pull/27063))** +- **Remove isset from Arb.xml + ([27224](https://github.com/civicrm/civicrm-core/pull/27224))** -- **[REF] SearchKit - Cleanup upgrade code ([27042](https://github.com/civicrm/civicrm-core/pull/27042))** +- **Remove some copy & paste code + ([27214](https://github.com/civicrm/civicrm-core/pull/27214))** -- **Remove line that gives error & does nothing ([27064](https://github.com/civicrm/civicrm-core/pull/27064))** +- **Remove Html2text security check, package deleted + ([27218](https://github.com/civicrm/civicrm-core/pull/27218))** -- **Simplify queries of NOT NULL fields ([27008](https://github.com/civicrm/civicrm-core/pull/27008))** +- **Remove decade-only typo + ([27219](https://github.com/civicrm/civicrm-core/pull/27219))** -- **Manage event - fix too many brackets ([27061](https://github.com/civicrm/civicrm-core/pull/27061))** +- **Remove some unnecessary variables & pass by ref + ([27273](https://github.com/civicrm/civicrm-core/pull/27273))** -- **5.65 ([27062](https://github.com/civicrm/civicrm-core/pull/27062))** +- **Remove unused profiles from offline event receipts + ([27150](https://github.com/civicrm/civicrm-core/pull/27150))** -- **Fix event templates to use end_date token ([27005](https://github.com/civicrm/civicrm-core/pull/27005))** +- **Remove unused CONST + ([27301](https://github.com/civicrm/civicrm-core/pull/27301))** -- **dev/core#4094 Use statusBounce instead of redirect when cannot delete custom group ([27056](https://github.com/civicrm/civicrm-core/pull/27056))** +- **Remove always-true empty check + ([27193](https://github.com/civicrm/civicrm-core/pull/27193))** -- **(REF) civicrm_data.tpl - Stop using Smarty's {php} ([27052](https://github.com/civicrm/civicrm-core/pull/27052))** +- **Remove unusable assigns (copy & paste I believe) + ([26952](https://github.com/civicrm/civicrm-core/pull/26952))** -- **(NFC) Test class - Fix inconsistent namespace ([27055](https://github.com/civicrm/civicrm-core/pull/27055))** +- **Remove broken deprecated function + ([27163](https://github.com/civicrm/civicrm-core/pull/27163))** -- **Unit tests - replace deprecated function with newer one ([27032](https://github.com/civicrm/civicrm-core/pull/27032))** +- **Remove use of sometimes-php8-warning causing `_quickConfig` property… (use + `isQuickConfig()` function) + ([27070](https://github.com/civicrm/civicrm-core/pull/27070))** -- **Fix PHP 8.0 implode on ContributionBase ([27053](https://github.com/civicrm/civicrm-core/pull/27053))** +- **Remove line that gives error & does nothing + ([27064](https://github.com/civicrm/civicrm-core/pull/27064))** -- **(dev/core#4232) Afform submission schema changes ([27041](https://github.com/civicrm/civicrm-core/pull/27041))** +- **Remove long-broken function + ([27317](https://github.com/civicrm/civicrm-core/pull/27317))** -- **Clarify doc-block for form variable ([27051](https://github.com/civicrm/civicrm-core/pull/27051))** +- **Remove unused variable + ([27350](https://github.com/civicrm/civicrm-core/pull/27350))** -- **Remove do-nothing code. ([27047](https://github.com/civicrm/civicrm-core/pull/27047))** +- **Remove unused parameter, pass by reference in private function with one + caller ([27320](https://github.com/civicrm/civicrm-core/pull/27320))** -- **Show which extension has a parse error in info.xml ([27028](https://github.com/civicrm/civicrm-core/pull/27028))** +- **Remove some unused undefined properties from participant export + ([27298](https://github.com/civicrm/civicrm-core/pull/27298))** -- **Issue dev/backdrop#80: global $language should be an object. ([27038](https://github.com/civicrm/civicrm-core/pull/27038))** +- **Remove unneeded descriptions and clean up on search forms + ([26292](https://github.com/civicrm/civicrm-core/pull/26292))** -- **E-notice fix, don't skip loading NULL fields ([27048](https://github.com/civicrm/civicrm-core/pull/27048))** +- **Remove do-nothing code. + ([27047](https://github.com/civicrm/civicrm-core/pull/27047))** -- **5.65 ([27045](https://github.com/civicrm/civicrm-core/pull/27045))** +- **Remove excessive data handling & some unused variables + ([27019](https://github.com/civicrm/civicrm-core/pull/27019))** -- **added details for sebalis in contributor-key.xml ([27039](https://github.com/civicrm/civicrm-core/pull/27039))** +- **Remove unused parse function for Incoming Mail + ([27011](https://github.com/civicrm/civicrm-core/pull/27011))** -- **dev/core#4487 Alternative option: Fix paymentBlock url concat ([27037](https://github.com/civicrm/civicrm-core/pull/27037))** +- **Remove unreachable page + ([27305](https://github.com/civicrm/civicrm-core/pull/27305))** -- **(dev/core#4485) Replace Event Total by Total Amount ([27024](https://github.com/civicrm/civicrm-core/pull/27024))** +- **Remove, extraneous: punctuation? + ([27297](https://github.com/civicrm/civicrm-core/pull/27297))** -- **Use phpunit when running on php 7.3+ ([27036](https://github.com/civicrm/civicrm-core/pull/27036))** +- **Delete html2text, not in use + ([370](https://github.com/civicrm/civicrm-packages/pull/370))** -- **E:: to make it look after the extension's translation ([27027](https://github.com/civicrm/civicrm-core/pull/27027))** +- **[REF] SearchKit - Cleanup upgrade code + ([27042](https://github.com/civicrm/civicrm-core/pull/27042))** -- **Path fixes ([27026](https://github.com/civicrm/civicrm-core/pull/27026))** +- **(REF) civicrm_data.tpl - Stop using Smarty's {php} + ([27052](https://github.com/civicrm/civicrm-core/pull/27052))** -- **Re-enable any queues that were disabled for background processing, on end ([27023](https://github.com/civicrm/civicrm-core/pull/27023))** +- **[REF] APIv4 - Simplify entity name gathering + ([27177](https://github.com/civicrm/civicrm-core/pull/27177))** -- **Remove unneeded descriptions and clean up on search forms ([26292](https://github.com/civicrm/civicrm-core/pull/26292))** +- **[REF] Remove unreachable handling + ([27192](https://github.com/civicrm/civicrm-core/pull/27192))** -- **Wording changes in the Unsubscribe form ([27022](https://github.com/civicrm/civicrm-core/pull/27022))** +- **[REF] - Cleanup managed entities to all go through `hook_civicrm_managed` + and deprecate unnamed entities + ([27254](https://github.com/civicrm/civicrm-core/pull/27254))** -- **Separate getStatusMessage function ([27015](https://github.com/civicrm/civicrm-core/pull/27015))** +- **[REF] Convert from session status to deprecation warning + ([27255](https://github.com/civicrm/civicrm-core/pull/27255))** -- **5.65 to master ([27021](https://github.com/civicrm/civicrm-core/pull/27021))** +- **[REF] Fix Notice Errors on ACL listing page by assigning fields consistently + ([27164](https://github.com/civicrm/civicrm-core/pull/27164))** -- **Remove excessive data handling & some unused variables ([27019](https://github.com/civicrm/civicrm-core/pull/27019))** +- **[REF] Update Zetacomponents/mail to be 1.9.5 to fix email validation + handling ([27344](https://github.com/civicrm/civicrm-core/pull/27344))** -- **5.65 ([27020](https://github.com/civicrm/civicrm-core/pull/27020))** +- **Revert "[REF] Update Zetacomponents/mail to be 1.9.5 to fix email validation + handling" ([27394](https://github.com/civicrm/civicrm-core/pull/27394))** -- **Update a couple more tpl variables to tokens ([27004](https://github.com/civicrm/civicrm-core/pull/27004))** +- **REF - Simplify inline conditionals with Elvis + ([27141](https://github.com/civicrm/civicrm-core/pull/27141))** -- **5.65 to master ([27014](https://github.com/civicrm/civicrm-core/pull/27014))** +- **[REF] Ensure that any NULL values in the title field are fixed prior to + changing the column + ([27368](https://github.com/civicrm/civicrm-core/pull/27368))** -- **Remove unused parse function for Incoming Mail ([27011](https://github.com/civicrm/civicrm-core/pull/27011))** +- **[REF] Improve cron job handling when there is an invalid report instance id + passed to mail_report job + ([27185](https://github.com/civicrm/civicrm-core/pull/27185))** -- **5.65 ([27009](https://github.com/civicrm/civicrm-core/pull/27009))** +- **[REF] Fix infinite loop when trying to load a report instance with an id + that does not exist + ([27184](https://github.com/civicrm/civicrm-core/pull/27184))** -- **Enotice fix ([27002](https://github.com/civicrm/civicrm-core/pull/27002))** +- **[REF] PCP - Update BAO to use writeRecord/deleteRecord + ([27127](https://github.com/civicrm/civicrm-core/pull/27127))** -- **E-notice fix ([27001](https://github.com/civicrm/civicrm-core/pull/27001))** +- **[REF] Add pseudoconstant suffixes to xml/dao + ([27172](https://github.com/civicrm/civicrm-core/pull/27172))** -- **Bump recommended PHP version to 8.1, min recommendation to 8.0 ([26985](https://github.com/civicrm/civicrm-core/pull/26985))** +- **[REF] 🏌️ CRM_Utils_Array cleanup + ([27187](https://github.com/civicrm/civicrm-core/pull/27187))** -- **dev/core/#3361 Add Change Selections button when viewing price set registrations with no contribution associated ([24657](https://github.com/civicrm/civicrm-core/pull/24657))** +- **[NFC] Be more confident and informative in the comment for + CRM_Core_Session::set() + ([27313](https://github.com/civicrm/civicrm-core/pull/27313))** -- **phpunit.xml.dist - Fix compatibility with phpunit9 ([670](https://github.com/civicrm/civicrm-drupal/pull/670))** +- **[NFC] Test - Add return type hints to test functions + ([27186](https://github.com/civicrm/civicrm-core/pull/27186))** -- **Compatibility framework including URL support for Polylang ([301](https://github.com/civicrm/civicrm-wordpress/pull/301))** +- **(NFC) Test class - Fix inconsistent namespace + ([27055](https://github.com/civicrm/civicrm-core/pull/27055))** -- **Fix warning caused by passing null to strpos ([300](https://github.com/civicrm/civicrm-wordpress/pull/300))** +- **[NFC] Add some email processor hooks tests + ([27097](https://github.com/civicrm/civicrm-core/pull/27097))** -- **5.65 ([371](https://github.com/civicrm/civicrm-packages/pull/371))** +- **(NFC) Fix random test failures ([27574](https://github.com/civicrm/civicrm-core/pull/27574))** -- **Delete html2text, not in use ([370](https://github.com/civicrm/civicrm-packages/pull/370))** +- **(NFC) Fix test failure on PHP 7.3 ([27714](https://github.com/civicrm/civicrm-core/pull/27714))** -- **kcfinder - Fix PHP 8.1 warnings from fastImage ([368](https://github.com/civicrm/civicrm-packages/pull/368))** +- **Update ca-config for better PHP 8.2 support ([27550](https://github.com/civicrm/civicrm-core/pull/27550))** -- **kcfinder - Fix cookies when running on alt HTTP port ([367](https://github.com/civicrm/civicrm-packages/pull/367))** +- **Add missing weights for `hook_civicrm_links` ([27528](https://github.com/civicrm/civicrm-core/pull/27528), [27544](https://github.com/civicrm/civicrm-core/pull/27544), [27566](https://github.com/civicrm/civicrm-core/pull/27566), [27710](https://github.com/civicrm/civicrm-core/pull/27710))** -- **Smarty - Fix e-notice in modifier.escape.php ([366](https://github.com/civicrm/civicrm-packages/pull/366))** +- **Remove old tests that only test test functions + ([27208](https://github.com/civicrm/civicrm-core/pull/27208))** -## Miscellany +- **Concurrency Tests - Update ExternalBatch for symfony/proces v4.1+ (esp + Drupal 10) ([27072](https://github.com/civicrm/civicrm-core/pull/27072))** + +- **Simplify test + ([27205](https://github.com/civicrm/civicrm-core/pull/27205))** + +- **Test fix, towards full form flow + ([27067](https://github.com/civicrm/civicrm-core/pull/27067))** + +- **Remove never called testCleanUp function + ([27206](https://github.com/civicrm/civicrm-core/pull/27206))** + +- **Add test & fix for getOptions on options with a domain id + ([27161](https://github.com/civicrm/civicrm-core/pull/27161))** + +- **Test Cleanup - Refactor out uses of deprecated `callAPIAndDocument()` + ([27176](https://github.com/civicrm/civicrm-core/pull/27176))** + +- **Remove some unused parameters in test class + ([27166](https://github.com/civicrm/civicrm-core/pull/27166))** + +- **ActionScheduleTest - Update for compatibility with PHPUnit 9 + ([27101](https://github.com/civicrm/civicrm-core/pull/27101))** + +- **Unit tests - replace deprecated function with newer one + ([27032](https://github.com/civicrm/civicrm-core/pull/27032))** + +- **Fix forms to call full form flow + ([27250](https://github.com/civicrm/civicrm-core/pull/27250))** + +- **Add form helper for tests + ([27267](https://github.com/civicrm/civicrm-core/pull/27267))** + +- **Fix participantTest to not use transactions + ([27260](https://github.com/civicrm/civicrm-core/pull/27260))** + +- **Participant Form Test fixes + ([27245](https://github.com/civicrm/civicrm-core/pull/27245))** + +- **Superficial clean up in test class + ([27238](https://github.com/civicrm/civicrm-core/pull/27238))** + +- **Cleanup signature for test function `getFormObject` + ([27225](https://github.com/civicrm/civicrm-core/pull/27225))** + +- **Switch tests to use createTestEntity for payment processor + ([27217](https://github.com/civicrm/civicrm-core/pull/27217))** + +- **Add email helper to new form test helper + ([27384](https://github.com/civicrm/civicrm-core/pull/27384))** + +- **Fix financial transfer test to use form flow, allow all pending to transfer + ([27281](https://github.com/civicrm/civicrm-core/pull/27281))** + +- **Fix token consistency test with new lines and
s + ([27314](https://github.com/civicrm/civicrm-core/pull/27314))** + +- **Trivial cleanup in EmailProcessorTest + ([27307](https://github.com/civicrm/civicrm-core/pull/27307))** + +- **[test] [cleanup] Move _REQUEST cleanup to tearDown + ([27285](https://github.com/civicrm/civicrm-core/pull/27285))** + +- **Update further tests to additional form flow, lock in bug fix + ([27279](https://github.com/civicrm/civicrm-core/pull/27279))** + +- **Minor cleanup in test + ([27282](https://github.com/civicrm/civicrm-core/pull/27282))** ## Credits This release was developed by the following code authors: -AGH Strategies - Alice Frumin, Andie Hunt; ALL IN APPLI admin; Artful Robot - Rich Lott; cdhassell; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; civiservice.de - Sebastian Lisken; Coop SymbioTIC - Mathieu Lutfy; Dave D; Humanists UK - Andrew West;; JMA Consulting - Seamus Lee; Just Hope - Phil Morice Brubaker; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Progressive Technology Project - Jamie McClelland; Robert J. Lang; SebastianLisken; Squiffle Consulting - Aidan Saunders; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Damilare Adedoyin, Eileen McNaughton, Wenjun Fan; Wildsight - Lars Sander-Green +AGH Strategies - Alice Frumin, Andie Hunt; ALL IN APPLI admin; Artful Robot - +Rich Lott; cdhassell; Christian Wach; Circle Interactive - Pradeep Nayak; +CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; civiservice.de - +Sebastian Lisken; Coop SymbioTIC - Mathieu Lutfy; Dave D; Humanists UK - Andrew +West; JMA Consulting - Seamus Lee; Just Hope - Phil Morice Brubaker; Lemniscus - +Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - +Matthew Wire; Progressive Technology Project - Jamie McClelland; Robert J. Lang; +SebastianLisken; Squiffle Consulting - Aidan Saunders; Third Sector Design - +Kurund Jalmi; Wikimedia Foundation - Damilare Adedoyin, Eileen McNaughton, +Wenjun Fan; Wildsight - Lars Sander-Green Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: -AGH Strategies - Alice Frumin; Agileware - Justin Freeman; ALL IN APPLI admin; Andy Clark; Artful Robot - Rich Lott; ASMAC (American Society of Music Arrangers and Composers) - Jeff Kellem; Australian Greens - Andrew Cormick-Dockery, John Twyman; Christian Wach; Circle Interactive - Pradeep Nayak; civibot[bot]; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; civiservice.de - Sebastian Lisken; Coop SymbioTIC - Mathieu Lutfy; Dave D; Francesc Bassas i Bullich; Freeform Solutions - Herb van den Dool; GitHub-user-29; Guydn; JMA Consulting - Joe Murray, Monish Deb, Seamus Lee; Korlon - Stuart Gaston; Lemniscus - Noah Miller; Megaphone Technology Consulting - Brienne Kordis, Jon Goldberg; MJW Consulting - Matthew Wire; Progressive Technology Project - Jamie McClelland; Squiffle Consulting - Aidan Saunders; Tadpole Collective - Kevin Cristiano; Third Sector Design - Kurund Jalmi, William Mortada; Tobias Voigt; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sander-Green; yurg +Agileware - Justin Freeman; Andy Clark; ASMAC (American Society of Music +Arrangers and Composers) - Jeff Kellem; Australian Greens - Andrew +Cormick-Dockery, John Twyman; Francesc Bassas i Bullich; Freeform Solutions - +Herb van den Dool; Guydn; JMA Consulting - Joe Murray, Monish Deb; Korlon - +Stuart Gaston; Megaphone Technology Consulting - Brienne Kordis; Tadpole +Collective - Kevin Cristiano; Third Sector Design - William Mortada; Tobias +Voigt; yurg ## Feedback diff --git a/release-notes/5.67.0.md b/release-notes/5.67.0.md new file mode 100644 index 000000000000..d18ccd6cf0d3 --- /dev/null +++ b/release-notes/5.67.0.md @@ -0,0 +1,965 @@ +# CiviCRM 5.67.0 + +Released November 1, 2023 + +- **[Synopsis](#synopsis)** +- **[Security advisories](#security)** +- **[Features](#features)** +- **[Bugs resolved](#bugs)** +- **[Miscellany](#misc)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## Synopsis + +| *Does this version...?* | | +|:--------------------------------------------------------------- |:-------:| +| Fix security vulnerabilities? | no | +| **Change the database schema?** | **yes** | +| **Alter the API?** | **yes** | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | no | +| **Introduce features?** | **yes** | +| **Fix bugs?** | **yes** | + + +## Features + +### Core CiviCRM + +- **SearchKit - Improve metadata, joins and links + ([27407](https://github.com/civicrm/civicrm-core/pull/27407))** + + Miscellaneous fixes and improvements to SearchKit and FormBuilder, toward the + goal of search displays that can replace existing core pages. + +- **Afform - Make Afform Core extension required + ([27293](https://github.com/civicrm/civicrm-core/pull/27293))** + + Makes Afform and Authx required so that the process of replacing core pages + and forms with Afform/SearchKit can begin. + +- **ContactSummary - Replace Relationships tab with SearchKit display + ([27701](https://github.com/civicrm/civicrm-core/pull/27701))** + + Replaces the Contact Summary -> Relationship tab with a SearchKit display. + +- **ContactSummary - Replace Notes tab with SearchKit display + ([27610](https://github.com/civicrm/civicrm-core/pull/27610))** + + Replaces the Contact Summary -> Notes tab with a SearchKit display. + +- **Convert CiviCampaign Dashboard to SearchKit + ([27271](https://github.com/civicrm/civicrm-core/pull/27271))** + + Converts the CiviCampaign Dashboard to a SearchKit display. + +- **Translation support for Afforms & Managed Search Displays + ([dev/core#2396](https://lab.civicrm.org/dev/core/-/issues/2396): + [27553](https://github.com/civicrm/civicrm-core/pull/27553))** + + Multilingual support for Afforms. + +- **API - Improve ACL processing, deprecate `hook_civicrm_notePrivacy` + ([27472](https://github.com/civicrm/civicrm-core/pull/27472))** + + Expands the capabilities of ACLs checking for API get actions while improving + efficiency. + +- **APIv4 - Add Individual, Household, Organization pseudo-entities + ([27659](https://github.com/civicrm/civicrm-core/pull/27659))** + + Extends APIv4 with 3 pseudo-entities for the 3 base contact types. + +- **Api4 - Enable file attachments to be displayed in SearchKit + ([27379](https://github.com/civicrm/civicrm-core/pull/27379))** + + Makes it so file attachments can be displayed in SearchKit. + +- **APIv4 - Add dfk metadata to getfields + ([27520](https://github.com/civicrm/civicrm-core/pull/27520))** + + Improves APIv4 metadata about Dynamic foreign keys (DFKs), aka `entity_table` + and `entity_id` combos. + +- **Add Entity batch to Search kit + ([27414](https://github.com/civicrm/civicrm-core/pull/27414))** + + Makes Entity batch available in SearchKit. + +- **SearchKit - Expose Address.proximity filter as Afform search filter + ([27631](https://github.com/civicrm/civicrm-core/pull/27631))** + + Exposes Address Proximity as an Afform Search Filter. + +- **Afform - Scan core ang/afform directory + ([27647](https://github.com/civicrm/civicrm-core/pull/27647))** + + Makes it so CiviCRM Core can define Afforms. + +- **Afform - Switch to user-oriented breadcrumbs, move admin link to hover + button ([27618](https://github.com/civicrm/civicrm-core/pull/27618))** + + Adds an edit form link to view of forms built with afform and improves afform + breadcrumb usability. + +- **allows showing detailed error messages from AJAX + ([27637](https://github.com/civicrm/civicrm-core/pull/27637))** + + Makes it so users without "View Debug Output" can see a detailed ajax error + message in Afform. + +- **SearchKit - Improve performance of downloading spreadsheet + ([27417](https://github.com/civicrm/civicrm-core/pull/27417))** + + Improves performance of downloading SearchKit spreadsheets. + +- **SearchKit - Add crm-search-col-type-* css classes + ([27461](https://github.com/civicrm/civicrm-core/pull/27461))** + + Add css classes for styling search display columns based on the type. + +- **Remove "Save and New" buttons from most places + ([dev/user-interface#53](https://lab.civicrm.org/dev/user-interface/-/issues/53): + [27029](https://github.com/civicrm/civicrm-core/pull/27029))** + + Reduces presence of Save and Done/New on forms. + +- **Upgrade Smarty to Smarty3+ (Work Towards + [dev/core#4146](https://lab.civicrm.org/dev/core/-/issues/4146): + [27620](https://github.com/civicrm/civicrm-core/pull/27620), + [27594](https://github.com/civicrm/civicrm-core/pull/27594), + [27676](https://github.com/civicrm/civicrm-core/pull/27676), + [27621](https://github.com/civicrm/civicrm-core/pull/27621), + [27582](https://github.com/civicrm/civicrm-core/pull/27582), + [27588](https://github.com/civicrm/civicrm-core/pull/27588), + [27604](https://github.com/civicrm/civicrm-core/pull/27604), + [27693](https://github.com/civicrm/civicrm-core/pull/27693), + [27525](https://github.com/civicrm/civicrm-core/pull/27525), + [27585](https://github.com/civicrm/civicrm-core/pull/27585), + [27587](https://github.com/civicrm/civicrm-core/pull/27587), + [27687](https://github.com/civicrm/civicrm-core/pull/27687), + [27581](https://github.com/civicrm/civicrm-core/pull/27581), + [27583](https://github.com/civicrm/civicrm-core/pull/27583) and + [27547](https://github.com/civicrm/civicrm-core/pull/27547))** + + Work towards upgrading to Smarty3+. + +- **Tracking: Uses of {php} to remove from Smarty in order to allow upgrade to + Smarty 3+ (Work towards + [dev/core#4618](https://lab.civicrm.org/dev/core/-/issues/4618): + [27584](https://github.com/civicrm/civicrm-core/pull/27584))** + + Updates APIv3 explorer to not encourage php-eval in smarty. + +- **Add more search option for email + ([27656](https://github.com/civicrm/civicrm-core/pull/27656))** + + Adds email fields to the filter on search. + +- **Implement OAuthSessionToken + ([27316](https://github.com/civicrm/civicrm-core/pull/27316))** + + Implements a new type of OAuth token storage: OAuthSessionToken. + +- **Feature request - Queue api should respect maintenance mode + ([dev/core#4490](https://lab.civicrm.org/dev/core/-/issues/4490): + [27526](https://github.com/civicrm/civicrm-core/pull/27526))** + + Adds a setting and hook to pause/resume background-queues. + +- **Finish making legacycustomsearches optional + ([dev/core#4112](https://lab.civicrm.org/dev/core/-/issues/4112): + [27400](https://github.com/civicrm/civicrm-core/pull/27400))** + + Stop installing legacycustomsearches on new installs. + +- **GettingStarted: add token for System Status + ([27382](https://github.com/civicrm/civicrm-core/pull/27382))** + + Adds a token for System Status and uses it in the "Getting Started" dashlet. + +- **Queue::run() - Add API for running several tasks + ([27691](https://github.com/civicrm/civicrm-core/pull/27691))** + + Adds a utility for running queued tasks using the newer (higher-level) queuing + features. + +- **Scan core `civicrm/managed` directory for entity declarations + ([27389](https://github.com/civicrm/civicrm-core/pull/27389))** + + Allows managed entities to be shipped with CiviCRM core, independent of any + extensions. + +- **CRM_Core_Module - Generate optional `$label` property + ([27392](https://github.com/civicrm/civicrm-core/pull/27392))** + + Adds some extra metadata to the module finder. It's a step toward showing a + pretty list of options for Managed.module in APIv4 Explorer. + +- **CustomGroup - Add metadata, cleanup "Custom FieldSet" form & improve UX + ([27549](https://github.com/civicrm/civicrm-core/pull/27549))** + + Improves user experience of the Custom Field Set form and adds metadata. + +- **Add simple smart group profiler + ([dev/core#4350](https://lab.civicrm.org/dev/core/-/issues/4350): + [27232](https://github.com/civicrm/civicrm-core/pull/27232) and + [27462](https://github.com/civicrm/civicrm-core/pull/27462))** + + Adds a Smart Group profiler to help identify slow smart groups. + +- **Standalone: Users' password changing form and API + ([27681](https://github.com/civicrm/civicrm-core/pull/27681) and + [27645](https://github.com/civicrm/civicrm-core/pull/27645))** + + Adds Password Reset functionality for Standalone installations. + +- **Add Label field for Message Template + ([27664](https://github.com/civicrm/civicrm-core/pull/27664))** + + Adds "Label" field to Message template so that it can be searched via Custom + field entity reference field. + +- **Add in-app docs re prefilling multiple ids in repeating blocks + ([27706](https://github.com/civicrm/civicrm-core/pull/27706))** + + Explains comma-separated ID syntax. + +### CiviMail + +- **Address CiviCRM Mailing table complexity - make queries easier & data more + prunable (Work towards + [dev/core#4567](https://lab.civicrm.org/dev/core/-/issues/4567): + [27640](https://github.com/civicrm/civicrm-core/pull/27640), + [27644](https://github.com/civicrm/civicrm-core/pull/27644), + [27513](https://github.com/civicrm/civicrm-core/pull/27513) and + [27557](https://github.com/civicrm/civicrm-core/pull/27557))** + + Adds Mailing ID to simplify CiviCRM mailing tables. + +- **Upgrade: rename the Draft/Sent Mailing menu labels + ([27697](https://github.com/civicrm/civicrm-core/pull/27697))** + + Simplifies the mailing menu labels and makes them translatable. + +### Joomla Integration + +- **Migrate installers to "setup" API (Work Towards + [dev/core#1615](https://lab.civicrm.org/dev/core/-/issues/1615): + [70](https://github.com/civicrm/civicrm-joomla/pull/70))** + + Migrates the Joomla integration installer to use the Setup API for + installation. + +## Bugs resolved + +### Core CiviCRM + +- **CiviCRM Log File: Dates and Security (Work towards + [dev/core#4270](https://lab.civicrm.org/dev/core/-/issues/4270): + [27575](https://github.com/civicrm/civicrm-core/pull/27575))** + + Ensures CiviCRM log files use a standard date format. + +- **Scheduled jobs stopped working after an update last week - error in + MailingEventUnsubscribe.php + ([dev/core#4421](https://lab.civicrm.org/dev/core/-/issues/4421): + [27403](https://github.com/civicrm/civicrm-core/pull/27403))** + +- **Attempting to move a custom field of type Country bypasses extends check and + fails ([dev/core#4568](https://lab.civicrm.org/dev/core/-/issues/4568): + [27413](https://github.com/civicrm/civicrm-core/pull/27413))** + +- **ACL's causing invalid SQL + ([dev/core#4635](https://lab.civicrm.org/dev/core/-/issues/4635): + [27679](https://github.com/civicrm/civicrm-core/pull/27679))** + +- **Add some more weight fields + ([27728](https://github.com/civicrm/civicrm-core/pull/27728))** + +- **Weights for custom field groups page + ([27416](https://github.com/civicrm/civicrm-core/pull/27416))** + +- **Add weights to premium screen + ([27788](https://github.com/civicrm/civicrm-core/pull/27788))** + +- **Add some weights to pcp page + ([27780](https://github.com/civicrm/civicrm-core/pull/27780))** + +- **getTree: initialize variable before it's used (PHP8 compat) + ([27718](https://github.com/civicrm/civicrm-core/pull/27718))** + +- **Fix sort_name & display_name settings to support new-style tokens + ([27695](https://github.com/civicrm/civicrm-core/pull/27695))** + +- **hook_civicrm_links - Add docblocks and event-checker + ([27484](https://github.com/civicrm/civicrm-core/pull/27484))** + +- **Schema - stop oversharing version numbers + ([27682](https://github.com/civicrm/civicrm-core/pull/27682))** + +- **Do assign unconditionally + ([27696](https://github.com/civicrm/civicrm-core/pull/27696))** + +- **Pass cid=false in include to avoid notice + ([27677](https://github.com/civicrm/civicrm-core/pull/27677))** + +- **Align financial information in participant offline receipt with online + receipt ([27624](https://github.com/civicrm/civicrm-core/pull/27624))** + +- **Add icons to relationship permission metadata + ([27670](https://github.com/civicrm/civicrm-core/pull/27670))** + +- **Stop using undefined properties to specify custom data extends values + ([27560](https://github.com/civicrm/civicrm-core/pull/27560))** + +- **Allow `civicrm_campaign` as `entity_table` for `FinancialItem` API entity + ([27570](https://github.com/civicrm/civicrm-core/pull/27570))** + +- **Use token for tax_amount, quick config mode + ([27016](https://github.com/civicrm/civicrm-core/pull/27016))** + +- **civicrm_admin_ui: add Profile Copy action + ([26529](https://github.com/civicrm/civicrm-core/pull/26529))** + + Ensures the "Copy" action is available for Profiles for those using the admin + ui extension. + +- **Stop saying N contacts removed when they were already removed. + ([27534](https://github.com/civicrm/civicrm-core/pull/27534))** + +- **APIv4 - Remove function that doesn't do anything, add some type hints + ([27558](https://github.com/civicrm/civicrm-core/pull/27558))** + +- **Replace email smarty var with token + ([27595](https://github.com/civicrm/civicrm-core/pull/27595))** + +- **Loosen action typing - doing nothing is doing something + ([27567](https://github.com/civicrm/civicrm-core/pull/27567))** + +- **Cast _action to an int + ([27495](https://github.com/civicrm/civicrm-core/pull/27495))** + +- **SearchKit - Save In-place edit when pressing enter + ([27576](https://github.com/civicrm/civicrm-core/pull/27576))** + +- **SearchKit - When hiding pager, also hide page count + ([27616](https://github.com/civicrm/civicrm-core/pull/27616))** + +- **SearchKit Toolbar - Fix conditionals, add tests + ([27527](https://github.com/civicrm/civicrm-core/pull/27527))** + +- **Consolidate Profile Preview with other profile code + ([27482](https://github.com/civicrm/civicrm-core/pull/27482))** + +- **Metadata - Add "civicrm_note" to "note_used_for" option group + ([27396](https://github.com/civicrm/civicrm-core/pull/27396))** + + Fixes API bug due to incomplete metadata. + +- **Always assign noCid when the tpl is included + ([27541](https://github.com/civicrm/civicrm-core/pull/27541))** + +- **Simplify CustomField::displayValue to expect an ID & have deprecated + handling for anything else + ([27535](https://github.com/civicrm/civicrm-core/pull/27535))** + +- **India-provinces update outdated provinces abbreviations + ([27415](https://github.com/civicrm/civicrm-core/pull/27415))** + +- **Fix a couple more places to use tokens participant role + ([27614](https://github.com/civicrm/civicrm-core/pull/27614))** + +- **Fix double fieldset for honoree section + ([27546](https://github.com/civicrm/civicrm-core/pull/27546))** + +- **Fix Smarty help text block + ([27673](https://github.com/civicrm/civicrm-core/pull/27673))** + +- **Fix typos in field.tpl + ([27627](https://github.com/civicrm/civicrm-core/pull/27627))** + +- **Fix those pesky field notices ...again + ([27590](https://github.com/civicrm/civicrm-core/pull/27590))** + +- **[php8] Swap out some tpl variables for tokens in offline receipt template + ([27598](https://github.com/civicrm/civicrm-core/pull/27598))** + +- **Stop accessng _tpl_vars in smarty from property + ([27589](https://github.com/civicrm/civicrm-core/pull/27589))** + +- **Fix undefined property on fromEmails for Participant fee + ([27578](https://github.com/civicrm/civicrm-core/pull/27578))** + +- **AdminUI: Fix filtering logs by scheduled job + ([27628](https://github.com/civicrm/civicrm-core/pull/27628))** + +- **Require all fields in signature, as always passed + ([27601](https://github.com/civicrm/civicrm-core/pull/27601))** + +- **Simplify formatting in text versions of workflow messages + ([27602](https://github.com/civicrm/civicrm-core/pull/27602))** + +- **Pass `NULL` instead of a value where function requires a parameter but + does not use it + ([27532](https://github.com/civicrm/civicrm-core/pull/27532))** + +- **Fix assigning of customGroup data to be more re-usable & use undefined + properties less + ([27552](https://github.com/civicrm/civicrm-core/pull/27552))** + +- **Smarty notices & errors, message template screen + ([27689](https://github.com/civicrm/civicrm-core/pull/27689))** + +- **Fix unnecessary pass-by-ref, minor code improvements + ([27429](https://github.com/civicrm/civicrm-core/pull/27429))** + +- **Fix Smarty secure mode for premiums tab + ([27471](https://github.com/civicrm/civicrm-core/pull/27471))** + +- **[PHP 8.0+?] Empty requires tag in info.xml crashes extension list + ([dev/core#4707](https://lab.civicrm.org/dev/core/-/issues/4707): + [27856](https://github.com/civicrm/civicrm-core/pull/27856))** + + Don't error if extension has empty `requires` tag. + +- **PHP 8.x always assign taxTerm, ppID - backoffice contribution form + ([27470](https://github.com/civicrm/civicrm-core/pull/27470))** + +- **php8.x Fix notice from adding esm_loader to wrong settings form + ([27530](https://github.com/civicrm/civicrm-core/pull/27530))** + +- **php 8.x Ensure profiles are assigned to template, even when empty + ([27488](https://github.com/civicrm/civicrm-core/pull/27488))** + +- **Php 8.x clean up notices on Profiles + ([27483](https://github.com/civicrm/civicrm-core/pull/27483))** + +- **Fix mistake from last week on string wrangling + ([27537](https://github.com/civicrm/civicrm-core/pull/27537))** + +- **Fix legacy custom searches to not use hacky method to access protected + property on core class + ([27502](https://github.com/civicrm/civicrm-core/pull/27502))** + +- **Hardened smarty - fix mishandling of json + ([27468](https://github.com/civicrm/civicrm-core/pull/27468))** + +- **Suppress rather than declare exception + ([27424](https://github.com/civicrm/civicrm-core/pull/27424))** + +- **Php8.x Fix notices when creating custom field + ([27516](https://github.com/civicrm/civicrm-core/pull/27516))** + +- **8.x Profiles Remove e-notices by removing never assigned help_pre, help_post + ([27433](https://github.com/civicrm/civicrm-core/pull/27433))** + +- **8.x Fix all instances of call Profile template to specify the prefix + ([27435](https://github.com/civicrm/civicrm-core/pull/27435))** + +- **8.x Fix a couple of notices when rendering profiles + ([27434](https://github.com/civicrm/civicrm-core/pull/27434))** + +- **php 8.x Use internal property rather than undefined _type + ([27241](https://github.com/civicrm/civicrm-core/pull/27241))** + +- **VersionCheck: replace hash by sid, add the environment + ([27385](https://github.com/civicrm/civicrm-core/pull/27385))** + +- **hook_civicrm_config: Add extra information to distinguish invocations + ([27149](https://github.com/civicrm/civicrm-core/pull/27149))** + +- **Use internal variable rather than undeclared property + ([27240](https://github.com/civicrm/civicrm-core/pull/27240))** + +- **Standardise fee_label in event workflow messages + ([27325](https://github.com/civicrm/civicrm-core/pull/27325))** + +- **Smarty notices - Fix a couple more templates to look for elements not a + variable that says the element is present + ([27402](https://github.com/civicrm/civicrm-core/pull/27402))** + +- **Cleanup presentation of total to improve code & reduce notices + ([27234](https://github.com/civicrm/civicrm-core/pull/27234))** + +- **SearchKit: Align column headers according to settings + ([27642](https://github.com/civicrm/civicrm-core/pull/27642))** + +- **SearchKit - Fix and add test for scenario where the same display is used + twice on a form + ([27698](https://github.com/civicrm/civicrm-core/pull/27698))** + +- **APIv4 - Fix autocomplete for Individual,Household,Organization entities + ([27713](https://github.com/civicrm/civicrm-core/pull/27713))** + +- **APIv4 - ensure action names get camelCase properly + ([27704](https://github.com/civicrm/civicrm-core/pull/27704))** + +- **APIv4 - Trim output of Export action to only non-default values + ([27700](https://github.com/civicrm/civicrm-core/pull/27700))** + +- **APIv4 Explorer - Fix yml input values + ([27357](https://github.com/civicrm/civicrm-core/pull/27357))** + +- **rtrim when converting text tokens to html to avoid trailing newlines + ([27353](https://github.com/civicrm/civicrm-core/pull/27353))** + +- **Fix missing quotes in tpl file + ([27742](https://github.com/civicrm/civicrm-core/pull/27742))** + +- **Afform - Fix display of boolean checkboxes + ([27592](https://github.com/civicrm/civicrm-core/pull/27592))** + +- **Afform - fix undefined function error + ([27736](https://github.com/civicrm/civicrm-core/pull/27736))** + +- **php notices for "description" + ([27634](https://github.com/civicrm/civicrm-core/pull/27634))** + +- **Notice fix ([27730](https://github.com/civicrm/civicrm-core/pull/27730))** + +- **Enotice fix ([27725](https://github.com/civicrm/civicrm-core/pull/27725))** + +- **Fix e_warning in smarty `{localize}` + ([27447](https://github.com/civicrm/civicrm-core/pull/27447))** + +- **Smarty notice fix + ([27707](https://github.com/civicrm/civicrm-core/pull/27707))** + +- **Fix some variables to always assign + ([27438](https://github.com/civicrm/civicrm-core/pull/27438))** + +- **Remove broken recaptcha from profile preview + ([27439](https://github.com/civicrm/civicrm-core/pull/27439))** + +- **Fix php notices in php dashboard code + ([27426](https://github.com/civicrm/civicrm-core/pull/27426))** + +- **Fix notice on phone_ext + ([27423](https://github.com/civicrm/civicrm-core/pull/27423))** + +- **Afform - Fix getting and setting boolean/numeric types + ([27294](https://github.com/civicrm/civicrm-core/pull/27294))** + +- **Fix MoveField PHP notice + ([27406](https://github.com/civicrm/civicrm-core/pull/27406))** + +- **Do not run financial acls if the setting it not set + ([27771](https://github.com/civicrm/civicrm-core/pull/27771))** + +### CiviCampaign + +- **Fix notice on 'new petition' page + ([27568](https://github.com/civicrm/civicrm-core/pull/27568))** + +### CiviCase + +- **CaseType managed entity in mgd.php file gets caught in an infinite loop + ([dev/core#3722](https://lab.civicrm.org/dev/core/-/issues/3722): + [27430](https://github.com/civicrm/civicrm-core/pull/27430))** + +- **CiviCase - Fix SelectWhereClause for Activity queries + ([27722](https://github.com/civicrm/civicrm-core/pull/27722))** + +### CiviContribute + +- **fix ordering of contribution page links + ([27448](https://github.com/civicrm/civicrm-core/pull/27448))** + +- **js error on contribution pages - also prevents honoree section toggling + from working ([dev/core#4616](https://lab.civicrm.org/dev/core/-/issues/4616): + [27554](https://github.com/civicrm/civicrm-core/pull/27554))** + +- **"Check number" field isn't shown on Pending check payments + ([dev/core#4556](https://lab.civicrm.org/dev/core/-/issues/4556): + [27332](https://github.com/civicrm/civicrm-core/pull/27332))** + +- **Eliminate `contributeMode` + (Work towards [dev/core#4619](https://lab.civicrm.org/dev/core/-/issues/4619): + [27562](https://github.com/civicrm/civicrm-core/pull/27562))** + + Removes removable instances of contribute Mode. + +- **Remove unnecessary contributeMode reference - just present trxn_id if + defined ([27369](https://github.com/civicrm/civicrm-core/pull/27369))** + +- **Stop checking contributeMode in ContributionPage confirm.tpl before + displaying billingName + ([27371](https://github.com/civicrm/civicrm-core/pull/27371))** + +- **Fix broken help for edit pledge + ([27622](https://github.com/civicrm/civicrm-core/pull/27622))** + +- **Fix undefined properties on back-office pledge form + ([27391](https://github.com/civicrm/civicrm-core/pull/27391))** + +- **Paypal recur processor_id fix + ([27564](https://github.com/civicrm/civicrm-core/pull/27564))** + +### CiviEvent + +- **[php8.x, workflow template] Fix multiple participant online receipt display + for quickConfig + ([27479](https://github.com/civicrm/civicrm-core/pull/27479))** + +- **[event][templates] Stop assigning `isPrimary` for WorkFlow Messages at form + layer ([27556](https://github.com/civicrm/civicrm-core/pull/27556))** + +- **Fix event.location token to include supplemental address details, use in + event receipts ([27625](https://github.com/civicrm/civicrm-core/pull/27625))** + +- **Fix notices in text versions of event receipts + ([27487](https://github.com/civicrm/civicrm-core/pull/27487))** + +- **Fix notices when deleting participants + ([27431](https://github.com/civicrm/civicrm-core/pull/27431))** + +- **Fix another EventInfo notice + ([27427](https://github.com/civicrm/civicrm-core/pull/27427))** + +- **Event Custom Field Overwrite + ([dev/core#4706](https://lab.civicrm.org/dev/core/-/issues/4706): + [27868](https://github.com/civicrm/civicrm-core/pull/27868))** + + Fixes a bug where event custom fields data was not being displayed properly + in the user interface. + +- **Fix offline event form validation bug when switching events + ([27287](https://github.com/civicrm/civicrm-core/pull/27287))** + +- **php 8 / notices Fix online event receipt to use the same location tokens as + offline ([27458](https://github.com/civicrm/civicrm-core/pull/27458))** + +- **Move Conference slots functionality to event cart + ([27478](https://github.com/civicrm/civicrm-core/pull/27478))** + +- **php 8.x Remove conference sessions from core workflow messages + ([27455](https://github.com/civicrm/civicrm-core/pull/27455))** + +- **Superficial cleanup on Event Confirm - null object + ([27444](https://github.com/civicrm/civicrm-core/pull/27444))** + +- **Whitespace clean up on event online receipt + ([27457](https://github.com/civicrm/civicrm-core/pull/27457))** + +- **Stop enabling event_cart on new installs + ([27469](https://github.com/civicrm/civicrm-core/pull/27469))** + +- **Remove event cart sessions handling from offline event receipt text as gone + from html ([27497](https://github.com/civicrm/civicrm-core/pull/27497))** + +- **Fix last notices on Online event registration by removing variables + ([27489](https://github.com/civicrm/civicrm-core/pull/27489))** + +### CiviGrant + +- **CiviGrant - Cleanup and simplify grant form, remove unused tab code + ([27411](https://github.com/civicrm/civicrm-core/pull/27411))** + +### CiviMail + +- **CiviMail - Generate email auth-code as random string + ([27533](https://github.com/civicrm/civicrm-core/pull/27533))** + + Use random string rather than sha string. + +- **CiviMail - VERP should no longer require job_id for verification + ([27531](https://github.com/civicrm/civicrm-core/pull/27531))** + +- **Exclude inactive groups on recipient lists for mailings + ([27491](https://github.com/civicrm/civicrm-core/pull/27491))** + +### CiviMember + +- **Fix set default for custom field on membership renewal form + ([26047](https://github.com/civicrm/civicrm-core/pull/26047))** + +### Drupal Integration + +- **Views notice fix. Remove duplicate call to constructor. + ([669](https://github.com/civicrm/civicrm-drupal/pull/669))** + +## Miscellany + +- **APIv4 - Delete unnecessary contact spec provider + ([27657](https://github.com/civicrm/civicrm-core/pull/27657))** + +- **Share event lookup functions in a trait + ([27612](https://github.com/civicrm/civicrm-core/pull/27612))** + +- **Switch new queue listener to be a conventional hook + ([27655](https://github.com/civicrm/civicrm-core/pull/27655))** + +- **PHP 7.x - Use get_class() instead of $object::class + ([27536](https://github.com/civicrm/civicrm-core/pull/27536))** + +- **Move the participantCount logic to the template + ([27699](https://github.com/civicrm/civicrm-core/pull/27699))** + +- **APIv4 - Remove always-true if + ([27662](https://github.com/civicrm/civicrm-core/pull/27662))** + +- **Remove references to deleted file + ([27665](https://github.com/civicrm/civicrm-core/pull/27665))** + +- **Flatten array + ([27650](https://github.com/civicrm/civicrm-core/pull/27650))** + +- **Clean up event message templates line items + ([27683](https://github.com/civicrm/civicrm-core/pull/27683))** + +- **Upgrade all core extensions to civix 23.02.1 + ([27641](https://github.com/civicrm/civicrm-core/pull/27641))** + +- **Afform - run `civix upgrade` + ([27617](https://github.com/civicrm/civicrm-core/pull/27617))** + +- **Delete unused Smarty block serialize + ([27619](https://github.com/civicrm/civicrm-core/pull/27619))** + +- **Move nasty chunk of code to where it is used + ([27517](https://github.com/civicrm/civicrm-core/pull/27517))** + +- **Run regen + ([27514](https://github.com/civicrm/civicrm-core/pull/27514))** + +- **Regenerate CRM_Event_DAO_Event + ([27510](https://github.com/civicrm/civicrm-core/pull/27510))** + +- **Rename locally assigned variable for clarity + ([27473](https://github.com/civicrm/civicrm-core/pull/27473))** + +- **Add deprecation annotations for getVar & setVar + ([27503](https://github.com/civicrm/civicrm-core/pull/27503))** + +- **Remove getVar call, access protected property in same class directly + ([27507](https://github.com/civicrm/civicrm-core/pull/27507))** + +- **Deprecate Form_Event::testSubmit, migrate test to full flow + ([27477](https://github.com/civicrm/civicrm-core/pull/27477))** + +- **Superficial tidy up in backoffice contribution form + ([27467](https://github.com/civicrm/civicrm-core/pull/27467))** + +- **Separate delete participant form from edit participant form + ([27660](https://github.com/civicrm/civicrm-core/pull/27660))** + +- **Move our security for fetch in smarty 2 to hack smarty rather than an + override ([372](https://github.com/civicrm/civicrm-packages/pull/372))** + +- **PHP8.2 Pass variables rather than co-erce properties when caling + `AbstractEditPayment:processBillingAddress` + ([27522](https://github.com/civicrm/civicrm-core/pull/27522))** + +- **Add since to deprecated tag + ([27658](https://github.com/civicrm/civicrm-core/pull/27658))** + +- **Add deprecated notice to unreachable code + ([27600](https://github.com/civicrm/civicrm-core/pull/27600))** + +- **Add deprecation notice to code that seems to be superceded + ([27436](https://github.com/civicrm/civicrm-core/pull/27436))** + +- **CRM_Utils_String - Deprecate startsWith and endsWith + ([27716](https://github.com/civicrm/civicrm-core/pull/27716))** + +- **Angular - Noisily deprecate 'settings' in favor of 'settingsFactory' + ([27798](https://github.com/civicrm/civicrm-core/pull/27798))** + +- **Stop passing unused parameter + ([27609](https://github.com/civicrm/civicrm-core/pull/27609))** + +- **Flatten array + ([27605](https://github.com/civicrm/civicrm-core/pull/27605))** + +- **Fix regression when searching by contact ID from quickSearch (if you hit + enter quickly) ([27854](https://github.com/civicrm/civicrm-core/pull/27854))** + +- **regen + ([27418](https://github.com/civicrm/civicrm-core/pull/27418))** + +- **Re-run regen + ([27719](https://github.com/civicrm/civicrm-core/pull/27719))** + +- **Event tokens clean up + ([27349](https://github.com/civicrm/civicrm-core/pull/27349))** + +- **Add Smarty3 to packages in it's own folder + ([373](https://github.com/civicrm/civicrm-packages/pull/373))** + +- **Remove unused property + ([27651](https://github.com/civicrm/civicrm-core/pull/27651))** + +- **Remove weird `
` tag on clear buttons on custom radio fields + ([27635](https://github.com/civicrm/civicrm-core/pull/27635))** + +- **Remove unreachable code + ([27675](https://github.com/civicrm/civicrm-core/pull/27675))** + +- **Remove backticks from a couple of places where tokens are already supported + ([27672](https://github.com/civicrm/civicrm-core/pull/27672))** + +- **Remove undeclared properties `_contributorEmail`, `_toDoNotEmail` from + participant form + ([27597](https://github.com/civicrm/civicrm-core/pull/27597))** + +- **Remove unused templates/CRM/Price/Form/LineItem.tpl + ([27548](https://github.com/civicrm/civicrm-core/pull/27548))** + +- **Remove some unused undeclared properties on SelfSvcTransfer form + ([27425](https://github.com/civicrm/civicrm-core/pull/27425))** + +- **Remove unused variable from function signature + ([27442](https://github.com/civicrm/civicrm-core/pull/27442))** + +- **Remove some copy & paste... + ([27539](https://github.com/civicrm/civicrm-core/pull/27539))** + +- **Remove always true if + ([27623](https://github.com/civicrm/civicrm-core/pull/27623))** + +- **Remove references to invalid action + ([27437](https://github.com/civicrm/civicrm-core/pull/27437))** + +- **Remove always-same parameter from function signature + ([27606](https://github.com/civicrm/civicrm-core/pull/27606))** + +- **Remove unused/ unnecessary table name variables + ([27303](https://github.com/civicrm/civicrm-core/pull/27303))** + +- **Remove always true if for required role_id field, add test for value + ([27366](https://github.com/civicrm/civicrm-core/pull/27366))** + +- **Remove dead code - checkSQLConstraint functions + ([27607](https://github.com/civicrm/civicrm-core/pull/27607))** + +- **php8.x Remove never-used undeclared property + ([27474](https://github.com/civicrm/civicrm-core/pull/27474))** + +- **[php8.x[ Remove notice-causing code that seems unreachable + ([27540](https://github.com/civicrm/civicrm-core/pull/27540))** + +- **Remove legacy error handling + ([27419](https://github.com/civicrm/civicrm-core/pull/27419))** + +- **Remove unused place_holder + ([27633](https://github.com/civicrm/civicrm-core/pull/27633))** + +- **Remove unreachable code + ([27636](https://github.com/civicrm/civicrm-core/pull/27636))** + +- **Remove unreachable code + ([27563](https://github.com/civicrm/civicrm-core/pull/27563))** + +- **Remove {php} in hlp test + ([27555](https://github.com/civicrm/civicrm-core/pull/27555))** + +- **Remove unintentionally added test file + ([27572](https://github.com/civicrm/civicrm-core/pull/27572))** + +- **php8.2 stop using yet-another undeclared property for _membershipId. + ([27509](https://github.com/civicrm/civicrm-core/pull/27509))** + +- **[php 8.2] Declare _paymentFields with public visibility + ([27485](https://github.com/civicrm/civicrm-core/pull/27485))** + +- **php 8.2, ensure properties are declared on activity report + ([27490](https://github.com/civicrm/civicrm-core/pull/27490))** + +- **PHP8.2 Remove undefined property userName + ([27456](https://github.com/civicrm/civicrm-core/pull/27456))** + +- **[NFC] Mail Logger: cleanup CIVICRM_MAIL_LOG_AND SEND + ([27499](https://github.com/civicrm/civicrm-core/pull/27499))** + +- **(NFC) Add comment for IS NOT NULL in moving custom fields + ([27420](https://github.com/civicrm/civicrm-core/pull/27420))** + +- **[NFC] Add in Unit test to ensure that Disabled groups do not appear in + mailing receipients autocomplete + ([27708](https://github.com/civicrm/civicrm-core/pull/27708))** + +- **(NFC) Queues - Cleanup comments + ([27690](https://github.com/civicrm/civicrm-core/pull/27690))** + +- **[NFC] Proper syntax for null in DedupeMerge + ([27603](https://github.com/civicrm/civicrm-core/pull/27603))** + +- **[NFC] APIv4 - Update contact type api comment + ([27712](https://github.com/civicrm/civicrm-core/pull/27712))** + +- **[NFC] phpunit 9 compatibility + ([27463](https://github.com/civicrm/civicrm-core/pull/27463))** + +- **[NFC] Correct urls in eway single core extension + ([27669](https://github.com/civicrm/civicrm-core/pull/27669))** + +- **Disable broken unit test + ([27388](https://github.com/civicrm/civicrm-core/pull/27388))** + +- **APIv4 - Fix conformance test for entities with multiple primary keys + ([27393](https://github.com/civicrm/civicrm-core/pull/27393))** + +- **Add test cover for handling of returnPath + ([27398](https://github.com/civicrm/civicrm-core/pull/27398))** + +- **Remove isset from template within unit tests + ([27441](https://github.com/civicrm/civicrm-core/pull/27441))** + +- **[REF] Convert arrays to short syntax ( + [27705](https://github.com/civicrm/civicrm-core/pull/27705))** + +- **[REF][PHP8.1] Fix deprecation notice on passing NULL as the 3rd param to + str_replace for Google geocoding + ([27702](https://github.com/civicrm/civicrm-core/pull/27702))** + +- **[REF][PHP8.2] Fix deprecated usage of mb_convert_encoding with HTML-Entities + ([26042](https://github.com/civicrm/civicrm-core/pull/26042))** + +- **[REF][PHP8.2] Tidy up properties in scheduled jobs + ([27460](https://github.com/civicrm/civicrm-core/pull/27460))** + +- **[REF][PHP8.2] Declare properties in CRM_Queue_ErrorPolicy + ([27599](https://github.com/civicrm/civicrm-core/pull/27599))** + +- **[REF][PHP8.2] Remove dynamic property use in api_v3_CustomValueTest + ([27449](https://github.com/civicrm/civicrm-core/pull/27449))** + +- **Add test cover, use token for `event.is_share` + ([27476](https://github.com/civicrm/civicrm-core/pull/27476))** + +- **Fix test template to use the same tokens as the templates + ([27466](https://github.com/civicrm/civicrm-core/pull/27466))** + +- **PHPStorm - Add PHPSTORM_META about test functions + ([27663](https://github.com/civicrm/civicrm-core/pull/27663))** + +## Credits + +This release was developed by the following code authors: + +AGH Strategies - Andie Hunt; Artful Robot - Rich Lott; BrightMinded Ltd - +Bradley Taylor; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - +Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; civiservice.de - Sebastian +Lisken; Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Francesc Bassas +i Bullich; Freeform Solutions - Herb van den Dool; Jens Schuppe; JMA +Consulting - Seamus Lee; John Kingsnorth; Lemniscus - Noah Miller; Megaphone +Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Przemysław +Tabor; Squiffle Consulting - Aidan Saunders; Wikimedia Foundation - Eileen +McNaughton; Wildsight - Lars Sander-Green + +Most authors also reviewed code for this release; in addition, the following +reviewers contributed their comments: + +Agileware - Justin Freeman; Australian Greens - Andrew Cormick-Dockery; +Blackfly Solutions - Alan Dixon; CiviCoop - Jaap Jansma; DevApp; JMA +Consulting - Joe Murray; Nicol Wistreich; Tadpole Collective - Kevin Cristiano; +Third Sector Design - Kurund Jalmi, William Mortada; Wikimedia Foundation - +Elliott Eggleston; xavi-xaloc + +## Feedback + +These release notes are edited by Alice Frumin and Andie Hunt. If you'd like +to provide feedback on them, please log in to https://chat.civicrm.org/civicrm +and contact `@agh1`. diff --git a/settings/Core.setting.php b/settings/Core.setting.php index 3a7309025b7d..9106338b1eb9 100644 --- a/settings/Core.setting.php +++ b/settings/Core.setting.php @@ -142,7 +142,7 @@ 'name' => 'display_name_format', 'type' => 'String', 'html_type' => 'textarea', - 'default' => '{contact.individual_prefix}{ }{contact.first_name}{ }{contact.last_name}{ }{contact.individual_suffix}', + 'default' => '{contact.prefix_id:label}{ }{contact.first_name}{ }{contact.last_name}{ }{contact.suffix_id:label}', 'add' => '4.1', 'title' => ts('Individual Display Name Format'), 'is_domain' => 1, @@ -1201,4 +1201,16 @@ 'description' => ts('How long should HTTP requests through Guzzle application run for in seconds'), 'help_text' => ts('Set the number of seconds http requests should run for before terminating'), ], + 'queue_paused' => [ + 'name' => 'queue_paused', + 'type' => 'Boolean', + 'default' => FALSE, + 'html_type' => 'yesno', + 'add' => '5.67', + 'title' => ts('Is background queue temporarily disabled?'), + 'is_domain' => 1, + 'is_contact' => 0, + 'description' => ts('If enabled, CiviCRM will not process background queues.'), + 'help_text' => ts('This setting will only affect sites that have background queue processing enabled (eg. coworker)'), + ], ]; diff --git a/setup/plugins/init/StandaloneUsers.civi-setup.php b/setup/plugins/init/StandaloneUsers.civi-setup.php index 573c4b777a32..b756ef77c861 100644 --- a/setup/plugins/init/StandaloneUsers.civi-setup.php +++ b/setup/plugins/init/StandaloneUsers.civi-setup.php @@ -49,7 +49,14 @@ 'name' => 'everyone', 'label' => ts('Everyone, including anonymous users'), // Provide default open permissions - 'permissions' => ['CiviMail subscribe/unsubscribe pages', 'make online contributions', 'view event info', 'register for events'], + 'permissions' => [ + 'CiviMail subscribe/unsubscribe pages', + 'make online contributions', + 'view event info', + 'register for events', + 'access password resets', + 'authenticate with password', + ], ], [ 'name' => 'admin', @@ -71,9 +78,9 @@ $params = [ 'cms_name' => $e->getModel()->extras['adminUser'], 'cms_pass' => $e->getModel()->extras['adminPass'], - 'email' => $adminEmail, + 'email' => $adminEmail, 'notify' => FALSE, - 'contactID' => $contactID, + 'contact_id' => $contactID, ]; $userID = \CRM_Core_BAO_CMSUser::create($params, 'email'); diff --git a/setup/src/Setup/SmartyUtil.php b/setup/src/Setup/SmartyUtil.php index ec0e775b52d4..a076ddb32f15 100644 --- a/setup/src/Setup/SmartyUtil.php +++ b/setup/src/Setup/SmartyUtil.php @@ -27,7 +27,8 @@ public static function createSmarty($srcPath) { require_once implode(DIRECTORY_SEPARATOR, [$srcPath, 'CRM', 'Core', 'Smarty', 'plugins', 'block.localize.php']); $smarty->register_block('localize', 'smarty_block_localize'); $smarty->assign('gencodeXmlDir', "$srcPath/xml"); - + require_once implode(DIRECTORY_SEPARATOR, [$srcPath, 'CRM', 'Core', 'CodeGen', 'Util', 'MessageTemplates.php']); + \CRM_Core_CodeGen_Util_MessageTemplates::assignSmartyVariables($smarty); return $smarty; } diff --git a/sql/civicrm_data/civicrm_option_group/custom_data_type.sqldata.php b/sql/civicrm_data/civicrm_option_group/custom_data_type.sqldata.php index 0ecea058f3de..13f200ae6c47 100644 --- a/sql/civicrm_data/civicrm_option_group/custom_data_type.sqldata.php +++ b/sql/civicrm_data/civicrm_option_group/custom_data_type.sqldata.php @@ -3,21 +3,25 @@ ->addMetadata([ 'title' => ts('Custom Data Type'), ]) + // Note: When adding options to this group, the 'name' *must* begin with the exact name of the base entity, + // as that's the (very lo-tech) way these options are matched with their base entity. + // Wrong: 'name' => 'ActivitiesByStatus' + // Right: 'name' => 'ActivityByStatus' ->addValues([ [ - 'label' => ts('Participants (Role)'), + 'label' => ts('Role'), 'value' => 1, 'name' => 'ParticipantRole', 'grouping' => 'role_id', ], [ - 'label' => ts('Participants (Event Name)'), + 'label' => ts('Event Name'), 'value' => 2, 'name' => 'ParticipantEventName', 'grouping' => 'event_id', ], [ - 'label' => ts('Participants (Event Type)'), + 'label' => ts('Event Type'), 'value' => 3, 'name' => 'ParticipantEventType', 'grouping' => 'event_id.event_type_id', diff --git a/sql/civicrm_data/civicrm_tag.sqldata.php b/sql/civicrm_data/civicrm_tag.sqldata.php index 974fba7f4f4b..4811b8825a24 100644 --- a/sql/civicrm_data/civicrm_tag.sqldata.php +++ b/sql/civicrm_data/civicrm_tag.sqldata.php @@ -6,23 +6,33 @@ ]) ->addValues([ [ - 'name' => ts('Non-profit'), + 'label' => ts('Non-profit'), + 'name' => 'Non_profit', 'description' => ts('Any not-for-profit organization.'), + 'color' => '#0bcb21', ], [ - 'name' => ts('Company'), + 'label' => ts('Company'), + 'name' => 'Company', 'description' => ts('For-profit organization.'), + 'color' => '#2260c3', ], [ - 'name' => ts('Government Entity'), + 'label' => ts('Government Entity'), + 'name' => 'Government_Entity', 'description' => ts('Any governmental entity.'), + 'color' => '#cd4b13', ], [ - 'name' => ts('Major Donor'), + 'label' => ts('Major Donor'), + 'name' => 'Major_Donor', 'description' => ts('High-value supporter of our organization.'), + 'color' => '#0cdae9', ], [ - 'name' => ts('Volunteer'), + 'label' => ts('Volunteer'), + 'name' => 'Volunteer', 'description' => ts('Active volunteers.'), + 'color' => '#f0dc00', ], ]); diff --git a/sql/civicrm_generated.mysql b/sql/civicrm_generated.mysql index b9e4df773bd6..3580f8d312b4 100644 --- a/sql/civicrm_generated.mysql +++ b/sql/civicrm_generated.mysql @@ -1,15 +1,16 @@ --- MariaDB dump 10.19 Distrib 10.5.19-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.13 Distrib 5.7.37, for Linux (x86_64) -- --- Host: database Database: dmastercivicrm +-- Host: 127.0.0.1 Database: dmastercivi_ssc8b -- ------------------------------------------------------ --- Server version 10.4.20-MariaDB-1:10.4.20+maria~focal +-- Server version 5.7.37 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; @@ -81,647 +82,647 @@ UNLOCK TABLES; LOCK TABLES `civicrm_activity` WRITE; /*!40000 ALTER TABLE `civicrm_activity` DISABLE KEYS */; INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES - (1,NULL,1,'Subject for Meeting','2022-12-03 07:07:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (2,NULL,9,'Subject for Tell a Friend','2022-11-05 20:21:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (3,NULL,1,'Subject for Meeting','2023-07-16 09:26:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (4,NULL,1,'Subject for Meeting','2023-07-09 01:25:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (5,NULL,22,'Subject for Print/Merge Document','2023-08-05 16:10:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (6,NULL,9,'Subject for Tell a Friend','2023-03-11 05:30:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (7,NULL,9,'Subject for Tell a Friend','2022-12-12 21:23:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (8,NULL,1,'Subject for Meeting','2022-11-03 07:44:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (9,NULL,56,'Subject for Interview','2022-11-11 17:24:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (10,NULL,22,'Subject for Print/Merge Document','2023-02-01 21:30:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (11,NULL,9,'Subject for Tell a Friend','2023-02-03 21:47:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (12,NULL,22,'Subject for Print/Merge Document','2023-03-07 19:31:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (13,NULL,56,'Subject for Interview','2023-01-09 10:15:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (14,NULL,2,'Subject for Phone Call','2022-12-22 19:03:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (15,NULL,9,'Subject for Tell a Friend','2023-05-13 17:35:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (16,NULL,2,'Subject for Phone Call','2022-11-06 21:19:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (17,NULL,9,'Subject for Tell a Friend','2023-02-21 17:06:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (18,NULL,9,'Subject for Tell a Friend','2023-06-26 12:49:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (19,NULL,56,'Subject for Interview','2023-06-17 14:10:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (20,NULL,22,'Subject for Print/Merge Document','2023-03-01 06:55:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (21,NULL,1,'Subject for Meeting','2023-06-17 23:46:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (22,NULL,9,'Subject for Tell a Friend','2023-03-29 12:25:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (23,NULL,1,'Subject for Meeting','2022-10-17 00:54:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (24,NULL,22,'Subject for Print/Merge Document','2023-07-16 18:44:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (25,NULL,9,'Subject for Tell a Friend','2022-12-21 01:39:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (26,NULL,9,'Subject for Tell a Friend','2023-02-16 21:40:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (27,NULL,9,'Subject for Tell a Friend','2023-07-17 07:05:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (28,NULL,56,'Subject for Interview','2022-11-24 04:14:51',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (29,NULL,9,'Subject for Tell a Friend','2023-05-19 05:26:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (30,NULL,56,'Subject for Interview','2022-10-09 04:15:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (31,NULL,22,'Subject for Print/Merge Document','2023-04-12 06:54:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (32,NULL,1,'Subject for Meeting','2023-04-05 04:46:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (33,NULL,22,'Subject for Print/Merge Document','2022-10-23 16:57:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (34,NULL,1,'Subject for Meeting','2022-10-29 02:03:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (35,NULL,56,'Subject for Interview','2023-06-16 19:26:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (36,NULL,2,'Subject for Phone Call','2023-01-31 17:38:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (37,NULL,1,'Subject for Meeting','2022-12-15 09:05:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (38,NULL,1,'Subject for Meeting','2023-08-23 09:16:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (39,NULL,9,'Subject for Tell a Friend','2022-10-19 15:52:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (40,NULL,1,'Subject for Meeting','2023-04-30 18:23:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (41,NULL,9,'Subject for Tell a Friend','2023-07-26 09:35:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (42,NULL,9,'Subject for Tell a Friend','2023-03-09 03:59:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (43,NULL,1,'Subject for Meeting','2022-10-22 10:40:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (44,NULL,22,'Subject for Print/Merge Document','2023-06-26 05:58:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (45,NULL,56,'Subject for Interview','2023-08-26 12:50:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (46,NULL,9,'Subject for Tell a Friend','2023-04-19 03:24:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (47,NULL,9,'Subject for Tell a Friend','2022-11-14 17:47:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (48,NULL,1,'Subject for Meeting','2023-04-13 07:45:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (49,NULL,9,'Subject for Tell a Friend','2023-07-28 01:24:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (50,NULL,56,'Subject for Interview','2023-06-02 17:57:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (51,NULL,22,'Subject for Print/Merge Document','2022-10-11 18:08:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (52,NULL,9,'Subject for Tell a Friend','2022-09-25 23:40:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (53,NULL,1,'Subject for Meeting','2023-05-25 07:24:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (54,NULL,56,'Subject for Interview','2023-04-02 05:03:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (55,NULL,56,'Subject for Interview','2023-04-15 16:05:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (56,NULL,56,'Subject for Interview','2022-10-07 13:55:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (57,NULL,1,'Subject for Meeting','2023-09-07 21:30:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (58,NULL,22,'Subject for Print/Merge Document','2023-04-08 17:28:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (59,NULL,2,'Subject for Phone Call','2022-11-20 04:40:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (60,NULL,22,'Subject for Print/Merge Document','2023-01-20 22:29:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (61,NULL,22,'Subject for Print/Merge Document','2023-05-05 10:18:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (62,NULL,22,'Subject for Print/Merge Document','2022-10-23 02:34:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (63,NULL,9,'Subject for Tell a Friend','2023-06-29 13:13:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (64,NULL,56,'Subject for Interview','2023-02-23 21:19:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (65,NULL,1,'Subject for Meeting','2022-10-10 02:48:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (66,NULL,2,'Subject for Phone Call','2023-07-14 04:17:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (67,NULL,56,'Subject for Interview','2022-11-14 11:57:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (68,NULL,2,'Subject for Phone Call','2023-01-24 01:21:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (69,NULL,1,'Subject for Meeting','2023-08-09 21:56:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (70,NULL,22,'Subject for Print/Merge Document','2023-09-14 01:55:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (71,NULL,56,'Subject for Interview','2023-01-04 16:41:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (72,NULL,9,'Subject for Tell a Friend','2023-01-05 16:11:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (73,NULL,9,'Subject for Tell a Friend','2022-12-09 08:30:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (74,NULL,1,'Subject for Meeting','2022-10-30 16:41:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (75,NULL,56,'Subject for Interview','2022-10-07 09:00:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (76,NULL,56,'Subject for Interview','2023-05-26 20:35:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (77,NULL,2,'Subject for Phone Call','2023-07-23 18:32:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (78,NULL,22,'Subject for Print/Merge Document','2023-03-16 02:31:32',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (79,NULL,2,'Subject for Phone Call','2023-04-03 21:28:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (80,NULL,9,'Subject for Tell a Friend','2023-08-20 04:51:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (81,NULL,22,'Subject for Print/Merge Document','2022-12-11 20:15:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (82,NULL,9,'Subject for Tell a Friend','2023-03-02 04:27:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (83,NULL,2,'Subject for Phone Call','2023-09-05 05:06:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (84,NULL,22,'Subject for Print/Merge Document','2023-02-27 00:30:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (85,NULL,56,'Subject for Interview','2023-01-28 07:55:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (86,NULL,2,'Subject for Phone Call','2023-02-11 00:49:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (87,NULL,1,'Subject for Meeting','2023-05-10 07:02:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (88,NULL,56,'Subject for Interview','2022-10-25 15:26:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (89,NULL,22,'Subject for Print/Merge Document','2023-01-31 15:51:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:54','2023-09-19 09:27:54'), - (90,NULL,9,'Subject for Tell a Friend','2022-11-19 05:56:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (91,NULL,22,'Subject for Print/Merge Document','2022-11-05 00:41:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (92,NULL,22,'Subject for Print/Merge Document','2023-02-04 12:43:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (93,NULL,9,'Subject for Tell a Friend','2023-06-25 12:48:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (94,NULL,9,'Subject for Tell a Friend','2022-09-29 07:47:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (95,NULL,2,'Subject for Phone Call','2022-12-31 03:41:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (96,NULL,2,'Subject for Phone Call','2023-07-30 08:29:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (97,NULL,1,'Subject for Meeting','2022-12-03 01:34:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (98,NULL,22,'Subject for Print/Merge Document','2023-07-31 21:29:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (99,NULL,1,'Subject for Meeting','2022-10-30 04:52:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (100,NULL,56,'Subject for Interview','2023-05-27 21:12:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (101,NULL,9,'Subject for Tell a Friend','2022-11-17 15:13:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (102,NULL,2,'Subject for Phone Call','2023-03-28 10:16:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (103,NULL,22,'Subject for Print/Merge Document','2022-12-31 13:52:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (104,NULL,56,'Subject for Interview','2023-01-22 07:08:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (105,NULL,1,'Subject for Meeting','2023-08-15 07:51:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (106,NULL,2,'Subject for Phone Call','2023-05-01 06:15:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (107,NULL,56,'Subject for Interview','2023-01-02 18:57:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (108,NULL,22,'Subject for Print/Merge Document','2023-06-19 11:19:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (109,NULL,2,'Subject for Phone Call','2022-11-19 20:15:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (110,NULL,22,'Subject for Print/Merge Document','2023-01-25 18:08:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (111,NULL,22,'Subject for Print/Merge Document','2023-01-12 00:04:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (112,NULL,22,'Subject for Print/Merge Document','2023-02-17 22:36:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (113,NULL,1,'Subject for Meeting','2023-07-01 18:50:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (114,NULL,22,'Subject for Print/Merge Document','2022-12-23 00:37:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (115,NULL,22,'Subject for Print/Merge Document','2023-06-10 04:03:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (116,NULL,22,'Subject for Print/Merge Document','2022-09-25 12:50:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (117,NULL,1,'Subject for Meeting','2023-07-19 16:36:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (118,NULL,2,'Subject for Phone Call','2023-02-20 12:02:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (119,NULL,56,'Subject for Interview','2022-10-29 04:10:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (120,NULL,2,'Subject for Phone Call','2023-05-30 19:41:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (121,NULL,56,'Subject for Interview','2023-09-03 06:59:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (122,NULL,1,'Subject for Meeting','2023-09-15 16:37:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (123,NULL,22,'Subject for Print/Merge Document','2022-11-11 05:03:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (124,NULL,56,'Subject for Interview','2023-08-19 18:09:02',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (125,NULL,9,'Subject for Tell a Friend','2023-03-04 23:16:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (126,NULL,9,'Subject for Tell a Friend','2023-06-03 11:51:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (127,NULL,1,'Subject for Meeting','2023-02-01 22:27:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (128,NULL,22,'Subject for Print/Merge Document','2023-07-19 11:36:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (129,NULL,9,'Subject for Tell a Friend','2022-11-28 12:55:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (130,NULL,22,'Subject for Print/Merge Document','2022-10-09 04:34:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (131,NULL,9,'Subject for Tell a Friend','2022-09-26 14:18:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (132,NULL,56,'Subject for Interview','2022-10-20 21:04:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (133,NULL,56,'Subject for Interview','2022-12-22 04:03:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (134,NULL,1,'Subject for Meeting','2022-10-12 01:27:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (135,NULL,22,'Subject for Print/Merge Document','2023-04-05 12:30:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (136,NULL,1,'Subject for Meeting','2023-05-03 21:43:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (137,NULL,2,'Subject for Phone Call','2023-06-30 17:31:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (138,NULL,22,'Subject for Print/Merge Document','2023-04-08 21:21:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (139,NULL,22,'Subject for Print/Merge Document','2022-12-16 10:32:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (140,NULL,56,'Subject for Interview','2023-05-05 11:46:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (141,NULL,56,'Subject for Interview','2022-11-20 17:46:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (142,NULL,56,'Subject for Interview','2023-05-31 20:40:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (143,NULL,9,'Subject for Tell a Friend','2023-03-25 13:58:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (144,NULL,22,'Subject for Print/Merge Document','2023-03-13 12:47:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (145,NULL,1,'Subject for Meeting','2023-06-24 05:09:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (146,NULL,56,'Subject for Interview','2023-08-04 13:13:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (147,NULL,56,'Subject for Interview','2022-11-14 02:47:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (148,NULL,9,'Subject for Tell a Friend','2023-06-27 13:02:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (149,NULL,56,'Subject for Interview','2023-03-18 10:29:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (150,NULL,56,'Subject for Interview','2022-10-01 16:33:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (151,NULL,22,'Subject for Print/Merge Document','2023-01-21 17:16:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (152,NULL,22,'Subject for Print/Merge Document','2023-09-03 17:28:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (153,NULL,1,'Subject for Meeting','2022-10-20 13:14:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (154,NULL,1,'Subject for Meeting','2023-03-10 07:48:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (155,NULL,1,'Subject for Meeting','2023-02-20 07:31:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (156,NULL,22,'Subject for Print/Merge Document','2023-02-13 21:19:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (157,NULL,1,'Subject for Meeting','2023-05-04 22:44:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (158,NULL,1,'Subject for Meeting','2023-04-24 16:14:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (159,NULL,56,'Subject for Interview','2023-07-23 21:19:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (160,NULL,2,'Subject for Phone Call','2022-10-11 19:18:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (161,NULL,22,'Subject for Print/Merge Document','2022-12-15 04:22:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (162,NULL,22,'Subject for Print/Merge Document','2023-03-16 06:07:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (163,NULL,9,'Subject for Tell a Friend','2023-06-19 21:19:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (164,NULL,22,'Subject for Print/Merge Document','2023-01-13 09:45:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (165,NULL,22,'Subject for Print/Merge Document','2023-04-16 20:09:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (166,NULL,56,'Subject for Interview','2023-01-22 09:49:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (167,NULL,9,'Subject for Tell a Friend','2023-06-20 02:55:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (168,NULL,1,'Subject for Meeting','2023-09-10 17:56:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (169,NULL,22,'Subject for Print/Merge Document','2023-06-09 10:22:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (170,NULL,9,'Subject for Tell a Friend','2022-11-04 18:42:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (171,NULL,2,'Subject for Phone Call','2023-05-30 00:06:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (172,NULL,1,'Subject for Meeting','2022-12-28 21:11:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (173,NULL,2,'Subject for Phone Call','2023-02-15 02:29:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (174,NULL,2,'Subject for Phone Call','2023-04-22 19:57:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:55','2023-09-19 09:27:55'), - (175,NULL,9,'Subject for Tell a Friend','2023-06-06 16:23:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (176,NULL,56,'Subject for Interview','2023-03-01 19:15:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (177,NULL,22,'Subject for Print/Merge Document','2023-07-12 02:05:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (178,NULL,1,'Subject for Meeting','2022-10-25 15:43:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (179,NULL,1,'Subject for Meeting','2023-02-04 02:25:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (180,NULL,22,'Subject for Print/Merge Document','2023-02-18 23:12:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (181,NULL,9,'Subject for Tell a Friend','2023-08-08 02:00:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (182,NULL,1,'Subject for Meeting','2022-09-20 08:27:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (183,NULL,22,'Subject for Print/Merge Document','2022-12-02 04:37:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (184,NULL,1,'Subject for Meeting','2023-03-03 01:51:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (185,NULL,9,'Subject for Tell a Friend','2023-08-26 09:37:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (186,NULL,1,'Subject for Meeting','2023-09-05 16:01:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (187,NULL,9,'Subject for Tell a Friend','2023-04-02 01:40:33',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (188,NULL,9,'Subject for Tell a Friend','2023-08-23 19:04:51',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (189,NULL,56,'Subject for Interview','2023-08-26 09:37:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (190,NULL,56,'Subject for Interview','2023-08-06 14:04:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (191,NULL,1,'Subject for Meeting','2022-11-30 19:21:32',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (192,NULL,56,'Subject for Interview','2023-02-28 19:07:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (193,NULL,22,'Subject for Print/Merge Document','2023-07-19 13:11:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (194,NULL,9,'Subject for Tell a Friend','2022-09-24 11:11:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (195,NULL,22,'Subject for Print/Merge Document','2023-01-24 22:49:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (196,NULL,1,'Subject for Meeting','2023-05-03 06:22:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (197,NULL,56,'Subject for Interview','2023-04-02 17:23:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (198,NULL,1,'Subject for Meeting','2023-02-26 04:07:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (199,NULL,56,'Subject for Interview','2023-04-17 03:45:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (200,NULL,9,'Subject for Tell a Friend','2023-04-10 09:43:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (201,NULL,9,'Subject for Tell a Friend','2023-03-25 23:36:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (202,NULL,2,'Subject for Phone Call','2023-01-20 18:12:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (203,NULL,56,'Subject for Interview','2022-12-17 20:50:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (204,NULL,2,'Subject for Phone Call','2022-10-08 23:36:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (205,NULL,1,'Subject for Meeting','2023-02-13 09:32:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (206,NULL,1,'Subject for Meeting','2023-08-01 03:01:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (207,NULL,9,'Subject for Tell a Friend','2023-03-06 05:46:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (208,NULL,2,'Subject for Phone Call','2022-12-16 16:13:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (209,NULL,22,'Subject for Print/Merge Document','2023-07-28 14:48:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (210,NULL,22,'Subject for Print/Merge Document','2023-07-02 06:46:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (211,NULL,22,'Subject for Print/Merge Document','2023-02-28 03:46:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (212,NULL,2,'Subject for Phone Call','2023-02-08 01:39:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (213,NULL,22,'Subject for Print/Merge Document','2023-06-03 16:44:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (214,NULL,56,'Subject for Interview','2023-09-14 07:11:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (215,NULL,22,'Subject for Print/Merge Document','2023-04-20 20:27:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (216,NULL,9,'Subject for Tell a Friend','2022-09-24 09:18:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (217,NULL,2,'Subject for Phone Call','2023-02-19 09:38:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (218,NULL,56,'Subject for Interview','2023-05-04 11:33:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (219,NULL,2,'Subject for Phone Call','2023-07-11 11:43:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (220,NULL,56,'Subject for Interview','2023-09-10 14:01:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (221,NULL,56,'Subject for Interview','2022-10-27 08:48:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (222,NULL,2,'Subject for Phone Call','2023-08-16 10:26:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (223,NULL,56,'Subject for Interview','2023-09-06 14:28:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (224,NULL,2,'Subject for Phone Call','2023-09-07 18:23:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (225,NULL,56,'Subject for Interview','2023-01-11 06:39:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (226,NULL,56,'Subject for Interview','2023-05-20 06:48:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (227,NULL,9,'Subject for Tell a Friend','2023-01-11 18:11:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (228,NULL,9,'Subject for Tell a Friend','2023-03-08 09:55:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (229,NULL,1,'Subject for Meeting','2022-09-23 23:41:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (230,NULL,22,'Subject for Print/Merge Document','2023-03-10 16:18:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (231,NULL,22,'Subject for Print/Merge Document','2023-07-03 18:14:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (232,NULL,1,'Subject for Meeting','2023-05-15 21:38:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (233,NULL,22,'Subject for Print/Merge Document','2023-02-06 16:13:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (234,NULL,9,'Subject for Tell a Friend','2023-08-08 07:08:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (235,NULL,56,'Subject for Interview','2023-05-22 22:35:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (236,NULL,22,'Subject for Print/Merge Document','2023-02-25 13:08:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (237,NULL,22,'Subject for Print/Merge Document','2023-08-15 15:54:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (238,NULL,9,'Subject for Tell a Friend','2023-07-18 04:33:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (239,NULL,56,'Subject for Interview','2022-10-28 03:00:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (240,NULL,22,'Subject for Print/Merge Document','2023-06-11 20:14:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (241,NULL,2,'Subject for Phone Call','2022-10-17 21:51:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (242,NULL,56,'Subject for Interview','2023-07-20 09:36:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (243,NULL,2,'Subject for Phone Call','2022-12-08 02:21:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (244,NULL,2,'Subject for Phone Call','2023-03-30 03:21:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (245,NULL,22,'Subject for Print/Merge Document','2023-09-04 01:18:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (246,NULL,56,'Subject for Interview','2023-03-05 07:55:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (247,NULL,56,'Subject for Interview','2023-07-13 11:10:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (248,NULL,9,'Subject for Tell a Friend','2023-01-16 04:03:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (249,NULL,22,'Subject for Print/Merge Document','2023-06-03 04:44:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (250,NULL,9,'Subject for Tell a Friend','2023-03-23 11:26:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (251,NULL,56,'Subject for Interview','2023-02-22 17:46:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (252,NULL,2,'Subject for Phone Call','2022-11-24 18:02:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (253,NULL,1,'Subject for Meeting','2022-10-03 22:27:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (254,NULL,56,'Subject for Interview','2023-05-01 17:42:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:56','2023-09-19 09:27:56'), - (255,NULL,2,'Subject for Phone Call','2023-02-24 04:11:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (256,NULL,22,'Subject for Print/Merge Document','2023-07-07 17:55:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (257,NULL,56,'Subject for Interview','2023-03-22 10:47:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (258,NULL,2,'Subject for Phone Call','2022-11-02 09:03:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (259,NULL,1,'Subject for Meeting','2023-02-09 05:38:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (260,NULL,1,'Subject for Meeting','2023-03-07 12:07:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (261,NULL,56,'Subject for Interview','2023-08-15 14:21:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (262,NULL,1,'Subject for Meeting','2023-09-03 05:13:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (263,NULL,9,'Subject for Tell a Friend','2022-11-14 10:34:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (264,NULL,56,'Subject for Interview','2023-07-14 11:07:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (265,NULL,22,'Subject for Print/Merge Document','2023-03-15 16:50:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (266,NULL,9,'Subject for Tell a Friend','2023-07-01 22:05:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (267,NULL,22,'Subject for Print/Merge Document','2023-08-11 20:00:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (268,NULL,1,'Subject for Meeting','2022-12-07 10:05:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (269,NULL,56,'Subject for Interview','2022-09-29 08:53:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (270,NULL,9,'Subject for Tell a Friend','2023-06-16 23:51:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (271,NULL,22,'Subject for Print/Merge Document','2023-08-30 04:36:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (272,NULL,22,'Subject for Print/Merge Document','2023-04-21 15:42:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (273,NULL,2,'Subject for Phone Call','2023-01-25 09:44:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (274,NULL,1,'Subject for Meeting','2023-01-06 00:24:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (275,NULL,9,'Subject for Tell a Friend','2022-10-21 16:30:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (276,NULL,9,'Subject for Tell a Friend','2023-01-20 19:35:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (277,NULL,1,'Subject for Meeting','2023-08-29 15:44:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (278,NULL,1,'Subject for Meeting','2023-08-05 08:42:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (279,NULL,9,'Subject for Tell a Friend','2023-04-18 05:53:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (280,NULL,2,'Subject for Phone Call','2023-08-09 15:29:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (281,NULL,56,'Subject for Interview','2023-03-13 04:45:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (282,NULL,22,'Subject for Print/Merge Document','2022-10-23 18:16:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (283,NULL,9,'Subject for Tell a Friend','2023-08-06 05:45:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (284,NULL,9,'Subject for Tell a Friend','2023-03-08 18:54:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (285,NULL,2,'Subject for Phone Call','2023-08-10 18:47:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (286,NULL,56,'Subject for Interview','2023-06-10 11:44:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (287,NULL,22,'Subject for Print/Merge Document','2022-10-10 10:58:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (288,NULL,22,'Subject for Print/Merge Document','2023-01-14 05:46:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (289,NULL,1,'Subject for Meeting','2022-11-23 19:59:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (290,NULL,56,'Subject for Interview','2022-09-21 22:20:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (291,NULL,56,'Subject for Interview','2022-12-07 14:32:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (292,NULL,56,'Subject for Interview','2023-04-13 01:40:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (293,NULL,1,'Subject for Meeting','2023-08-09 23:19:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (294,NULL,9,'Subject for Tell a Friend','2023-03-31 20:36:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (295,NULL,2,'Subject for Phone Call','2023-06-05 05:28:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (296,NULL,22,'Subject for Print/Merge Document','2023-03-11 12:51:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (297,NULL,2,'Subject for Phone Call','2022-11-06 11:46:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (298,NULL,56,'Subject for Interview','2023-07-22 23:27:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (299,NULL,1,'Subject for Meeting','2023-03-21 17:17:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (300,NULL,1,'Subject for Meeting','2023-01-17 12:50:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (301,NULL,1,'Subject for Meeting','2023-07-12 12:13:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (302,NULL,56,'Subject for Interview','2022-11-11 00:59:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (303,NULL,56,'Subject for Interview','2022-10-17 15:48:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (304,NULL,1,'Subject for Meeting','2023-05-24 02:20:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (305,NULL,1,'Subject for Meeting','2022-12-28 01:38:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (306,NULL,2,'Subject for Phone Call','2023-03-11 21:15:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (307,NULL,9,'Subject for Tell a Friend','2022-12-12 14:28:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (308,NULL,1,'Subject for Meeting','2023-03-24 15:21:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (309,NULL,56,'Subject for Interview','2023-03-17 22:15:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (310,NULL,56,'Subject for Interview','2022-10-05 02:17:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (311,NULL,9,'Subject for Tell a Friend','2023-07-23 19:34:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (312,NULL,22,'Subject for Print/Merge Document','2023-02-19 01:09:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (313,NULL,56,'Subject for Interview','2022-10-17 17:14:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (314,NULL,22,'Subject for Print/Merge Document','2023-02-21 03:36:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (315,NULL,22,'Subject for Print/Merge Document','2022-12-22 23:39:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (316,NULL,1,'Subject for Meeting','2023-01-22 10:31:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (317,NULL,56,'Subject for Interview','2023-01-27 07:55:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (318,NULL,22,'Subject for Print/Merge Document','2023-06-23 20:50:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (319,NULL,22,'Subject for Print/Merge Document','2023-07-10 23:33:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (320,NULL,56,'Subject for Interview','2022-10-23 11:39:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (321,NULL,2,'Subject for Phone Call','2022-12-04 22:44:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (322,NULL,22,'Subject for Print/Merge Document','2023-05-06 05:54:57',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (323,NULL,2,'Subject for Phone Call','2023-05-31 20:18:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (324,NULL,22,'Subject for Print/Merge Document','2023-03-06 22:53:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (325,NULL,1,'Subject for Meeting','2023-06-12 18:14:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (326,NULL,56,'Subject for Interview','2022-09-30 18:03:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (327,NULL,1,'Subject for Meeting','2022-12-05 12:41:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (328,NULL,9,'Subject for Tell a Friend','2022-09-25 05:35:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (329,NULL,1,'Subject for Meeting','2023-08-06 08:47:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (330,NULL,56,'Subject for Interview','2022-11-18 20:18:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (331,NULL,2,'Subject for Phone Call','2022-09-25 15:02:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (332,NULL,1,'Subject for Meeting','2022-10-11 22:05:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (333,NULL,9,'Subject for Tell a Friend','2022-10-31 18:45:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (334,NULL,9,'Subject for Tell a Friend','2022-11-17 05:45:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (335,NULL,56,'Subject for Interview','2022-09-19 22:23:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (336,NULL,2,'Subject for Phone Call','2023-01-07 03:43:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (337,NULL,56,'Subject for Interview','2023-04-30 04:40:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (338,NULL,9,'Subject for Tell a Friend','2022-10-01 11:29:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (339,NULL,22,'Subject for Print/Merge Document','2023-04-14 12:17:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (340,NULL,22,'Subject for Print/Merge Document','2022-11-05 11:35:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:57','2023-09-19 09:27:57'), - (341,NULL,2,'Subject for Phone Call','2023-03-12 21:19:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (342,NULL,22,'Subject for Print/Merge Document','2023-06-13 14:50:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (343,NULL,56,'Subject for Interview','2023-09-12 17:17:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (344,NULL,56,'Subject for Interview','2023-02-14 12:44:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (345,NULL,22,'Subject for Print/Merge Document','2022-12-02 00:21:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (346,NULL,56,'Subject for Interview','2023-02-17 23:24:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (347,NULL,56,'Subject for Interview','2023-04-23 15:15:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (348,NULL,22,'Subject for Print/Merge Document','2023-09-08 10:57:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (349,NULL,1,'Subject for Meeting','2023-07-06 02:24:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (350,NULL,2,'Subject for Phone Call','2023-07-05 17:38:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (351,NULL,9,'Subject for Tell a Friend','2023-07-12 19:38:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (352,NULL,22,'Subject for Print/Merge Document','2022-10-30 08:38:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (353,NULL,2,'Subject for Phone Call','2023-04-17 13:23:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (354,NULL,22,'Subject for Print/Merge Document','2023-08-31 19:52:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (355,NULL,9,'Subject for Tell a Friend','2022-12-19 12:36:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (356,NULL,1,'Subject for Meeting','2023-03-14 16:56:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (357,NULL,1,'Subject for Meeting','2022-10-09 23:29:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (358,NULL,2,'Subject for Phone Call','2022-11-14 13:06:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (359,NULL,2,'Subject for Phone Call','2023-08-13 18:04:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (360,NULL,22,'Subject for Print/Merge Document','2023-06-11 06:27:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (361,NULL,22,'Subject for Print/Merge Document','2023-08-20 04:05:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (362,NULL,1,'Subject for Meeting','2023-07-19 09:34:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (363,NULL,2,'Subject for Phone Call','2023-03-03 09:27:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (364,NULL,9,'Subject for Tell a Friend','2023-01-07 20:20:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (365,NULL,9,'Subject for Tell a Friend','2023-08-26 02:45:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (366,NULL,2,'Subject for Phone Call','2022-10-25 21:04:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (367,NULL,2,'Subject for Phone Call','2023-01-20 20:32:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (368,NULL,22,'Subject for Print/Merge Document','2023-02-17 12:57:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (369,NULL,1,'Subject for Meeting','2023-04-07 15:28:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (370,NULL,22,'Subject for Print/Merge Document','2023-01-12 01:27:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (371,NULL,1,'Subject for Meeting','2022-10-30 16:16:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (372,NULL,9,'Subject for Tell a Friend','2022-11-29 13:02:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (373,NULL,9,'Subject for Tell a Friend','2022-09-19 18:34:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (374,NULL,56,'Subject for Interview','2023-07-23 07:04:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (375,NULL,9,'Subject for Tell a Friend','2023-08-30 17:32:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (376,NULL,56,'Subject for Interview','2022-09-21 12:14:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (377,NULL,9,'Subject for Tell a Friend','2023-07-28 13:49:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (378,NULL,9,'Subject for Tell a Friend','2023-06-06 02:40:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (379,NULL,9,'Subject for Tell a Friend','2023-06-23 17:13:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (380,NULL,56,'Subject for Interview','2022-10-12 04:23:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (381,NULL,56,'Subject for Interview','2023-06-06 04:24:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (382,NULL,2,'Subject for Phone Call','2022-10-21 04:40:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (383,NULL,2,'Subject for Phone Call','2022-10-02 01:41:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (384,NULL,9,'Subject for Tell a Friend','2023-04-14 03:06:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (385,NULL,9,'Subject for Tell a Friend','2022-10-24 01:51:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (386,NULL,56,'Subject for Interview','2023-08-29 11:57:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (387,NULL,56,'Subject for Interview','2022-12-21 14:04:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (388,NULL,9,'Subject for Tell a Friend','2022-11-09 14:58:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (389,NULL,56,'Subject for Interview','2022-10-03 02:59:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (390,NULL,56,'Subject for Interview','2023-07-08 04:02:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (391,NULL,1,'Subject for Meeting','2023-07-23 08:33:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (392,NULL,2,'Subject for Phone Call','2022-12-01 18:26:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (393,NULL,56,'Subject for Interview','2023-04-22 16:26:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (394,NULL,56,'Subject for Interview','2023-06-21 18:47:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (395,NULL,56,'Subject for Interview','2023-07-31 16:40:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (396,NULL,2,'Subject for Phone Call','2023-06-21 11:46:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (397,NULL,56,'Subject for Interview','2023-07-23 11:07:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (398,NULL,2,'Subject for Phone Call','2022-10-27 03:34:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (399,NULL,2,'Subject for Phone Call','2023-07-17 18:55:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (400,NULL,2,'Subject for Phone Call','2023-04-20 21:20:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (401,NULL,22,'Subject for Print/Merge Document','2023-09-08 16:34:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (402,NULL,9,'Subject for Tell a Friend','2023-06-21 03:54:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (403,NULL,1,'Subject for Meeting','2023-04-30 00:27:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (404,NULL,2,'Subject for Phone Call','2022-12-25 00:12:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (405,NULL,22,'Subject for Print/Merge Document','2023-05-26 12:19:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (406,NULL,56,'Subject for Interview','2022-11-14 15:21:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (407,NULL,2,'Subject for Phone Call','2022-12-03 05:12:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (408,NULL,22,'Subject for Print/Merge Document','2022-11-11 00:12:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (409,NULL,9,'Subject for Tell a Friend','2023-03-09 02:57:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (410,NULL,22,'Subject for Print/Merge Document','2022-10-24 19:43:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (411,NULL,2,'Subject for Phone Call','2022-10-04 16:24:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (412,NULL,2,'Subject for Phone Call','2022-10-14 08:37:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (413,NULL,56,'Subject for Interview','2023-07-08 07:55:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (414,NULL,1,'Subject for Meeting','2023-03-07 06:02:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (415,NULL,56,'Subject for Interview','2022-10-04 04:49:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (416,NULL,56,'Subject for Interview','2022-10-29 20:24:03',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (417,NULL,2,'Subject for Phone Call','2022-11-06 14:58:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (418,NULL,2,'Subject for Phone Call','2023-05-13 09:56:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (419,NULL,9,'Subject for Tell a Friend','2023-06-09 12:38:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (420,NULL,2,'Subject for Phone Call','2023-07-30 01:46:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (421,NULL,56,'Subject for Interview','2023-01-10 13:46:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (422,NULL,1,'Subject for Meeting','2022-10-28 02:49:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (423,NULL,2,'Subject for Phone Call','2023-08-11 12:23:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:58','2023-09-19 09:27:58'), - (424,NULL,1,'Subject for Meeting','2022-12-23 11:08:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (425,NULL,22,'Subject for Print/Merge Document','2023-06-09 14:35:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (426,NULL,1,'Subject for Meeting','2022-12-09 08:28:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (427,NULL,2,'Subject for Phone Call','2023-01-11 09:21:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (428,NULL,9,'Subject for Tell a Friend','2023-07-23 09:38:51',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (429,NULL,9,'Subject for Tell a Friend','2022-11-22 10:48:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (430,NULL,56,'Subject for Interview','2023-09-02 04:19:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (431,NULL,56,'Subject for Interview','2023-07-12 15:41:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (432,NULL,22,'Subject for Print/Merge Document','2023-04-07 11:20:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (433,NULL,9,'Subject for Tell a Friend','2022-10-02 09:41:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (434,NULL,22,'Subject for Print/Merge Document','2023-08-29 06:50:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (435,NULL,22,'Subject for Print/Merge Document','2023-07-17 02:15:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (436,NULL,1,'Subject for Meeting','2023-07-02 17:42:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (437,NULL,56,'Subject for Interview','2023-01-29 22:53:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (438,NULL,56,'Subject for Interview','2023-03-20 12:44:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (439,NULL,56,'Subject for Interview','2023-06-20 23:32:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (440,NULL,9,'Subject for Tell a Friend','2023-01-30 13:10:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (441,NULL,22,'Subject for Print/Merge Document','2023-07-06 04:03:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (442,NULL,22,'Subject for Print/Merge Document','2023-06-15 04:06:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (443,NULL,9,'Subject for Tell a Friend','2023-03-16 20:25:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (444,NULL,56,'Subject for Interview','2023-09-04 06:30:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (445,NULL,9,'Subject for Tell a Friend','2023-05-21 21:24:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (446,NULL,9,'Subject for Tell a Friend','2023-03-16 21:35:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (447,NULL,22,'Subject for Print/Merge Document','2022-11-03 23:01:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (448,NULL,22,'Subject for Print/Merge Document','2023-02-22 20:37:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (449,NULL,56,'Subject for Interview','2023-06-08 23:18:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (450,NULL,9,'Subject for Tell a Friend','2023-08-21 19:10:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (451,1,6,'$ 125 April Mailer 1','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (452,2,6,'$ 50 Online: Save the Penguins','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (453,3,6,'£ 25 April Mailer 1','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (454,4,6,'$ 50 Online: Save the Penguins','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (455,5,6,'$ 50 Online: Save the Penguins','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (456,6,6,'$ 500 April Mailer 1','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (457,7,6,'$ 1750 Online: Save the Penguins','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (458,8,6,'$ 50 Online: Save the Penguins','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (459,9,6,'$ 10 Online: Help CiviCRM','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (460,10,6,'$ 250 Online: Help CiviCRM','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (461,11,6,'¥ 500 ','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (462,12,6,'$ 50 Online: Save the Penguins','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (463,13,6,'$ 50 ','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (464,14,6,'$ 50 ','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (465,15,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (466,16,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (467,17,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (468,18,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (469,19,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (470,20,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (471,21,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (472,22,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (473,23,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (474,24,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (475,25,6,'$ 25 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (476,26,6,'$ 10 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (477,27,6,'$ 10 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (478,28,6,'$ 10 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (479,29,6,'$ 10 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (480,30,6,'$ 10 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (481,31,6,'€ 5 Recurring contribution','2023-11-19 09:27:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (482,1,7,'General','2023-09-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (483,2,7,'Student','2023-09-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (484,3,7,'General','2023-09-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (485,4,7,'Student','2023-09-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (486,5,7,'General','2021-08-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (487,6,7,'Student','2023-09-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (488,7,7,'General','2023-09-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (489,8,7,'Student','2023-09-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (490,9,7,'General','2023-09-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (491,10,7,'General','2021-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,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (492,11,7,'Lifetime','2023-09-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (493,12,7,'Student','2023-09-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (494,13,7,'General','2023-09-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (495,14,7,'Student','2023-09-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (496,15,7,'General','2021-05-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (497,16,7,'Student','2023-09-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (498,17,7,'General','2023-09-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (499,18,7,'Student','2023-09-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (500,19,7,'General','2023-09-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (501,20,7,'General','2021-04-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (502,21,7,'General','2023-08-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (503,22,7,'Lifetime','2023-08-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (504,23,7,'General','2023-08-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (505,24,7,'Student','2023-08-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (506,25,7,'Student','2022-08-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (507,26,7,'Student','2023-08-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (508,27,7,'General','2023-08-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (509,28,7,'Student','2023-08-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (510,29,7,'General','2023-08-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (511,30,7,'General','2021-01-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (513,33,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (515,35,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (516,36,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (517,37,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (519,39,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (523,43,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (525,45,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (528,48,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (530,50,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (531,51,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (532,52,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (534,54,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (536,56,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (538,58,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (540,60,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (541,61,6,'$ 100.00 - General Membership: Offline signup','2023-09-19 09:27:59',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:27:59','2023-09-19 09:27:59'), - (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (593,63,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (594,64,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (596,66,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (597,67,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (598,68,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (599,69,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (600,70,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (603,73,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (604,74,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (605,75,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (607,77,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (608,78,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (609,79,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (610,80,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (614,84,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (615,85,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (616,86,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (618,88,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (619,89,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (620,90,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (622,92,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (623,93,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (624,94,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (625,95,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (627,97,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (628,98,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (629,99,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (630,100,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (632,102,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (634,104,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (635,105,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (636,106,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (637,107,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (639,109,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (640,110,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'), - (642,112,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-19 09:28:00',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-19 09:28:00','2023-09-19 09:28:00'); + (1,NULL,56,'Subject for Interview','2023-01-28 07:18:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (2,NULL,2,'Subject for Phone Call','2022-11-20 11:02:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (3,NULL,56,'Subject for Interview','2023-08-12 12:22:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (4,NULL,9,'Subject for Tell a Friend','2023-04-08 21:35:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (5,NULL,56,'Subject for Interview','2023-02-10 15:32:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (6,NULL,22,'Subject for Print/Merge Document','2023-08-18 18:03:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (7,NULL,2,'Subject for Phone Call','2023-07-04 18:36:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (8,NULL,1,'Subject for Meeting','2023-01-10 01:20:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (9,NULL,56,'Subject for Interview','2023-07-13 16:12:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (10,NULL,9,'Subject for Tell a Friend','2023-01-03 03:32:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (11,NULL,56,'Subject for Interview','2023-09-24 11:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (12,NULL,22,'Subject for Print/Merge Document','2023-04-05 10:50:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (13,NULL,2,'Subject for Phone Call','2023-01-11 06:46:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (14,NULL,2,'Subject for Phone Call','2023-04-24 05:54:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (15,NULL,9,'Subject for Tell a Friend','2023-01-27 11:35:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (16,NULL,22,'Subject for Print/Merge Document','2023-05-11 06:04:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (17,NULL,56,'Subject for Interview','2023-01-07 04:56:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (18,NULL,9,'Subject for Tell a Friend','2023-07-25 18:23:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (19,NULL,22,'Subject for Print/Merge Document','2023-08-11 13:34:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (20,NULL,56,'Subject for Interview','2023-07-18 06:51:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (21,NULL,9,'Subject for Tell a Friend','2023-05-13 21:41:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (22,NULL,2,'Subject for Phone Call','2023-02-01 08:50:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (23,NULL,22,'Subject for Print/Merge Document','2022-11-10 01:22:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (24,NULL,2,'Subject for Phone Call','2022-12-25 06:38:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (25,NULL,22,'Subject for Print/Merge Document','2022-11-17 02:00:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (26,NULL,1,'Subject for Meeting','2023-04-18 02:08:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (27,NULL,1,'Subject for Meeting','2022-12-24 01:00:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (28,NULL,56,'Subject for Interview','2022-10-25 16:52:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (29,NULL,1,'Subject for Meeting','2023-03-28 07:38:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (30,NULL,1,'Subject for Meeting','2023-02-02 08:32:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (31,NULL,22,'Subject for Print/Merge Document','2023-04-10 19:32:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (32,NULL,2,'Subject for Phone Call','2023-06-04 02:52:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (33,NULL,56,'Subject for Interview','2023-08-05 07:39:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (34,NULL,56,'Subject for Interview','2023-08-15 07:38:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (35,NULL,9,'Subject for Tell a Friend','2022-12-10 19:32:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (36,NULL,1,'Subject for Meeting','2023-04-27 05:55:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (37,NULL,56,'Subject for Interview','2023-05-20 09:05:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (38,NULL,56,'Subject for Interview','2023-08-18 15:55:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (39,NULL,1,'Subject for Meeting','2023-07-11 19:34:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (40,NULL,56,'Subject for Interview','2023-06-02 18:40:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (41,NULL,1,'Subject for Meeting','2023-04-13 14:53:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (42,NULL,56,'Subject for Interview','2023-03-28 17:34:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (43,NULL,1,'Subject for Meeting','2023-04-05 05:15:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (44,NULL,9,'Subject for Tell a Friend','2023-07-06 13:57:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (45,NULL,9,'Subject for Tell a Friend','2023-01-31 09:04:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (46,NULL,9,'Subject for Tell a Friend','2023-04-25 16:17:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (47,NULL,9,'Subject for Tell a Friend','2023-05-30 05:53:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (48,NULL,56,'Subject for Interview','2023-10-10 17:41:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (49,NULL,9,'Subject for Tell a Friend','2023-07-17 21:39:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (50,NULL,56,'Subject for Interview','2022-11-25 16:55:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (51,NULL,2,'Subject for Phone Call','2023-03-11 04:03:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (52,NULL,2,'Subject for Phone Call','2023-04-05 07:44:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (53,NULL,56,'Subject for Interview','2022-11-18 19:31:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (54,NULL,2,'Subject for Phone Call','2023-09-24 16:24:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (55,NULL,56,'Subject for Interview','2023-03-19 13:52:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (56,NULL,2,'Subject for Phone Call','2023-08-05 08:56:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (57,NULL,1,'Subject for Meeting','2022-11-24 17:31:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (58,NULL,1,'Subject for Meeting','2023-06-19 05:08:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (59,NULL,9,'Subject for Tell a Friend','2023-04-30 14:26:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (60,NULL,9,'Subject for Tell a Friend','2023-01-06 06:12:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (61,NULL,22,'Subject for Print/Merge Document','2023-07-06 00:30:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (62,NULL,22,'Subject for Print/Merge Document','2023-04-15 07:38:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (63,NULL,1,'Subject for Meeting','2023-10-05 10:45:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (64,NULL,56,'Subject for Interview','2022-12-05 10:31:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (65,NULL,22,'Subject for Print/Merge Document','2023-07-24 15:11:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (66,NULL,9,'Subject for Tell a Friend','2023-03-18 19:51:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (67,NULL,56,'Subject for Interview','2022-11-02 04:03:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (68,NULL,1,'Subject for Meeting','2023-03-30 17:13:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (69,NULL,9,'Subject for Tell a Friend','2022-10-29 01:38:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (70,NULL,9,'Subject for Tell a Friend','2023-06-16 20:18:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (71,NULL,56,'Subject for Interview','2023-07-07 21:11:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (72,NULL,2,'Subject for Phone Call','2023-07-20 12:28:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (73,NULL,1,'Subject for Meeting','2022-11-20 11:28:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (74,NULL,1,'Subject for Meeting','2023-08-22 10:20:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (75,NULL,56,'Subject for Interview','2023-05-30 15:20:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (76,NULL,9,'Subject for Tell a Friend','2023-01-20 20:14:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (77,NULL,22,'Subject for Print/Merge Document','2023-02-22 22:30:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (78,NULL,2,'Subject for Phone Call','2023-04-27 15:51:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (79,NULL,22,'Subject for Print/Merge Document','2023-04-12 11:36:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (80,NULL,2,'Subject for Phone Call','2023-01-13 18:53:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (81,NULL,9,'Subject for Tell a Friend','2022-12-06 12:21:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (82,NULL,2,'Subject for Phone Call','2023-07-11 09:11:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (83,NULL,1,'Subject for Meeting','2023-01-10 18:04:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (84,NULL,9,'Subject for Tell a Friend','2023-02-23 03:27:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (85,NULL,1,'Subject for Meeting','2022-10-20 07:12:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (86,NULL,22,'Subject for Print/Merge Document','2023-09-20 09:49:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (87,NULL,9,'Subject for Tell a Friend','2023-07-02 01:53:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (88,NULL,1,'Subject for Meeting','2023-02-23 15:55:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (89,NULL,9,'Subject for Tell a Friend','2023-09-30 05:08:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (90,NULL,2,'Subject for Phone Call','2023-06-21 10:13:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (91,NULL,9,'Subject for Tell a Friend','2023-06-07 10:29:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (92,NULL,56,'Subject for Interview','2023-04-13 12:15:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (93,NULL,2,'Subject for Phone Call','2023-08-06 10:00:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (94,NULL,1,'Subject for Meeting','2023-09-02 20:56:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (95,NULL,22,'Subject for Print/Merge Document','2023-09-22 17:25:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (96,NULL,22,'Subject for Print/Merge Document','2023-06-20 22:56:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (97,NULL,9,'Subject for Tell a Friend','2023-04-07 04:20:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (98,NULL,9,'Subject for Tell a Friend','2022-12-28 20:40:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (99,NULL,22,'Subject for Print/Merge Document','2023-05-22 12:18:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (100,NULL,9,'Subject for Tell a Friend','2023-04-22 12:57:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (101,NULL,9,'Subject for Tell a Friend','2023-07-30 02:38:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (102,NULL,1,'Subject for Meeting','2023-02-05 15:02:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (103,NULL,2,'Subject for Phone Call','2023-10-05 19:01:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (104,NULL,22,'Subject for Print/Merge Document','2022-12-15 14:17:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (105,NULL,56,'Subject for Interview','2023-08-06 05:49:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (106,NULL,1,'Subject for Meeting','2023-06-28 12:13:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (107,NULL,9,'Subject for Tell a Friend','2023-06-18 05:01:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (108,NULL,2,'Subject for Phone Call','2023-01-17 20:31:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (109,NULL,2,'Subject for Phone Call','2023-02-22 07:30:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (110,NULL,1,'Subject for Meeting','2023-01-12 22:14:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (111,NULL,2,'Subject for Phone Call','2022-10-27 21:05:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (112,NULL,9,'Subject for Tell a Friend','2022-11-24 01:21:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (113,NULL,22,'Subject for Print/Merge Document','2023-08-23 04:50:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (114,NULL,22,'Subject for Print/Merge Document','2023-06-10 11:07:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (115,NULL,1,'Subject for Meeting','2022-12-29 18:56:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (116,NULL,56,'Subject for Interview','2023-07-09 19:12:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (117,NULL,2,'Subject for Phone Call','2023-03-31 20:50:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (118,NULL,22,'Subject for Print/Merge Document','2023-06-11 15:03:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (119,NULL,2,'Subject for Phone Call','2023-09-15 06:13:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (120,NULL,56,'Subject for Interview','2022-11-22 03:03:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (121,NULL,9,'Subject for Tell a Friend','2023-04-12 15:52:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (122,NULL,9,'Subject for Tell a Friend','2023-09-15 22:56:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (123,NULL,1,'Subject for Meeting','2022-11-13 13:46:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (124,NULL,9,'Subject for Tell a Friend','2022-11-28 15:24:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (125,NULL,22,'Subject for Print/Merge Document','2022-10-29 13:57:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (126,NULL,1,'Subject for Meeting','2023-01-18 09:48:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (127,NULL,9,'Subject for Tell a Friend','2023-08-10 19:20:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (128,NULL,22,'Subject for Print/Merge Document','2023-01-17 11:26:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (129,NULL,56,'Subject for Interview','2023-06-23 12:17:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (130,NULL,2,'Subject for Phone Call','2022-12-02 03:08:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (131,NULL,2,'Subject for Phone Call','2022-12-29 13:20:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (132,NULL,9,'Subject for Tell a Friend','2023-08-02 20:11:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (133,NULL,1,'Subject for Meeting','2023-03-22 16:57:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (134,NULL,9,'Subject for Tell a Friend','2023-04-17 15:37:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (135,NULL,1,'Subject for Meeting','2023-03-08 17:15:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (136,NULL,22,'Subject for Print/Merge Document','2023-10-11 21:48:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (137,NULL,1,'Subject for Meeting','2022-11-17 22:03:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (138,NULL,1,'Subject for Meeting','2022-11-04 12:09:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (139,NULL,9,'Subject for Tell a Friend','2023-09-14 02:11:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (140,NULL,9,'Subject for Tell a Friend','2023-06-28 15:21:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (141,NULL,9,'Subject for Tell a Friend','2023-04-16 14:15:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (142,NULL,2,'Subject for Phone Call','2023-01-16 19:23:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (143,NULL,2,'Subject for Phone Call','2023-04-28 06:08:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (144,NULL,22,'Subject for Print/Merge Document','2023-04-13 21:34:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (145,NULL,22,'Subject for Print/Merge Document','2023-02-03 15:37:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (146,NULL,56,'Subject for Interview','2023-10-13 19:47:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (147,NULL,2,'Subject for Phone Call','2022-10-31 05:23:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (148,NULL,1,'Subject for Meeting','2022-12-25 10:29:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (149,NULL,9,'Subject for Tell a Friend','2023-05-05 12:11:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (150,NULL,56,'Subject for Interview','2023-02-05 16:40:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (151,NULL,22,'Subject for Print/Merge Document','2023-04-30 21:22:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (152,NULL,9,'Subject for Tell a Friend','2022-11-27 00:25:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (153,NULL,9,'Subject for Tell a Friend','2023-03-15 12:18:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (154,NULL,56,'Subject for Interview','2023-08-09 21:15:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (155,NULL,56,'Subject for Interview','2023-06-11 02:19:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (156,NULL,1,'Subject for Meeting','2023-08-12 20:43:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (157,NULL,9,'Subject for Tell a Friend','2023-04-18 10:13:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (158,NULL,22,'Subject for Print/Merge Document','2023-10-11 14:43:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (159,NULL,22,'Subject for Print/Merge Document','2022-12-18 18:44:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (160,NULL,56,'Subject for Interview','2023-01-29 07:45:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (161,NULL,1,'Subject for Meeting','2023-03-28 17:25:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (162,NULL,56,'Subject for Interview','2023-06-06 05:10:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (163,NULL,56,'Subject for Interview','2023-05-31 15:47:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (164,NULL,1,'Subject for Meeting','2023-09-09 23:05:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (165,NULL,2,'Subject for Phone Call','2023-01-18 21:13:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (166,NULL,9,'Subject for Tell a Friend','2022-11-07 03:35:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (167,NULL,1,'Subject for Meeting','2023-09-27 21:37:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (168,NULL,22,'Subject for Print/Merge Document','2023-03-20 19:33:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (169,NULL,1,'Subject for Meeting','2023-05-22 07:09:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (170,NULL,1,'Subject for Meeting','2023-01-31 20:37:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (171,NULL,56,'Subject for Interview','2023-03-27 22:15:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (172,NULL,56,'Subject for Interview','2023-09-10 00:35:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (173,NULL,2,'Subject for Phone Call','2023-01-18 10:22:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (174,NULL,2,'Subject for Phone Call','2023-09-30 10:05:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (175,NULL,22,'Subject for Print/Merge Document','2023-08-04 09:39:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (176,NULL,2,'Subject for Phone Call','2023-10-04 22:34:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (177,NULL,9,'Subject for Tell a Friend','2023-01-18 01:38:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (178,NULL,1,'Subject for Meeting','2023-01-13 03:05:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (179,NULL,1,'Subject for Meeting','2023-02-27 08:32:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (180,NULL,22,'Subject for Print/Merge Document','2023-03-22 06:23:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (181,NULL,22,'Subject for Print/Merge Document','2023-05-28 17:07:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (182,NULL,9,'Subject for Tell a Friend','2023-06-29 04:23:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (183,NULL,9,'Subject for Tell a Friend','2023-03-10 17:42:52',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (184,NULL,1,'Subject for Meeting','2023-07-21 14:33:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (185,NULL,2,'Subject for Phone Call','2023-08-25 09:42:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (186,NULL,22,'Subject for Print/Merge Document','2023-06-09 21:22:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (187,NULL,2,'Subject for Phone Call','2023-02-17 05:11:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (188,NULL,22,'Subject for Print/Merge Document','2023-01-20 14:56:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (189,NULL,2,'Subject for Phone Call','2023-02-18 04:16:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (190,NULL,56,'Subject for Interview','2023-09-15 04:51:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (191,NULL,56,'Subject for Interview','2023-05-18 10:15:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (192,NULL,2,'Subject for Phone Call','2023-08-24 14:18:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (193,NULL,56,'Subject for Interview','2023-07-24 17:06:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (194,NULL,22,'Subject for Print/Merge Document','2023-01-11 22:31:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (195,NULL,1,'Subject for Meeting','2023-07-20 21:50:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (196,NULL,2,'Subject for Phone Call','2022-12-23 09:49:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (197,NULL,1,'Subject for Meeting','2023-04-03 03:48:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (198,NULL,22,'Subject for Print/Merge Document','2023-10-05 00:47:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (199,NULL,2,'Subject for Phone Call','2022-12-21 22:57:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (200,NULL,1,'Subject for Meeting','2023-03-18 18:10:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (201,NULL,22,'Subject for Print/Merge Document','2022-11-03 12:41:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (202,NULL,1,'Subject for Meeting','2023-04-12 11:44:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (203,NULL,9,'Subject for Tell a Friend','2022-12-11 19:13:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (204,NULL,2,'Subject for Phone Call','2023-08-30 16:45:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (205,NULL,1,'Subject for Meeting','2022-12-09 17:17:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (206,NULL,56,'Subject for Interview','2023-04-19 10:23:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (207,NULL,1,'Subject for Meeting','2023-10-11 04:54:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (208,NULL,2,'Subject for Phone Call','2023-03-21 08:37:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (209,NULL,22,'Subject for Print/Merge Document','2023-10-19 11:38:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (210,NULL,9,'Subject for Tell a Friend','2023-09-04 13:22:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (211,NULL,56,'Subject for Interview','2022-11-27 20:44:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (212,NULL,9,'Subject for Tell a Friend','2023-07-18 23:16:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (213,NULL,9,'Subject for Tell a Friend','2023-03-09 01:27:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (214,NULL,22,'Subject for Print/Merge Document','2023-07-14 10:44:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (215,NULL,56,'Subject for Interview','2023-02-14 13:52:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (216,NULL,2,'Subject for Phone Call','2023-05-14 01:19:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (217,NULL,9,'Subject for Tell a Friend','2023-08-20 00:24:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (218,NULL,2,'Subject for Phone Call','2023-10-08 12:40:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (219,NULL,22,'Subject for Print/Merge Document','2023-09-27 08:07:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (220,NULL,22,'Subject for Print/Merge Document','2023-06-15 22:18:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (221,NULL,2,'Subject for Phone Call','2023-07-26 10:30:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (222,NULL,22,'Subject for Print/Merge Document','2023-07-05 23:47:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (223,NULL,56,'Subject for Interview','2023-06-06 11:19:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (224,NULL,2,'Subject for Phone Call','2023-09-28 21:58:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (225,NULL,2,'Subject for Phone Call','2023-05-01 14:42:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (226,NULL,2,'Subject for Phone Call','2023-04-27 15:47:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (227,NULL,2,'Subject for Phone Call','2023-07-15 16:21:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (228,NULL,22,'Subject for Print/Merge Document','2022-12-18 21:57:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (229,NULL,2,'Subject for Phone Call','2023-03-30 16:21:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (230,NULL,56,'Subject for Interview','2023-05-17 20:25:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (231,NULL,2,'Subject for Phone Call','2023-07-01 09:12:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (232,NULL,22,'Subject for Print/Merge Document','2022-11-21 12:23:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (233,NULL,2,'Subject for Phone Call','2023-03-13 01:16:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (234,NULL,2,'Subject for Phone Call','2023-03-14 01:57:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (235,NULL,22,'Subject for Print/Merge Document','2022-11-23 06:12:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (236,NULL,22,'Subject for Print/Merge Document','2022-12-07 23:01:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (237,NULL,2,'Subject for Phone Call','2023-01-15 06:14:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (238,NULL,56,'Subject for Interview','2023-01-16 08:23:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (239,NULL,9,'Subject for Tell a Friend','2022-12-07 10:43:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (240,NULL,22,'Subject for Print/Merge Document','2023-05-08 04:39:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (241,NULL,2,'Subject for Phone Call','2023-10-10 02:46:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (242,NULL,2,'Subject for Phone Call','2023-05-18 21:32:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (243,NULL,56,'Subject for Interview','2023-10-13 02:52:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (244,NULL,9,'Subject for Tell a Friend','2023-06-27 21:02:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (245,NULL,22,'Subject for Print/Merge Document','2023-04-12 21:44:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (246,NULL,9,'Subject for Tell a Friend','2023-10-14 10:54:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (247,NULL,1,'Subject for Meeting','2023-04-03 17:03:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (248,NULL,56,'Subject for Interview','2023-01-22 22:01:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (249,NULL,1,'Subject for Meeting','2023-04-26 08:05:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (250,NULL,56,'Subject for Interview','2023-08-11 04:25:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (251,NULL,1,'Subject for Meeting','2022-12-30 21:51:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (252,NULL,1,'Subject for Meeting','2023-01-25 10:14:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (253,NULL,2,'Subject for Phone Call','2022-11-01 18:09:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (254,NULL,56,'Subject for Interview','2023-06-12 16:29:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (255,NULL,22,'Subject for Print/Merge Document','2023-02-28 03:19:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (256,NULL,2,'Subject for Phone Call','2022-10-21 00:42:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (257,NULL,56,'Subject for Interview','2023-07-14 18:30:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (258,NULL,1,'Subject for Meeting','2022-10-25 15:02:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (259,NULL,2,'Subject for Phone Call','2023-02-26 01:39:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (260,NULL,22,'Subject for Print/Merge Document','2023-09-17 11:38:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (261,NULL,56,'Subject for Interview','2023-04-16 00:07:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (262,NULL,9,'Subject for Tell a Friend','2023-08-28 14:11:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (263,NULL,2,'Subject for Phone Call','2022-12-27 01:04:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (264,NULL,1,'Subject for Meeting','2023-02-27 01:06:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (265,NULL,22,'Subject for Print/Merge Document','2023-09-12 12:49:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (266,NULL,1,'Subject for Meeting','2023-08-30 05:46:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (267,NULL,1,'Subject for Meeting','2023-01-01 15:56:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (268,NULL,56,'Subject for Interview','2023-06-08 03:14:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (269,NULL,22,'Subject for Print/Merge Document','2023-01-31 08:43:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (270,NULL,2,'Subject for Phone Call','2023-08-19 09:42:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (271,NULL,1,'Subject for Meeting','2023-04-12 17:16:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (272,NULL,1,'Subject for Meeting','2023-03-17 07:33:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (273,NULL,22,'Subject for Print/Merge Document','2023-08-05 04:42:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (274,NULL,2,'Subject for Phone Call','2023-02-05 15:55:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (275,NULL,56,'Subject for Interview','2023-06-27 05:26:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (276,NULL,22,'Subject for Print/Merge Document','2022-11-21 12:00:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (277,NULL,56,'Subject for Interview','2022-12-22 19:24:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (278,NULL,9,'Subject for Tell a Friend','2023-02-25 12:54:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (279,NULL,56,'Subject for Interview','2023-03-01 22:20:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (280,NULL,56,'Subject for Interview','2023-03-23 11:08:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (281,NULL,22,'Subject for Print/Merge Document','2023-03-19 15:41:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (282,NULL,2,'Subject for Phone Call','2023-06-02 15:40:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (283,NULL,56,'Subject for Interview','2023-09-06 16:30:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (284,NULL,22,'Subject for Print/Merge Document','2023-10-10 16:32:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (285,NULL,9,'Subject for Tell a Friend','2023-02-28 19:45:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (286,NULL,22,'Subject for Print/Merge Document','2022-12-26 02:09:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (287,NULL,22,'Subject for Print/Merge Document','2023-07-13 21:30:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (288,NULL,9,'Subject for Tell a Friend','2023-07-16 01:07:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (289,NULL,1,'Subject for Meeting','2023-08-13 21:27:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (290,NULL,22,'Subject for Print/Merge Document','2023-03-02 19:56:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (291,NULL,2,'Subject for Phone Call','2023-01-01 14:09:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (292,NULL,22,'Subject for Print/Merge Document','2023-10-16 22:20:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (293,NULL,9,'Subject for Tell a Friend','2023-05-05 13:31:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (294,NULL,2,'Subject for Phone Call','2023-10-03 22:00:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (295,NULL,9,'Subject for Tell a Friend','2023-01-11 13:50:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (296,NULL,56,'Subject for Interview','2023-01-16 19:28:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (297,NULL,22,'Subject for Print/Merge Document','2023-06-15 12:50:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (298,NULL,2,'Subject for Phone Call','2023-04-29 20:32:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (299,NULL,2,'Subject for Phone Call','2023-10-15 18:59:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (300,NULL,56,'Subject for Interview','2023-10-13 22:52:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (301,NULL,9,'Subject for Tell a Friend','2023-09-27 00:31:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (302,NULL,9,'Subject for Tell a Friend','2023-07-15 16:34:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (303,NULL,1,'Subject for Meeting','2023-04-28 02:22:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (304,NULL,1,'Subject for Meeting','2023-10-03 04:09:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (305,NULL,22,'Subject for Print/Merge Document','2023-09-21 21:04:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (306,NULL,2,'Subject for Phone Call','2023-06-28 08:32:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (307,NULL,2,'Subject for Phone Call','2023-08-14 03:30:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (308,NULL,1,'Subject for Meeting','2023-08-24 07:35:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (309,NULL,1,'Subject for Meeting','2023-03-31 17:30:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (310,NULL,9,'Subject for Tell a Friend','2023-03-18 03:05:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (311,NULL,56,'Subject for Interview','2023-09-14 11:25:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (312,NULL,1,'Subject for Meeting','2022-12-03 09:06:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (313,NULL,2,'Subject for Phone Call','2022-11-10 18:33:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (314,NULL,1,'Subject for Meeting','2023-06-24 17:25:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (315,NULL,9,'Subject for Tell a Friend','2023-04-16 13:23:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (316,NULL,1,'Subject for Meeting','2023-01-08 21:38:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (317,NULL,22,'Subject for Print/Merge Document','2023-09-15 04:05:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (318,NULL,22,'Subject for Print/Merge Document','2022-11-05 22:37:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (319,NULL,56,'Subject for Interview','2023-02-18 23:04:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (320,NULL,2,'Subject for Phone Call','2023-04-13 05:04:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (321,NULL,1,'Subject for Meeting','2022-12-23 14:36:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (322,NULL,2,'Subject for Phone Call','2023-03-27 13:06:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (323,NULL,22,'Subject for Print/Merge Document','2023-10-13 13:41:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (324,NULL,1,'Subject for Meeting','2022-12-18 06:44:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (325,NULL,9,'Subject for Tell a Friend','2023-09-27 09:17:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (326,NULL,2,'Subject for Phone Call','2022-11-25 00:12:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (327,NULL,9,'Subject for Tell a Friend','2023-05-30 22:40:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (328,NULL,22,'Subject for Print/Merge Document','2023-03-04 08:35:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (329,NULL,2,'Subject for Phone Call','2023-07-17 20:37:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (330,NULL,2,'Subject for Phone Call','2023-05-18 15:25:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (331,NULL,1,'Subject for Meeting','2023-08-28 20:59:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (332,NULL,56,'Subject for Interview','2023-02-02 10:27:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (333,NULL,2,'Subject for Phone Call','2023-05-08 12:15:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (334,NULL,22,'Subject for Print/Merge Document','2023-07-05 23:57:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (335,NULL,9,'Subject for Tell a Friend','2023-04-22 00:38:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (336,NULL,22,'Subject for Print/Merge Document','2023-09-18 03:30:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (337,NULL,1,'Subject for Meeting','2023-05-27 13:34:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (338,NULL,1,'Subject for Meeting','2023-10-07 12:37:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (339,NULL,56,'Subject for Interview','2023-08-19 11:51:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (340,NULL,22,'Subject for Print/Merge Document','2022-12-07 15:32:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (341,NULL,56,'Subject for Interview','2022-12-26 16:49:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (342,NULL,1,'Subject for Meeting','2023-10-17 16:01:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (343,NULL,1,'Subject for Meeting','2023-03-08 02:19:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (344,NULL,1,'Subject for Meeting','2022-12-03 10:41:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (345,NULL,56,'Subject for Interview','2023-07-17 02:33:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (346,NULL,9,'Subject for Tell a Friend','2023-08-09 00:03:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (347,NULL,22,'Subject for Print/Merge Document','2022-12-23 20:14:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (348,NULL,2,'Subject for Phone Call','2022-11-26 17:02:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (349,NULL,1,'Subject for Meeting','2023-01-06 13:45:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (350,NULL,9,'Subject for Tell a Friend','2023-01-07 04:38:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (351,NULL,9,'Subject for Tell a Friend','2022-11-17 20:19:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (352,NULL,1,'Subject for Meeting','2023-06-13 01:46:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (353,NULL,9,'Subject for Tell a Friend','2023-07-15 01:01:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (354,NULL,22,'Subject for Print/Merge Document','2022-11-26 12:28:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (355,NULL,56,'Subject for Interview','2023-09-24 01:51:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (356,NULL,56,'Subject for Interview','2023-03-09 21:25:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (357,NULL,56,'Subject for Interview','2023-08-31 17:13:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (358,NULL,9,'Subject for Tell a Friend','2023-01-25 06:43:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (359,NULL,9,'Subject for Tell a Friend','2023-07-09 15:00:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (360,NULL,2,'Subject for Phone Call','2023-03-24 13:07:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (361,NULL,2,'Subject for Phone Call','2023-01-06 00:44:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (362,NULL,22,'Subject for Print/Merge Document','2023-02-28 14:22:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (363,NULL,1,'Subject for Meeting','2023-07-16 22:37:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (364,NULL,2,'Subject for Phone Call','2023-02-27 03:37:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (365,NULL,9,'Subject for Tell a Friend','2023-03-09 07:05:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (366,NULL,9,'Subject for Tell a Friend','2022-11-25 06:45:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (367,NULL,56,'Subject for Interview','2022-10-23 21:44:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (368,NULL,56,'Subject for Interview','2023-02-15 20:58:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (369,NULL,2,'Subject for Phone Call','2023-07-05 12:36:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (370,NULL,56,'Subject for Interview','2023-01-30 04:14:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (371,NULL,56,'Subject for Interview','2023-02-04 00:39:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (372,NULL,2,'Subject for Phone Call','2023-01-22 17:08:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (373,NULL,56,'Subject for Interview','2023-09-08 17:44:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (374,NULL,2,'Subject for Phone Call','2023-06-08 10:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (375,NULL,9,'Subject for Tell a Friend','2023-05-22 12:06:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (376,NULL,1,'Subject for Meeting','2023-06-26 15:56:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (377,NULL,56,'Subject for Interview','2023-04-09 02:38:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (378,NULL,1,'Subject for Meeting','2023-06-13 08:39:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (379,NULL,9,'Subject for Tell a Friend','2023-10-04 01:52:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (380,NULL,2,'Subject for Phone Call','2023-04-22 17:07:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (381,NULL,1,'Subject for Meeting','2023-04-11 06:02:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (382,NULL,9,'Subject for Tell a Friend','2023-08-31 12:23:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (383,NULL,1,'Subject for Meeting','2023-05-13 06:14:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (384,NULL,56,'Subject for Interview','2022-11-18 20:29:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (385,NULL,1,'Subject for Meeting','2022-11-25 17:43:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (386,NULL,56,'Subject for Interview','2023-03-11 23:21:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (387,NULL,22,'Subject for Print/Merge Document','2023-08-14 20:54:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (388,NULL,9,'Subject for Tell a Friend','2023-04-29 19:20:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (389,NULL,56,'Subject for Interview','2022-11-08 09:06:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (390,NULL,56,'Subject for Interview','2022-11-06 00:01:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (391,NULL,1,'Subject for Meeting','2023-06-22 20:01:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (392,NULL,2,'Subject for Phone Call','2022-11-11 00:49:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (393,NULL,56,'Subject for Interview','2023-01-13 17:40:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (394,NULL,9,'Subject for Tell a Friend','2022-10-24 14:27:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (395,NULL,56,'Subject for Interview','2023-04-13 12:59:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (396,NULL,9,'Subject for Tell a Friend','2022-11-08 09:12:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (397,NULL,9,'Subject for Tell a Friend','2023-09-11 05:18:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (398,NULL,2,'Subject for Phone Call','2023-01-01 21:32:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (399,NULL,1,'Subject for Meeting','2023-08-14 15:06:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (400,NULL,1,'Subject for Meeting','2023-08-27 23:03:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (401,NULL,22,'Subject for Print/Merge Document','2023-08-01 13:19:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (402,NULL,22,'Subject for Print/Merge Document','2023-05-08 04:21:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (403,NULL,2,'Subject for Phone Call','2023-10-06 13:00:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (404,NULL,9,'Subject for Tell a Friend','2023-09-26 09:13:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (405,NULL,2,'Subject for Phone Call','2022-11-15 13:35:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (406,NULL,56,'Subject for Interview','2023-08-25 03:26:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (407,NULL,2,'Subject for Phone Call','2022-12-08 23:34:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (408,NULL,2,'Subject for Phone Call','2023-05-06 20:50:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (409,NULL,2,'Subject for Phone Call','2023-09-24 15:02:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (410,NULL,56,'Subject for Interview','2023-04-21 22:45:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (411,NULL,2,'Subject for Phone Call','2022-11-01 08:39:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (412,NULL,2,'Subject for Phone Call','2022-12-07 11:45:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (413,NULL,2,'Subject for Phone Call','2023-04-15 21:27:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (414,NULL,9,'Subject for Tell a Friend','2023-07-27 13:46:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (415,NULL,9,'Subject for Tell a Friend','2022-12-12 21:57:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (416,NULL,1,'Subject for Meeting','2023-03-20 22:51:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (417,NULL,2,'Subject for Phone Call','2023-01-05 11:13:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (418,NULL,1,'Subject for Meeting','2023-02-26 07:15:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (419,NULL,9,'Subject for Tell a Friend','2023-09-06 21:13:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (420,NULL,56,'Subject for Interview','2023-08-04 14:49:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (421,NULL,22,'Subject for Print/Merge Document','2022-12-18 22:31:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (422,NULL,9,'Subject for Tell a Friend','2023-05-05 15:54:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (423,NULL,22,'Subject for Print/Merge Document','2023-10-06 16:01:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (424,NULL,22,'Subject for Print/Merge Document','2023-09-17 17:41:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (425,NULL,1,'Subject for Meeting','2023-07-27 15:31:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (426,NULL,2,'Subject for Phone Call','2022-12-29 04:01:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (427,NULL,2,'Subject for Phone Call','2023-03-18 03:08:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (428,NULL,1,'Subject for Meeting','2023-01-07 19:33:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (429,NULL,9,'Subject for Tell a Friend','2023-02-09 06:51:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (430,NULL,1,'Subject for Meeting','2023-03-21 08:02:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (431,NULL,9,'Subject for Tell a Friend','2023-08-26 02:15:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (432,NULL,22,'Subject for Print/Merge Document','2023-01-24 03:44:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (433,NULL,56,'Subject for Interview','2023-06-28 04:52:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (434,NULL,22,'Subject for Print/Merge Document','2023-07-01 19:22:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (435,NULL,1,'Subject for Meeting','2022-12-22 01:36:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (436,NULL,56,'Subject for Interview','2023-09-05 08:47:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (437,NULL,22,'Subject for Print/Merge Document','2023-04-26 21:27:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (438,NULL,9,'Subject for Tell a Friend','2023-04-27 17:26:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (439,NULL,22,'Subject for Print/Merge Document','2022-12-15 06:05:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (440,NULL,1,'Subject for Meeting','2023-08-09 02:06:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (441,NULL,2,'Subject for Phone Call','2023-08-29 10:06:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (442,NULL,1,'Subject for Meeting','2023-09-28 05:02:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (443,NULL,9,'Subject for Tell a Friend','2023-02-04 21:14:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (444,NULL,56,'Subject for Interview','2023-09-05 14:01:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (445,NULL,1,'Subject for Meeting','2023-09-19 00:06:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (446,NULL,1,'Subject for Meeting','2023-01-14 07:13:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (447,NULL,2,'Subject for Phone Call','2022-12-15 22:57:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (448,NULL,9,'Subject for Tell a Friend','2023-06-25 08:38:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (449,NULL,56,'Subject for Interview','2023-05-30 00:30:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (450,NULL,22,'Subject for Print/Merge Document','2023-02-23 12:29:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (451,1,6,'$ 125 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (452,2,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (453,3,6,'£ 25 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (454,4,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (455,5,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (456,6,6,'$ 500 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (457,7,6,'$ 1750 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (458,8,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (459,9,6,'$ 10 Online: Help CiviCRM','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (460,10,6,'$ 250 Online: Help CiviCRM','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (461,11,6,'¥ 500 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (462,12,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (463,13,6,'$ 50 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (464,14,6,'$ 50 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (465,15,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (466,16,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (467,17,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (468,18,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (469,19,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (470,20,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (471,21,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (472,22,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (473,23,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (474,24,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (475,25,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (476,26,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (477,27,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (478,28,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (479,29,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (480,30,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (481,31,6,'€ 5 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (482,1,7,'General','2023-10-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (483,2,7,'Student','2023-10-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (484,3,7,'General','2023-10-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (485,4,7,'Student','2023-10-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (486,5,7,'Student','2022-10-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (487,6,7,'Student','2023-10-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (488,7,7,'General','2023-10-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (489,8,7,'Student','2023-10-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (490,9,7,'General','2023-10-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (491,10,7,'Student','2022-10-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (492,11,7,'Lifetime','2023-10-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (493,12,7,'Student','2023-10-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (494,13,7,'General','2023-10-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (495,14,7,'Student','2023-10-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (496,15,7,'General','2021-06-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (497,16,7,'Student','2023-10-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (498,17,7,'General','2023-10-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (499,18,7,'Student','2023-10-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (500,19,7,'General','2023-10-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (501,20,7,'General','2021-05-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (502,21,7,'General','2023-09-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (503,22,7,'Lifetime','2023-09-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (504,23,7,'General','2023-09-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (505,24,7,'Student','2023-09-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (506,25,7,'General','2021-04-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (507,26,7,'Student','2023-09-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (508,27,7,'General','2023-09-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (509,28,7,'Student','2023-09-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (510,29,7,'General','2023-09-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (511,30,7,'General','2021-03-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (513,33,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (515,35,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (516,36,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (517,37,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (519,39,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (522,42,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (523,43,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (525,45,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (528,48,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (530,50,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (531,51,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (532,52,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (533,53,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (534,54,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (536,56,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (538,58,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (540,60,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (541,61,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (594,64,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (595,65,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (597,67,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (599,69,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (600,70,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (605,75,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (608,78,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (612,82,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (614,84,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (616,86,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (617,87,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (618,88,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (622,92,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (623,93,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (626,96,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (627,97,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (628,98,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (629,99,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (630,100,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (631,101,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (632,102,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (634,104,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (635,105,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (636,106,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (637,107,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (639,109,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (642,112,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'); /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */; UNLOCK TABLES; @@ -732,946 +733,964 @@ UNLOCK TABLES; LOCK TABLES `civicrm_activity_contact` WRITE; /*!40000 ALTER TABLE `civicrm_activity_contact` DISABLE KEYS */; INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES - (254,145,1,3), - (355,202,1,3), - (641,364,1,3), - (300,172,2,3), - (433,247,2,3), - (718,404,2,3), - (800,451,2,2), - (31,17,3,3), - (75,41,3,3), - (337,192,3,3), - (361,205,3,3), - (590,334,3,3), - (639,363,3,3), - (84,46,4,3), - (207,118,4,3), - (335,191,4,3), - (455,259,4,3), - (735,414,4,3), - (801,452,4,2), - (804,455,4,2), - (396,225,5,3), - (755,424,5,3), - (841,492,5,2), - (861,522,5,2), - (13,7,6,3), - (451,257,6,3), - (631,358,6,3), - (697,393,6,3), - (802,453,6,2), - (918,569,6,2), - (251,143,7,3), - (504,286,7,3), - (760,427,7,3), - (258,147,8,3), - (442,252,8,3), - (803,454,8,2), - (910,561,8,2), - (27,15,9,3), - (318,182,9,3), - (643,365,9,3), - (714,402,10,3), - (919,570,10,2), - (143,79,11,3), - (424,242,11,3), - (471,268,11,3), - (279,159,12,3), - (311,178,12,3), - (463,263,12,3), - (554,313,12,3), - (569,323,12,3), - (602,341,12,3), - (629,357,12,3), - (749,421,12,3), - (325,186,13,3), - (457,260,13,3), - (743,418,13,3), - (850,501,13,2), - (862,531,13,2), - (249,142,14,3), - (737,415,14,3), - (939,590,14,2), - (170,95,15,3), - (289,166,15,3), - (349,199,16,3), - (440,251,16,3), - (473,269,16,3), - (655,372,16,3), - (805,456,16,2), - (907,558,16,2), - (15,8,17,3), - (190,106,17,3), - (211,120,17,3), - (222,126,17,3), - (413,235,17,3), - (549,310,17,3), - (779,438,17,3), - (51,28,18,3), - (65,36,18,3), - (95,52,18,3), - (132,73,19,3), - (256,146,19,3), - (572,325,19,3), - (588,333,19,3), - (758,426,19,3), - (806,457,19,2), - (82,45,20,3), - (386,220,20,3), - (929,580,20,2), - (378,216,21,3), - (709,399,21,3), - (86,47,22,3), - (268,153,22,3), - (431,246,22,3), - (699,394,22,3), - (745,419,22,3), - (797,449,23,3), - (922,573,23,2), - (101,55,24,3), - (448,255,24,3), - (531,301,24,3), - (726,409,24,3), - (781,439,24,3), - (63,35,25,3), - (931,582,25,2), - (97,53,26,3), - (17,9,27,3), - (145,80,27,3), - (498,283,27,3), - (928,579,27,2), - (77,42,28,3), - (236,134,30,3), - (411,234,30,3), - (508,289,30,3), - (679,384,31,3), - (230,131,32,3), - (685,387,32,3), - (812,463,32,2), - (813,464,32,2), - (227,129,33,3), - (400,227,33,3), - (510,290,33,3), - (468,266,34,3), - (543,307,34,3), - (809,460,34,2), - (837,488,34,2), - (863,518,34,2), - (908,559,34,2), - (138,76,35,3), - (485,276,35,3), - (547,309,35,3), - (671,380,35,3), - (733,413,35,3), - (90,49,36,3), - (188,105,36,3), - (192,107,36,3), - (419,239,36,3), - (533,302,36,3), - (840,491,36,2), - (864,521,36,2), - (20,11,37,3), - (136,75,37,3), - (582,330,37,3), - (707,398,37,3), - (150,83,38,3), - (241,137,38,3), - (272,155,38,3), - (417,238,38,3), - (446,254,38,3), - (625,355,38,3), - (627,356,38,3), - (461,262,39,3), - (729,411,39,3), - (909,560,39,2), - (128,71,40,3), - (220,125,41,3), - (479,273,41,3), - (775,436,41,3), - (905,556,41,2), - (753,423,42,3), - (88,48,43,3), - (113,63,43,3), - (121,67,43,3), - (316,181,43,3), - (768,431,43,3), - (791,445,43,3), - (811,462,43,2), - (645,366,44,3), - (793,446,44,3), - (375,214,45,3), - (402,228,45,3), - (245,140,46,3), - (247,141,46,3), - (265,151,46,2), - (266,152,46,2), - (267,153,46,2), - (269,154,46,2), - (271,155,46,2), - (273,156,46,2), - (274,157,46,2), - (276,158,46,2), - (278,159,46,2), - (280,160,46,2), - (282,161,46,2), - (283,162,46,2), - (284,163,46,2), - (286,164,46,2), - (287,165,46,2), - (288,166,46,2), - (290,167,46,2), - (292,168,46,2), - (294,169,46,2), - (295,170,46,2), - (297,171,46,2), - (299,172,46,2), - (301,173,46,2), - (303,174,46,2), - (304,174,46,3), - (305,175,46,2), - (307,176,46,2), - (309,177,46,2), - (310,178,46,2), - (312,179,46,2), - (314,180,46,2), - (315,181,46,2), - (317,182,46,2), - (319,183,46,2), - (320,184,46,2), - (322,185,46,2), - (324,186,46,2), - (326,187,46,2), - (328,188,46,2), - (330,189,46,2), - (332,190,46,2), - (334,191,46,2), - (336,192,46,2), - (338,193,46,2), - (339,194,46,2), - (341,195,46,2), - (342,196,46,2), - (344,197,46,2), - (346,198,46,2), - (348,199,46,2), - (350,200,46,2), - (352,201,46,2), - (354,202,46,2), - (356,203,46,2), - (358,204,46,2), - (360,205,46,2), - (362,206,46,2), - (364,207,46,2), - (366,208,46,2), - (368,209,46,2), - (369,210,46,2), - (370,211,46,2), - (371,212,46,2), - (373,213,46,2), - (374,214,46,2), - (376,215,46,2), - (377,216,46,2), - (379,217,46,2), - (381,218,46,2), - (383,219,46,2), - (385,220,46,2), - (387,221,46,2), - (389,222,46,2), - (391,223,46,2), - (393,224,46,2), - (395,225,46,2), - (397,226,46,2), - (399,227,46,2), - (401,228,46,2), - (403,229,46,2), - (405,230,46,2), - (406,231,46,2), - (407,232,46,2), - (409,233,46,2), - (410,234,46,2), - (412,235,46,2), - (414,236,46,2), - (415,237,46,2), - (416,238,46,2), - (418,239,46,2), - (420,240,46,2), - (421,241,46,2), - (423,242,46,2), - (425,243,46,2), - (427,244,46,2), - (429,245,46,2), - (430,246,46,2), - (432,247,46,2), - (434,248,46,2), - (436,249,46,2), - (437,250,46,2), - (439,251,46,2), - (441,252,46,2), - (443,253,46,2), - (444,253,46,3), - (445,254,46,2), - (447,255,46,2), - (449,256,46,2), - (450,257,46,2), - (452,258,46,2), - (454,259,46,2), - (456,260,46,2), - (458,261,46,2), - (460,262,46,2), - (462,263,46,2), - (464,264,46,2), - (466,265,46,2), - (467,266,46,2), - (469,267,46,2), - (470,268,46,2), - (472,269,46,2), - (474,270,46,2), - (476,271,46,2), - (477,272,46,2), - (478,273,46,2), - (480,274,46,2), - (482,275,46,2), - (484,276,46,2), - (486,277,46,2), - (488,278,46,2), - (490,279,46,2), - (492,280,46,2), - (494,281,46,2), - (496,282,46,2), - (497,283,46,2), - (499,284,46,2), - (501,285,46,2), - (503,286,46,2), - (505,287,46,2), - (506,288,46,2), - (507,289,46,2), - (509,290,46,2), - (511,291,46,2), - (513,292,46,2), - (515,293,46,2), - (517,294,46,2), - (519,295,46,2), - (521,296,46,2), - (522,297,46,2), - (524,298,46,2), - (526,299,46,2), - (528,300,46,2), - (766,430,46,3), - (168,94,48,3), - (277,158,48,3), - (367,208,48,3), - (380,217,48,3), - (689,389,48,3), - (747,420,48,3), - (896,547,48,2), - (340,194,49,3), - (353,201,49,3), - (382,218,49,3), - (493,280,50,3), - (580,329,50,3), - (633,359,50,3), - (512,291,51,3), - (677,383,51,3), - (209,119,52,3), - (659,374,52,3), - (762,428,52,3), - (45,25,53,3), - (69,38,53,3), - (224,127,53,3), - (384,219,53,3), - (489,278,53,3), - (514,292,53,3), - (849,500,53,2), - (865,530,53,2), - (914,565,53,2), - (61,34,54,3), - (615,349,54,3), - (902,553,54,2), - (291,167,55,3), - (308,176,55,3), - (313,179,55,3), - (359,204,55,3), - (518,294,55,3), - (537,304,55,3), - (545,308,55,3), - (838,489,55,2), - (866,519,55,2), - (911,562,55,2), - (25,14,56,3), - (55,30,56,3), - (119,66,56,3), - (422,241,56,3), - (598,338,56,3), - (923,574,56,2), - (428,244,57,3), - (584,331,57,3), - (657,373,57,3), - (35,19,58,3), - (205,117,58,3), - (108,59,59,3), - (343,196,59,3), - (351,200,59,3), - (814,465,59,2), - (815,466,59,2), - (816,467,59,2), - (817,468,59,2), - (818,469,59,2), - (819,470,59,2), - (820,471,59,2), - (821,472,59,2), - (822,473,59,2), - (823,474,59,2), - (824,475,59,2), - (426,243,60,3), - (619,351,60,3), - (930,581,60,2), - (123,68,61,3), - (125,69,61,3), - (157,87,61,3), - (195,109,61,3), - (260,148,61,3), - (262,149,61,3), - (270,154,61,3), - (475,270,61,3), - (669,379,61,3), - (215,122,62,3), - (541,306,62,3), - (647,367,62,3), - (23,13,63,3), - (408,232,63,3), - (831,482,63,2), - (867,512,63,2), - (610,346,64,3), - (612,347,64,3), - (935,586,64,2), - (33,18,65,3), - (159,88,65,3), - (232,132,65,3), - (392,223,65,3), - (323,185,66,3), - (363,206,66,3), - (789,444,66,3), - (921,572,66,2), - (174,97,67,3), - (783,440,67,3), - (4,2,68,3), - (42,23,68,3), - (200,113,68,3), - (327,187,68,3), - (365,207,68,3), - (622,353,68,3), - (927,578,68,2), - (186,104,69,3), - (329,188,69,3), - (495,281,69,3), - (58,32,70,3), - (306,175,70,3), - (372,212,70,3), - (924,575,70,2), - (810,461,71,2), - (900,551,71,2), - (40,22,72,3), - (67,37,72,3), - (926,577,72,2), - (115,64,73,3), - (162,90,73,3), - (172,96,73,3), - (183,102,73,3), - (388,221,73,3), - (435,248,73,3), - (617,350,73,3), - (764,429,73,3), - (6,3,74,3), - (321,184,74,3), - (481,274,74,3), - (564,320,74,3), - (723,407,74,3), - (586,332,75,3), - (605,343,75,3), - (155,86,76,3), - (357,203,76,3), - (438,250,76,3), - (459,261,76,3), - (661,375,76,3), - (687,388,76,3), - (771,433,76,3), - (333,190,77,3), - (516,293,77,3), - (558,316,77,3), - (560,317,77,3), - (578,328,77,3), - (673,381,77,3), - (739,416,77,3), - (79,43,78,3), - (239,136,78,3), - (293,168,78,3), - (302,173,78,3), - (296,170,79,3), - (650,369,79,3), - (711,400,79,3), - (894,545,79,2), - (29,16,80,3), - (177,99,80,3), - (394,224,80,3), - (594,336,80,3), - (741,417,80,3), - (73,40,81,3), - (218,124,81,3), - (667,378,81,3), - (731,412,81,3), - (99,54,82,3), - (701,395,82,3), - (807,458,82,2), - (852,503,82,2), - (868,533,82,2), - (281,160,83,3), - (404,229,83,3), - (453,258,83,3), - (465,264,83,3), - (502,285,83,3), - (703,396,83,3), - (2,1,84,3), - (8,4,84,3), - (153,85,84,3), - (398,226,84,3), - (596,337,84,3), - (675,382,84,3), - (857,508,84,2), - (869,538,84,2), - (934,585,84,2), - (47,26,85,3), - (529,300,85,3), - (607,344,85,3), - (213,121,86,3), - (285,163,86,3), - (653,371,86,3), - (148,82,87,3), - (483,275,87,3), - (799,450,87,3), - (920,571,87,2), - (487,277,88,3), - (566,321,88,3), - (574,326,88,3), - (665,377,88,3), - (787,443,88,3), - (71,39,89,3), - (695,392,89,3), - (331,189,90,3), - (390,222,90,3), - (592,335,90,3), - (901,552,90,2), - (49,27,91,3), - (347,198,91,3), - (691,390,91,3), - (53,29,92,3), - (103,56,92,3), - (264,150,92,3), - (491,279,92,3), - (523,297,92,3), - (551,311,92,3), - (681,385,92,3), - (808,459,92,2), - (527,299,93,3), - (777,437,93,3), - (134,74,94,3), - (275,157,94,3), - (539,305,94,3), - (637,362,94,3), - (751,422,94,3), - (345,197,95,3), - (705,397,95,3), - (130,72,96,3), - (181,101,96,3), - (535,303,96,3), - (11,6,97,3), - (576,327,97,3), - (38,21,98,3), - (117,65,98,3), - (140,77,98,3), - (520,295,98,3), - (525,298,98,3), - (721,406,98,3), - (105,57,99,3), - (234,133,99,3), - (716,403,99,3), - (825,476,99,2), - (826,477,99,2), - (827,478,99,2), - (828,479,99,2), - (829,480,99,2), - (92,50,100,3), - (166,93,100,3), - (179,100,100,3), - (298,171,100,3), - (500,284,100,3), - (663,376,100,3), - (683,386,100,3), - (693,391,100,3), - (830,481,103,2), - (843,494,103,2), - (870,524,103,2), - (895,546,106,2), - (859,510,110,2), - (871,540,110,2), - (937,588,111,2), - (844,495,113,2), - (872,525,113,2), - (932,583,114,2), - (899,550,115,2), - (845,496,117,2), - (873,526,117,2), - (836,487,120,2), - (874,517,120,2), - (938,589,131,2), - (835,486,132,2), - (875,516,132,2), - (858,509,134,2), - (876,539,134,2), - (530,301,135,2), - (532,302,135,2), - (534,303,135,2), - (536,304,135,2), - (538,305,135,2), - (540,306,135,2), - (542,307,135,2), - (544,308,135,2), - (546,309,135,2), - (548,310,135,2), - (550,311,135,2), - (552,312,135,2), - (553,313,135,2), - (555,314,135,2), - (556,315,135,2), - (557,316,135,2), - (559,317,135,2), - (561,318,135,2), - (562,319,135,2), - (563,320,135,2), - (565,321,135,2), - (567,322,135,2), - (568,323,135,2), - (570,324,135,2), - (571,325,135,2), - (573,326,135,2), - (575,327,135,2), - (577,328,135,2), - (579,329,135,2), - (581,330,135,2), - (583,331,135,2), - (585,332,135,2), - (587,333,135,2), - (589,334,135,2), - (591,335,135,2), - (593,336,135,2), - (595,337,135,2), - (597,338,135,2), - (599,339,135,2), - (600,340,135,2), - (601,341,135,2), - (603,342,135,2), - (604,343,135,2), - (606,344,135,2), - (608,345,135,2), - (609,346,135,2), - (611,347,135,2), - (613,348,135,2), - (614,349,135,2), - (616,350,135,2), - (618,351,135,2), - (620,352,135,2), - (621,353,135,2), - (623,354,135,2), - (624,355,135,2), - (626,356,135,2), - (628,357,135,2), - (630,358,135,2), - (632,359,135,2), - (634,360,135,2), - (635,361,135,2), - (636,362,135,2), - (638,363,135,2), - (640,364,135,2), - (642,365,135,2), - (644,366,135,2), - (646,367,135,2), - (648,368,135,2), - (649,369,135,2), - (651,370,135,2), - (652,371,135,2), - (654,372,135,2), - (656,373,135,2), - (658,374,135,2), - (660,375,135,2), - (662,376,135,2), - (664,377,135,2), - (666,378,135,2), - (668,379,135,2), - (670,380,135,2), - (672,381,135,2), - (674,382,135,2), - (676,383,135,2), - (678,384,135,2), - (680,385,135,2), - (682,386,135,2), - (684,387,135,2), - (686,388,135,2), - (688,389,135,2), - (690,390,135,2), - (692,391,135,2), - (694,392,135,2), - (696,393,135,2), - (698,394,135,2), - (700,395,135,2), - (702,396,135,2), - (704,397,135,2), - (706,398,135,2), - (708,399,135,2), - (710,400,135,2), - (712,401,135,2), - (713,402,135,2), - (715,403,135,2), - (717,404,135,2), - (719,405,135,2), - (720,406,135,2), - (722,407,135,2), - (724,408,135,2), - (725,409,135,2), - (727,410,135,2), - (728,411,135,2), - (730,412,135,2), - (732,413,135,2), - (734,414,135,2), - (736,415,135,2), - (738,416,135,2), - (740,417,135,2), - (742,418,135,2), - (744,419,135,2), - (746,420,135,2), - (748,421,135,2), - (750,422,135,2), - (752,423,135,2), - (754,424,135,2), - (756,425,135,2), - (757,426,135,2), - (759,427,135,2), - (761,428,135,2), - (763,429,135,2), - (765,430,135,2), - (767,431,135,2), - (769,432,135,2), - (770,433,135,2), - (772,434,135,2), - (773,435,135,2), - (774,436,135,2), - (776,437,135,2), - (778,438,135,2), - (780,439,135,2), - (782,440,135,2), - (784,441,135,2), - (785,442,135,2), - (786,443,135,2), - (788,444,135,2), - (790,445,135,2), - (792,446,135,2), - (794,447,135,2), - (795,448,135,2), - (796,449,135,2), - (798,450,135,2), - (925,576,137,2), - (848,499,138,2), - (877,529,138,2), - (897,548,138,2), - (917,568,139,2), - (906,557,140,2), - (860,511,141,2), - (878,541,141,2), - (851,502,142,2), - (879,532,142,2), - (893,544,142,2), - (832,483,143,2), - (880,513,143,2), - (933,584,148,2), - (855,506,150,2), - (881,536,150,2), - (936,587,150,2), - (847,498,151,2), - (882,528,151,2), - (898,549,155,2), - (839,490,156,2), - (883,520,156,2), - (913,564,158,2), - (853,504,160,2), - (884,534,160,2), - (904,555,161,2), - (892,543,165,2), - (846,497,166,2), - (885,527,166,2), - (941,592,172,2), - (833,484,175,2), - (886,514,175,2), - (940,591,175,2), - (915,566,181,2), - (834,485,183,2), - (887,515,183,2), - (916,567,186,2), - (1,1,187,2), - (3,2,187,2), - (5,3,187,2), - (7,4,187,2), - (9,5,187,2), - (10,6,187,2), - (12,7,187,2), - (14,8,187,2), - (16,9,187,2), - (18,10,187,2), - (19,11,187,2), - (21,12,187,2), - (22,13,187,2), - (24,14,187,2), - (26,15,187,2), - (28,16,187,2), - (30,17,187,2), - (32,18,187,2), - (34,19,187,2), - (36,20,187,2), - (37,21,187,2), - (39,22,187,2), - (41,23,187,2), - (43,24,187,2), - (44,25,187,2), - (46,26,187,2), - (48,27,187,2), - (50,28,187,2), - (52,29,187,2), - (54,30,187,2), - (56,31,187,2), - (57,32,187,2), - (59,33,187,2), - (60,34,187,2), - (62,35,187,2), - (64,36,187,2), - (66,37,187,2), - (68,38,187,2), - (70,39,187,2), - (72,40,187,2), - (74,41,187,2), - (76,42,187,2), - (78,43,187,2), - (80,44,187,2), - (81,45,187,2), - (83,46,187,2), - (85,47,187,2), - (87,48,187,2), - (89,49,187,2), - (91,50,187,2), - (93,51,187,2), - (94,52,187,2), - (96,53,187,2), - (98,54,187,2), - (100,55,187,2), - (102,56,187,2), - (104,57,187,2), - (106,58,187,2), - (107,59,187,2), - (109,60,187,2), - (110,61,187,2), - (111,62,187,2), - (112,63,187,2), - (114,64,187,2), - (116,65,187,2), - (118,66,187,2), - (120,67,187,2), - (122,68,187,2), - (124,69,187,2), - (126,70,187,2), - (127,71,187,2), - (129,72,187,2), - (131,73,187,2), - (133,74,187,2), - (135,75,187,2), - (137,76,187,2), - (139,77,187,2), - (141,78,187,2), - (142,79,187,2), - (144,80,187,2), - (146,81,187,2), - (147,82,187,2), - (149,83,187,2), - (151,84,187,2), - (152,85,187,2), - (154,86,187,2), - (156,87,187,2), - (158,88,187,2), - (160,89,187,2), - (161,90,187,2), - (163,91,187,2), - (164,92,187,2), - (165,93,187,2), - (167,94,187,2), - (169,95,187,2), - (171,96,187,2), - (173,97,187,2), - (175,98,187,2), - (176,99,187,2), - (178,100,187,2), - (180,101,187,2), - (182,102,187,2), - (184,103,187,2), - (185,104,187,2), - (187,105,187,2), - (189,106,187,2), - (191,107,187,2), - (193,108,187,2), - (194,109,187,2), - (196,110,187,2), - (197,111,187,2), - (198,112,187,2), - (199,113,187,2), - (201,114,187,2), - (202,115,187,2), - (203,116,187,2), - (204,117,187,2), - (206,118,187,2), - (208,119,187,2), - (210,120,187,2), - (212,121,187,2), - (214,122,187,2), - (216,123,187,2), - (217,124,187,2), - (219,125,187,2), - (221,126,187,2), - (223,127,187,2), - (225,128,187,2), - (226,129,187,2), - (228,130,187,2), - (229,131,187,2), - (231,132,187,2), - (233,133,187,2), - (235,134,187,2), - (237,135,187,2), - (238,136,187,2), - (240,137,187,2), - (242,138,187,2), - (243,139,187,2), - (244,140,187,2), - (246,141,187,2), - (248,142,187,2), - (250,143,187,2), - (252,144,187,2), - (253,145,187,2), - (255,146,187,2), - (257,147,187,2), - (259,148,187,2), - (261,149,187,2), - (263,150,187,2), - (912,563,191,2), - (856,507,195,2), - (888,537,195,2), - (854,505,199,2), - (889,535,199,2), - (842,493,201,2), - (890,523,201,2), - (903,554,201,2); + (54,30,1,3), + (61,34,1,3), + (244,133,1,3), + (576,320,1,3), + (751,413,1,3), + (759,417,1,3), + (334,183,2,3), + (417,230,2,3), + (715,394,2,3), + (818,451,2,2), + (124,67,3,3), + (171,92,3,3), + (317,173,3,3), + (395,217,3,3), + (79,43,4,3), + (134,72,4,3), + (296,162,4,3), + (338,185,4,3), + (819,452,4,2), + (822,455,4,2), + (109,58,5,3), + (215,117,5,3), + (313,171,5,3), + (444,246,5,3), + (545,303,5,3), + (647,359,5,3), + (870,503,5,2), + (908,541,5,2), + (727,400,6,3), + (820,453,6,2), + (943,576,6,2), + (528,294,7,3), + (568,315,7,3), + (613,341,7,3), + (810,446,7,3), + (150,81,8,3), + (474,262,8,3), + (570,316,8,3), + (821,454,8,2), + (865,498,8,2), + (885,518,8,2), + (935,568,8,2), + (67,37,9,3), + (226,123,10,3), + (560,311,10,3), + (643,357,10,3), + (910,543,10,2), + (341,187,11,3), + (592,329,11,3), + (119,64,12,3), + (130,70,12,3), + (175,94,12,3), + (156,84,13,3), + (275,150,13,3), + (348,191,13,3), + (379,208,13,3), + (452,250,13,3), + (919,552,13,2), + (138,74,14,3), + (220,120,14,3), + (950,583,14,2), + (154,83,15,3), + (448,248,15,3), + (483,267,15,3), + (558,310,15,3), + (670,371,15,3), + (743,409,15,3), + (276,151,16,2), + (277,152,16,2), + (279,153,16,2), + (281,154,16,2), + (283,155,16,2), + (285,156,16,2), + (286,156,16,3), + (287,157,16,2), + (289,158,16,2), + (290,159,16,2), + (291,160,16,2), + (293,161,16,2), + (295,162,16,2), + (297,163,16,2), + (299,164,16,2), + (301,165,16,2), + (303,166,16,2), + (305,167,16,2), + (307,168,16,2), + (308,169,16,2), + (310,170,16,2), + (312,171,16,2), + (314,172,16,2), + (316,173,16,2), + (318,174,16,2), + (320,175,16,2), + (321,176,16,2), + (323,177,16,2), + (325,178,16,2), + (327,179,16,2), + (329,180,16,2), + (330,181,16,2), + (331,182,16,2), + (332,182,16,3), + (333,183,16,2), + (335,184,16,2), + (337,185,16,2), + (339,186,16,2), + (340,187,16,2), + (342,188,16,2), + (343,189,16,2), + (345,190,16,2), + (347,191,16,2), + (349,192,16,2), + (351,193,16,2), + (353,194,16,2), + (354,195,16,2), + (356,196,16,2), + (358,197,16,2), + (360,198,16,2), + (361,199,16,2), + (363,200,16,2), + (365,201,16,2), + (366,202,16,2), + (368,203,16,2), + (370,204,16,2), + (372,205,16,2), + (374,206,16,2), + (376,207,16,2), + (378,208,16,2), + (380,209,16,2), + (381,210,16,2), + (383,211,16,2), + (385,212,16,2), + (387,213,16,2), + (389,214,16,2), + (390,215,16,2), + (392,216,16,2), + (394,217,16,2), + (396,218,16,2), + (398,219,16,2), + (399,220,16,2), + (400,221,16,2), + (402,222,16,2), + (403,223,16,2), + (405,224,16,2), + (407,225,16,2), + (409,226,16,2), + (411,227,16,2), + (413,228,16,2), + (414,229,16,2), + (416,230,16,2), + (418,231,16,2), + (420,232,16,2), + (421,233,16,2), + (423,234,16,2), + (425,235,16,2), + (426,236,16,2), + (427,237,16,2), + (429,238,16,2), + (431,239,16,2), + (433,240,16,2), + (434,241,16,2), + (435,241,16,3), + (436,242,16,2), + (438,243,16,2), + (440,244,16,2), + (442,245,16,2), + (443,246,16,2), + (445,247,16,2), + (447,248,16,2), + (449,249,16,2), + (451,250,16,2), + (453,251,16,2), + (455,252,16,2), + (457,253,16,2), + (459,254,16,2), + (461,255,16,2), + (462,256,16,2), + (464,257,16,2), + (466,258,16,2), + (468,259,16,2), + (470,260,16,2), + (471,261,16,2), + (473,262,16,2), + (475,263,16,2), + (477,264,16,2), + (479,265,16,2), + (480,266,16,2), + (482,267,16,2), + (484,268,16,2), + (486,269,16,2), + (487,270,16,2), + (489,271,16,2), + (491,272,16,2), + (493,273,16,2), + (494,274,16,2), + (496,275,16,2), + (498,276,16,2), + (499,277,16,2), + (501,278,16,2), + (503,279,16,2), + (505,280,16,2), + (507,281,16,2), + (508,282,16,2), + (510,283,16,2), + (512,284,16,2), + (513,285,16,2), + (515,286,16,2), + (516,287,16,2), + (517,288,16,2), + (519,289,16,2), + (521,290,16,2), + (522,291,16,2), + (524,292,16,2), + (525,293,16,2), + (527,294,16,2), + (529,295,16,2), + (531,296,16,2), + (533,297,16,2), + (534,298,16,2), + (536,299,16,2), + (538,300,16,2), + (676,374,16,3), + (707,390,16,3), + (823,456,16,2), + (924,557,16,2), + (163,88,17,3), + (497,275,17,3), + (869,502,17,2), + (888,521,17,2), + (945,578,17,2), + (231,126,18,3), + (780,429,18,3), + (81,44,19,3), + (346,190,19,3), + (432,239,19,3), + (824,457,19,2), + (938,571,19,2), + (273,149,20,3), + (369,203,20,3), + (562,312,20,3), + (619,344,20,3), + (814,448,20,3), + (28,15,21,3), + (186,101,21,3), + (526,293,21,3), + (600,333,21,3), + (610,339,21,3), + (639,355,21,3), + (733,404,21,3), + (778,428,21,3), + (284,155,22,3), + (566,314,22,3), + (628,349,22,3), + (85,46,23,3), + (140,75,23,3), + (197,107,23,3), + (278,152,23,3), + (350,192,23,3), + (382,210,23,3), + (428,237,23,3), + (918,551,23,2), + (97,52,24,3), + (240,131,26,3), + (375,206,26,3), + (502,278,26,3), + (111,59,27,3), + (218,119,27,3), + (288,157,27,3), + (617,343,27,3), + (626,348,27,3), + (649,360,27,3), + (690,381,27,3), + (713,393,27,3), + (26,14,28,3), + (103,55,28,3), + (233,127,28,3), + (292,160,28,3), + (660,366,28,3), + (688,380,28,3), + (711,392,28,3), + (761,418,28,3), + (873,506,28,2), + (890,523,28,2), + (8,4,29,3), + (532,296,29,3), + (236,129,30,3), + (328,179,30,3), + (441,244,30,3), + (485,268,30,3), + (606,337,30,3), + (682,377,30,3), + (719,396,30,3), + (923,556,30,2), + (132,71,31,3), + (488,270,31,3), + (574,319,31,3), + (169,91,32,3), + (632,351,32,3), + (717,395,32,3), + (830,463,32,2), + (831,464,32,2), + (52,29,33,3), + (128,69,33,3), + (148,80,33,3), + (709,391,33,3), + (211,115,34,3), + (415,229,34,3), + (454,251,34,3), + (598,332,34,3), + (623,346,34,3), + (800,441,34,3), + (827,460,34,2), + (393,216,35,3), + (401,221,35,3), + (705,389,35,3), + (107,57,36,3), + (228,124,36,3), + (855,488,36,2), + (881,514,36,2), + (914,547,36,2), + (145,78,37,3), + (386,212,37,3), + (564,313,37,3), + (585,325,37,3), + (680,376,37,3), + (741,408,37,3), + (792,436,37,3), + (43,24,38,3), + (630,350,38,3), + (737,406,38,3), + (13,7,39,3), + (46,26,39,3), + (808,445,39,3), + (858,491,39,2), + (899,532,39,2), + (65,36,40,3), + (654,363,40,3), + (749,412,40,3), + (915,548,40,2), + (672,372,41,3), + (698,385,41,3), + (917,550,41,2), + (203,110,42,3), + (478,264,43,3), + (829,462,43,2), + (38,21,44,3), + (48,27,44,3), + (304,166,44,3), + (446,247,44,3), + (795,438,44,3), + (248,135,45,3), + (437,242,45,3), + (656,364,45,3), + (932,565,45,2), + (306,167,46,3), + (509,282,46,3), + (253,138,47,3), + (271,148,47,3), + (377,207,47,3), + (424,234,47,3), + (554,308,47,3), + (578,321,47,3), + (747,411,47,3), + (850,483,47,2), + (894,527,47,2), + (326,178,48,3), + (861,494,48,2), + (883,516,48,2), + (31,17,49,3), + (93,50,49,3), + (193,105,49,3), + (269,147,49,3), + (860,493,49,2), + (900,533,49,2), + (15,8,50,3), + (222,121,50,3), + (324,177,50,3), + (384,211,50,3), + (745,410,50,3), + (73,40,51,3), + (83,45,51,3), + (294,161,51,3), + (543,302,51,3), + (694,383,51,3), + (2,1,52,3), + (95,51,52,3), + (122,66,52,3), + (165,89,52,3), + (280,153,52,3), + (472,261,52,3), + (10,5,53,3), + (259,141,53,3), + (636,353,53,3), + (179,97,54,3), + (397,218,54,3), + (658,365,54,3), + (731,403,54,3), + (867,500,54,2), + (886,519,54,2), + (6,3,55,3), + (261,142,55,3), + (408,225,55,3), + (422,233,55,3), + (539,300,55,3), + (674,373,55,3), + (721,397,55,3), + (849,482,55,2), + (879,512,55,2), + (535,298,56,3), + (556,309,56,3), + (651,361,56,3), + (739,407,56,3), + (812,447,56,3), + (255,139,57,3), + (302,165,57,3), + (580,322,57,3), + (787,433,57,3), + (804,443,57,3), + (955,588,57,2), + (57,32,58,3), + (136,73,58,3), + (181,98,58,3), + (300,164,58,3), + (406,224,58,3), + (832,465,59,2), + (833,466,59,2), + (834,467,59,2), + (835,468,59,2), + (836,469,59,2), + (837,470,59,2), + (838,471,59,2), + (839,472,59,2), + (840,473,59,2), + (841,474,59,2), + (842,475,59,2), + (495,274,60,3), + (763,419,60,3), + (199,108,61,3), + (520,289,61,3), + (530,295,61,3), + (184,100,62,3), + (33,18,63,3), + (195,106,63,3), + (242,132,63,3), + (500,277,63,3), + (725,399,63,3), + (735,405,63,3), + (91,49,64,3), + (641,356,64,3), + (662,367,64,3), + (21,11,65,3), + (99,53,65,3), + (404,223,65,3), + (608,338,65,3), + (615,342,65,3), + (798,440,65,3), + (336,184,66,3), + (357,196,66,3), + (456,252,66,3), + (463,256,66,3), + (753,414,66,3), + (876,509,66,2), + (906,539,66,2), + (391,215,67,3), + (547,304,67,3), + (645,358,67,3), + (450,249,68,3), + (668,370,68,3), + (700,386,68,3), + (816,449,68,3), + (158,85,69,3), + (388,213,69,3), + (666,369,69,3), + (768,422,69,3), + (958,591,69,2), + (367,202,70,3), + (583,324,70,3), + (802,442,70,3), + (69,38,71,3), + (188,102,71,3), + (309,169,71,3), + (344,189,71,3), + (828,461,71,2), + (298,163,72,3), + (439,243,72,3), + (634,352,72,3), + (59,33,73,3), + (113,60,73,3), + (207,112,73,3), + (364,200,73,3), + (371,204,73,3), + (476,263,73,3), + (772,425,73,3), + (939,572,73,2), + (87,47,74,3), + (224,122,74,3), + (755,415,74,3), + (765,420,74,3), + (774,426,74,3), + (4,2,75,3), + (117,63,75,3), + (267,146,75,3), + (311,170,76,3), + (373,205,76,3), + (460,254,76,3), + (518,288,76,3), + (940,573,76,2), + (75,41,77,3), + (315,172,77,3), + (514,285,77,3), + (537,299,77,3), + (913,546,77,2), + (126,68,78,3), + (596,331,78,3), + (874,507,78,2), + (905,538,78,2), + (161,87,79,3), + (322,176,79,3), + (410,226,80,3), + (930,563,80,2), + (71,39,81,3), + (213,116,81,3), + (469,259,81,3), + (205,111,82,3), + (504,279,82,3), + (523,291,82,3), + (825,458,82,2), + (359,197,83,3), + (678,375,83,3), + (696,384,83,3), + (19,10,84,3), + (40,22,84,3), + (89,48,84,3), + (587,326,84,3), + (948,581,84,2), + (458,253,85,3), + (257,140,86,3), + (352,193,86,3), + (550,306,86,3), + (723,398,86,3), + (877,510,86,2), + (892,525,86,2), + (77,42,87,3), + (173,93,87,3), + (362,199,87,3), + (511,283,87,3), + (686,379,87,3), + (782,430,87,3), + (857,490,87,2), + (882,515,87,2), + (24,13,88,3), + (621,345,88,3), + (684,378,88,3), + (959,592,88,2), + (17,9,89,3), + (419,231,89,3), + (506,280,89,3), + (664,368,89,3), + (692,382,89,3), + (784,431,89,3), + (167,90,90,3), + (190,103,91,3), + (263,143,91,3), + (319,174,91,3), + (355,195,91,3), + (757,416,91,3), + (63,35,92,3), + (412,227,92,3), + (481,266,92,3), + (541,301,92,3), + (552,307,92,3), + (594,330,92,3), + (826,459,92,2), + (862,495,92,2), + (901,534,92,2), + (911,544,92,2), + (36,20,93,3), + (492,272,93,3), + (859,492,93,2), + (907,540,93,2), + (467,258,94,3), + (776,427,94,3), + (916,549,94,2), + (201,109,95,3), + (282,154,95,3), + (465,257,95,3), + (603,335,95,3), + (101,54,96,3), + (251,137,96,3), + (430,238,96,3), + (806,444,96,3), + (954,587,96,2), + (142,76,97,3), + (238,130,97,3), + (942,575,97,2), + (246,134,98,3), + (589,327,98,3), + (105,56,99,3), + (490,271,99,3), + (843,476,99,2), + (844,477,99,2), + (845,478,99,2), + (846,479,99,2), + (847,480,99,2), + (50,28,100,3), + (152,82,100,3), + (703,388,100,3), + (790,435,100,3), + (872,505,100,2), + (904,537,100,2), + (936,569,101,2), + (848,481,103,2), + (868,501,106,2), + (887,520,106,2), + (853,486,113,2), + (896,529,113,2), + (875,508,117,2), + (891,524,117,2), + (949,582,117,2), + (928,561,123,2), + (852,485,126,2), + (895,528,126,2), + (540,301,127,2), + (542,302,127,2), + (544,303,127,2), + (546,304,127,2), + (548,305,127,2), + (549,306,127,2), + (551,307,127,2), + (553,308,127,2), + (555,309,127,2), + (557,310,127,2), + (559,311,127,2), + (561,312,127,2), + (563,313,127,2), + (565,314,127,2), + (567,315,127,2), + (569,316,127,2), + (571,317,127,2), + (572,318,127,2), + (573,319,127,2), + (575,320,127,2), + (577,321,127,2), + (579,322,127,2), + (581,323,127,2), + (582,324,127,2), + (584,325,127,2), + (586,326,127,2), + (588,327,127,2), + (590,328,127,2), + (591,329,127,2), + (593,330,127,2), + (595,331,127,2), + (597,332,127,2), + (599,333,127,2), + (601,334,127,2), + (602,335,127,2), + (604,336,127,2), + (605,337,127,2), + (607,338,127,2), + (609,339,127,2), + (611,340,127,2), + (612,341,127,2), + (614,342,127,2), + (616,343,127,2), + (618,344,127,2), + (620,345,127,2), + (622,346,127,2), + (624,347,127,2), + (625,348,127,2), + (627,349,127,2), + (629,350,127,2), + (631,351,127,2), + (633,352,127,2), + (635,353,127,2), + (637,354,127,2), + (638,355,127,2), + (640,356,127,2), + (642,357,127,2), + (644,358,127,2), + (646,359,127,2), + (648,360,127,2), + (650,361,127,2), + (652,362,127,2), + (653,363,127,2), + (655,364,127,2), + (657,365,127,2), + (659,366,127,2), + (661,367,127,2), + (663,368,127,2), + (665,369,127,2), + (667,370,127,2), + (669,371,127,2), + (671,372,127,2), + (673,373,127,2), + (675,374,127,2), + (677,375,127,2), + (679,376,127,2), + (681,377,127,2), + (683,378,127,2), + (685,379,127,2), + (687,380,127,2), + (689,381,127,2), + (691,382,127,2), + (693,383,127,2), + (695,384,127,2), + (697,385,127,2), + (699,386,127,2), + (701,387,127,2), + (702,388,127,2), + (704,389,127,2), + (706,390,127,2), + (708,391,127,2), + (710,392,127,2), + (712,393,127,2), + (714,394,127,2), + (716,395,127,2), + (718,396,127,2), + (720,397,127,2), + (722,398,127,2), + (724,399,127,2), + (726,400,127,2), + (728,401,127,2), + (729,402,127,2), + (730,403,127,2), + (732,404,127,2), + (734,405,127,2), + (736,406,127,2), + (738,407,127,2), + (740,408,127,2), + (742,409,127,2), + (744,410,127,2), + (746,411,127,2), + (748,412,127,2), + (750,413,127,2), + (752,414,127,2), + (754,415,127,2), + (756,416,127,2), + (758,417,127,2), + (760,418,127,2), + (762,419,127,2), + (764,420,127,2), + (766,421,127,2), + (767,422,127,2), + (769,423,127,2), + (770,424,127,2), + (771,425,127,2), + (773,426,127,2), + (775,427,127,2), + (777,428,127,2), + (779,429,127,2), + (781,430,127,2), + (783,431,127,2), + (785,432,127,2), + (786,433,127,2), + (788,434,127,2), + (789,435,127,2), + (791,436,127,2), + (793,437,127,2), + (794,438,127,2), + (796,439,127,2), + (797,440,127,2), + (799,441,127,2), + (801,442,127,2), + (803,443,127,2), + (805,444,127,2), + (807,445,127,2), + (809,446,127,2), + (811,447,127,2), + (813,448,127,2), + (815,449,127,2), + (817,450,127,2), + (946,579,127,2), + (925,558,132,2), + (922,555,135,2), + (864,497,136,2), + (902,535,136,2), + (929,562,144,2), + (878,511,149,2), + (893,526,149,2), + (947,580,154,2), + (951,584,156,2), + (937,570,158,2), + (944,577,159,2), + (1,1,160,2), + (3,2,160,2), + (5,3,160,2), + (7,4,160,2), + (9,5,160,2), + (11,6,160,2), + (12,7,160,2), + (14,8,160,2), + (16,9,160,2), + (18,10,160,2), + (20,11,160,2), + (22,12,160,2), + (23,13,160,2), + (25,14,160,2), + (27,15,160,2), + (29,16,160,2), + (30,17,160,2), + (32,18,160,2), + (34,19,160,2), + (35,20,160,2), + (37,21,160,2), + (39,22,160,2), + (41,23,160,2), + (42,24,160,2), + (44,25,160,2), + (45,26,160,2), + (47,27,160,2), + (49,28,160,2), + (51,29,160,2), + (53,30,160,2), + (55,31,160,2), + (56,32,160,2), + (58,33,160,2), + (60,34,160,2), + (62,35,160,2), + (64,36,160,2), + (66,37,160,2), + (68,38,160,2), + (70,39,160,2), + (72,40,160,2), + (74,41,160,2), + (76,42,160,2), + (78,43,160,2), + (80,44,160,2), + (82,45,160,2), + (84,46,160,2), + (86,47,160,2), + (88,48,160,2), + (90,49,160,2), + (92,50,160,2), + (94,51,160,2), + (96,52,160,2), + (98,53,160,2), + (100,54,160,2), + (102,55,160,2), + (104,56,160,2), + (106,57,160,2), + (108,58,160,2), + (110,59,160,2), + (112,60,160,2), + (114,61,160,2), + (115,62,160,2), + (116,63,160,2), + (118,64,160,2), + (120,65,160,2), + (121,66,160,2), + (123,67,160,2), + (125,68,160,2), + (127,69,160,2), + (129,70,160,2), + (131,71,160,2), + (133,72,160,2), + (135,73,160,2), + (137,74,160,2), + (139,75,160,2), + (141,76,160,2), + (143,77,160,2), + (144,78,160,2), + (146,79,160,2), + (147,80,160,2), + (149,81,160,2), + (151,82,160,2), + (153,83,160,2), + (155,84,160,2), + (157,85,160,2), + (159,86,160,2), + (160,87,160,2), + (162,88,160,2), + (164,89,160,2), + (166,90,160,2), + (168,91,160,2), + (170,92,160,2), + (172,93,160,2), + (174,94,160,2), + (176,95,160,2), + (177,96,160,2), + (178,97,160,2), + (180,98,160,2), + (182,99,160,2), + (183,100,160,2), + (185,101,160,2), + (187,102,160,2), + (189,103,160,2), + (191,104,160,2), + (192,105,160,2), + (194,106,160,2), + (196,107,160,2), + (198,108,160,2), + (200,109,160,2), + (202,110,160,2), + (204,111,160,2), + (206,112,160,2), + (208,113,160,2), + (209,114,160,2), + (210,115,160,2), + (212,116,160,2), + (214,117,160,2), + (216,118,160,2), + (217,119,160,2), + (219,120,160,2), + (221,121,160,2), + (223,122,160,2), + (225,123,160,2), + (227,124,160,2), + (229,125,160,2), + (230,126,160,2), + (232,127,160,2), + (234,128,160,2), + (235,129,160,2), + (237,130,160,2), + (239,131,160,2), + (241,132,160,2), + (243,133,160,2), + (245,134,160,2), + (247,135,160,2), + (249,136,160,2), + (250,137,160,2), + (252,138,160,2), + (254,139,160,2), + (256,140,160,2), + (258,141,160,2), + (260,142,160,2), + (262,143,160,2), + (264,144,160,2), + (265,145,160,2), + (266,146,160,2), + (268,147,160,2), + (270,148,160,2), + (272,149,160,2), + (274,150,160,2), + (912,545,160,2), + (952,585,163,2), + (856,489,164,2), + (898,531,164,2), + (851,484,168,2), + (880,513,168,2), + (854,487,169,2), + (897,530,169,2), + (957,590,172,2), + (871,504,175,2), + (889,522,175,2), + (956,589,175,2), + (931,564,178,2), + (926,559,179,2), + (863,496,180,2), + (884,517,180,2), + (934,567,182,2), + (953,586,184,2), + (866,499,187,2), + (903,536,187,2), + (927,560,189,2), + (921,554,192,2), + (920,553,195,2), + (933,566,196,2), + (941,574,197,2); /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -1682,191 +1701,186 @@ UNLOCK TABLES; LOCK TABLES `civicrm_address` WRITE; /*!40000 ALTER TABLE `civicrm_address` DISABLE KEYS */; INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES - (1,139,1,1,0,'300S Pine Pl E',300,'S',NULL,'Pine','Pl','E',NULL,NULL,NULL,NULL,'Cottageville',1,1047,NULL,'25239',NULL,1228,38.851872,-81.84501,0,NULL,NULL,NULL), - (2,122,1,1,0,'816E Dowlen Path SE',816,'E',NULL,'Dowlen','Path','SE',NULL,NULL,NULL,NULL,'Newcomb',1,1030,NULL,'87455',NULL,1228,36.272472,-108.79107,0,NULL,NULL,NULL), - (3,79,1,1,0,'752E States Ave SE',752,'E',NULL,'States','Ave','SE',NULL,NULL,NULL,NULL,'Urbana',1,1012,NULL,'61803',NULL,1228,40.10593,-88.224669,0,NULL,NULL,NULL), - (4,80,1,1,0,'669I Dowlen Way S',669,'I',NULL,'Dowlen','Way','S',NULL,NULL,NULL,NULL,'White House',1,1041,NULL,'37188',NULL,1228,36.467624,-86.66941,0,NULL,NULL,NULL), - (5,169,1,1,0,'250B Main Pl NE',250,'B',NULL,'Main','Pl','NE',NULL,NULL,NULL,NULL,'Kosciusko',1,1023,NULL,'39090',NULL,1228,33.038079,-89.56318,0,NULL,NULL,NULL), - (6,53,1,1,0,'28U Jackson Rd NW',28,'U',NULL,'Jackson','Rd','NW',NULL,NULL,NULL,NULL,'McFarland',1,1015,NULL,'66501',NULL,1228,39.053241,-96.23893,0,NULL,NULL,NULL), - (7,22,1,1,0,'967I Second Path E',967,'I',NULL,'Second','Path','E',NULL,NULL,NULL,NULL,'Sioux City',1,1014,NULL,'51104',NULL,1228,42.524145,-96.40292,0,NULL,NULL,NULL), - (8,190,1,1,0,'781S Bay Ln NW',781,'S',NULL,'Bay','Ln','NW',NULL,NULL,NULL,NULL,'Cameron',1,1039,NULL,'29030',NULL,1228,33.572356,-80.67158,0,NULL,NULL,NULL), - (9,55,1,1,0,'614P Main St W',614,'P',NULL,'Main','St','W',NULL,NULL,NULL,NULL,'Minneapolis',1,1022,NULL,'55432',NULL,1228,45.095674,-93.25336,0,NULL,NULL,NULL), - (10,4,1,1,0,'193V States Path SE',193,'V',NULL,'States','Path','SE',NULL,NULL,NULL,NULL,'Saint Louis',1,1024,NULL,'63123',NULL,1228,38.549452,-90.32525,0,NULL,NULL,NULL), - (11,2,1,1,0,'558V Bay Path E',558,'V',NULL,'Bay','Path','E',NULL,NULL,NULL,NULL,'Toledo',1,1034,NULL,'43653',NULL,1228,41.686778,-83.43943,0,NULL,NULL,NULL), - (12,65,1,1,0,'170E Green Ln NE',170,'E',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Mendon',1,1012,NULL,'62351',NULL,1228,40.094396,-91.26558,0,NULL,NULL,NULL), - (13,54,1,1,0,'573Q Jackson Pl S',573,'Q',NULL,'Jackson','Pl','S',NULL,NULL,NULL,NULL,'Scott Depot',1,1047,NULL,'25560',NULL,1228,38.446225,-81.90315,0,NULL,NULL,NULL), - (14,8,1,1,0,'648S States Way NE',648,'S',NULL,'States','Way','NE',NULL,NULL,NULL,NULL,'Brighton',1,1024,NULL,'65617',NULL,1228,37.436062,-93.34884,0,NULL,NULL,NULL), - (15,86,1,1,0,'346W Cadell Rd NW',346,'W',NULL,'Cadell','Rd','NW',NULL,NULL,NULL,NULL,'Akron',1,1034,NULL,'44319',NULL,1228,40.990922,-81.52953,0,NULL,NULL,NULL), - (16,145,1,1,0,'619K Martin Luther King Path N',619,'K',NULL,'Martin Luther King','Path','N',NULL,NULL,NULL,NULL,'Indianapolis',1,1013,NULL,'46225',NULL,1228,39.746993,-86.15903,0,NULL,NULL,NULL), - (17,175,1,1,0,'748Q Beech Way S',748,'Q',NULL,'Beech','Way','S',NULL,NULL,NULL,NULL,'Kent',1,1046,NULL,'98035',NULL,1228,47.432251,-121.803388,0,NULL,NULL,NULL), - (18,68,1,1,0,'213Z Northpoint Dr NW',213,'Z',NULL,'Northpoint','Dr','NW',NULL,NULL,NULL,NULL,'Lake Linden',1,1021,NULL,'49945',NULL,1228,47.17583,-88.32904,0,NULL,NULL,NULL), - (19,183,1,1,0,'688P Jackson Rd W',688,'P',NULL,'Jackson','Rd','W',NULL,NULL,NULL,NULL,'Crete',1,1026,NULL,'68333',NULL,1228,40.620175,-96.96099,0,NULL,NULL,NULL), - (20,114,1,1,0,'13A Martin Luther King Pl SE',13,'A',NULL,'Martin Luther King','Pl','SE',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84152',NULL,1228,40.728579,-111.66273,0,NULL,NULL,NULL), - (21,39,1,1,0,'721H Second Pl NW',721,'H',NULL,'Second','Pl','NW',NULL,NULL,NULL,NULL,'La Grande',1,1036,NULL,'97850',NULL,1228,45.32627,-118.08197,0,NULL,NULL,NULL), - (22,184,1,1,0,'158S Caulder Dr NE',158,'S',NULL,'Caulder','Dr','NE',NULL,NULL,NULL,NULL,'Chappaqua',1,1031,NULL,'10514',NULL,1228,41.167455,-73.77597,0,NULL,NULL,NULL), - (23,124,1,1,0,'476E Second Pl NE',476,'E',NULL,'Second','Pl','NE',NULL,NULL,NULL,NULL,'Garland',1,1018,NULL,'04939',NULL,1228,45.046491,-69.14747,0,NULL,NULL,NULL), - (24,160,1,1,0,'124L Caulder Ln W',124,'L',NULL,'Caulder','Ln','W',NULL,NULL,NULL,NULL,'Lawen',1,1036,NULL,'97740',NULL,1228,43.019785,-119.069624,0,NULL,NULL,NULL), - (25,47,1,1,0,'997A Maple Ln SW',997,'A',NULL,'Maple','Ln','SW',NULL,NULL,NULL,NULL,'Locust Valley',1,1031,NULL,'11560',NULL,1228,40.881957,-73.59417,0,NULL,NULL,NULL), - (26,21,1,1,0,'436U El Camino Ave S',436,'U',NULL,'El Camino','Ave','S',NULL,NULL,NULL,NULL,'Pompano Beach',1,1008,NULL,'33062',NULL,1228,26.236792,-80.09594,0,NULL,NULL,NULL), - (27,50,1,1,0,'542X Woodbridge Blvd S',542,'X',NULL,'Woodbridge','Blvd','S',NULL,NULL,NULL,NULL,'Lakeville',1,1022,NULL,'55044',NULL,1228,44.669564,-93.26654,0,NULL,NULL,NULL), - (28,70,1,1,0,'736I Cadell Ln E',736,'I',NULL,'Cadell','Ln','E',NULL,NULL,NULL,NULL,'Pontiac',1,1021,NULL,'48343',NULL,1228,42.660091,-83.3863,0,NULL,NULL,NULL), - (29,25,1,1,0,'713B Bay Path E',713,'B',NULL,'Bay','Path','E',NULL,NULL,NULL,NULL,'Tuscarora',1,1027,NULL,'89834',NULL,1228,41.328852,-116.12251,0,NULL,NULL,NULL), - (30,167,1,1,0,'973C Main Ave S',973,'C',NULL,'Main','Ave','S',NULL,NULL,NULL,NULL,'Cumberland',1,1032,NULL,'28331',NULL,1228,35.150896,-78.915788,0,NULL,NULL,NULL), - (31,144,1,1,0,'538F Caulder Rd NW',538,'F',NULL,'Caulder','Rd','NW',NULL,NULL,NULL,NULL,'Washington',1,1021,NULL,'48094',NULL,1228,42.727731,-83.03847,0,NULL,NULL,NULL), - (32,10,1,1,0,'335U Van Ness Pl E',335,'U',NULL,'Van Ness','Pl','E',NULL,NULL,NULL,NULL,'Naples',1,1008,NULL,'34103',NULL,1228,26.191117,-81.80333,0,NULL,NULL,NULL), - (33,138,1,1,0,'587P Woodbridge Rd SE',587,'P',NULL,'Woodbridge','Rd','SE',NULL,NULL,NULL,NULL,'Lake Stevens',1,1046,NULL,'98258',NULL,1228,48.028355,-122.06327,0,NULL,NULL,NULL), - (34,77,1,1,0,'217V El Camino Ave NW',217,'V',NULL,'El Camino','Ave','NW',NULL,NULL,NULL,NULL,'Lexington',1,1016,NULL,'40507',NULL,1228,38.047408,-84.49627,0,NULL,NULL,NULL), - (35,196,1,1,0,'425I Martin Luther King Blvd N',425,'I',NULL,'Martin Luther King','Blvd','N',NULL,NULL,NULL,NULL,'Saint Paul',1,1022,NULL,'55170',NULL,1228,45.005902,-93.105869,0,NULL,NULL,NULL), - (36,113,1,1,0,'29G Martin Luther King Ln NW',29,'G',NULL,'Martin Luther King','Ln','NW',NULL,NULL,NULL,NULL,'Western Springs',1,1012,NULL,'60558',NULL,1228,41.805531,-87.90103,0,NULL,NULL,NULL), - (37,161,1,1,0,'477W Caulder Pl N',477,'W',NULL,'Caulder','Pl','N',NULL,NULL,NULL,NULL,'Marion Junction',1,1000,NULL,'36759',NULL,1228,32.420138,-87.27857,0,NULL,NULL,NULL), - (38,57,1,1,0,'476A Caulder Dr W',476,'A',NULL,'Caulder','Dr','W',NULL,NULL,NULL,NULL,'Holloman Air Force Base',1,1030,NULL,'88330',NULL,1228,32.841331,-106.07948,0,NULL,NULL,NULL), - (39,165,1,1,0,'738S States Path NE',738,'S',NULL,'States','Path','NE',NULL,NULL,NULL,NULL,'Moravia',1,1031,NULL,'13118',NULL,1228,42.755698,-76.41226,0,NULL,NULL,NULL), - (40,34,1,1,0,'576S Van Ness Blvd W',576,'S',NULL,'Van Ness','Blvd','W',NULL,NULL,NULL,NULL,'Parrish',1,1008,NULL,'34219',NULL,1228,27.574128,-82.40701,0,NULL,NULL,NULL), - (41,118,1,1,0,'137Q Beech Way S',137,'Q',NULL,'Beech','Way','S',NULL,NULL,NULL,NULL,'Herkimer',1,1031,NULL,'13350',NULL,1228,43.038149,-74.9846,0,NULL,NULL,NULL), - (42,163,1,1,0,'575L States Ave NE',575,'L',NULL,'States','Ave','NE',NULL,NULL,NULL,NULL,'Upper Marlboro',1,1019,NULL,'20772',NULL,1228,38.792281,-76.781,0,NULL,NULL,NULL), - (43,200,1,1,0,'923D Green Path N',923,'D',NULL,'Green','Path','N',NULL,NULL,NULL,NULL,'Brinnon',1,1046,NULL,'98320',NULL,1228,47.705616,-122.92868,0,NULL,NULL,NULL), - (44,104,1,1,0,'643K Van Ness Dr E',643,'K',NULL,'Van Ness','Dr','E',NULL,NULL,NULL,NULL,'Albuquerque',1,1030,NULL,'87109',NULL,1228,35.155811,-106.56662,0,NULL,NULL,NULL), - (45,125,1,1,0,'117J Caulder Rd SW',117,'J',NULL,'Caulder','Rd','SW',NULL,NULL,NULL,NULL,'Harrisonville',1,1037,NULL,'17228',NULL,1228,39.995374,-78.09348,0,NULL,NULL,NULL), - (46,30,1,1,0,'583I Northpoint Ave SW',583,'I',NULL,'Northpoint','Ave','SW',NULL,NULL,NULL,NULL,'Windfall',1,1013,NULL,'46076',NULL,1228,40.363776,-85.95074,0,NULL,NULL,NULL), - (47,12,1,1,0,'857M Maple Way E',857,'M',NULL,'Maple','Way','E',NULL,NULL,NULL,NULL,'Salt Lick',1,1016,NULL,'40371',NULL,1228,38.087867,-83.61146,0,NULL,NULL,NULL), - (48,116,1,1,0,'18L Second Rd N',18,'L',NULL,'Second','Rd','N',NULL,NULL,NULL,NULL,'Scottsdale',1,1002,NULL,'85259',NULL,1228,33.596995,-111.82628,0,NULL,NULL,NULL), - (49,111,1,1,0,'370W Lincoln Rd W',370,'W',NULL,'Lincoln','Rd','W',NULL,NULL,NULL,NULL,'Loris',1,1039,NULL,'29569',NULL,1228,34.046247,-78.9008,0,NULL,NULL,NULL), - (50,182,1,1,0,'82Z Green St NE',82,'Z',NULL,'Green','St','NE',NULL,NULL,NULL,NULL,'O Brien',1,1036,NULL,'97534',NULL,1228,42.055397,-123.7031,0,NULL,NULL,NULL), - (51,198,1,1,0,'744L Green Way S',744,'L',NULL,'Green','Way','S',NULL,NULL,NULL,NULL,'South Prairie',1,1046,NULL,'98485',NULL,1228,47.140655,-122.100892,0,NULL,NULL,NULL), - (52,148,1,1,0,'22U Beech Dr W',22,'U',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Columbia',1,1019,NULL,'21046',NULL,1228,39.175004,-76.85319,0,NULL,NULL,NULL), - (53,87,1,1,0,'405X El Camino Way N',405,'X',NULL,'El Camino','Way','N',NULL,NULL,NULL,NULL,'Villa Maria',1,1037,NULL,'16155',NULL,1228,41.074943,-80.50611,0,NULL,NULL,NULL), - (54,172,1,1,0,'552X States Rd NE',552,'X',NULL,'States','Rd','NE',NULL,NULL,NULL,NULL,'Lorain',1,1034,NULL,'44052',NULL,1228,41.459218,-82.1691,0,NULL,NULL,NULL), - (55,186,1,1,0,'513Z Bay Dr W',513,'Z',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Beaver',1,1036,NULL,'97108',NULL,1228,45.284763,-123.6908,0,NULL,NULL,NULL), - (56,126,1,1,0,'734Z Maple Ln N',734,'Z',NULL,'Maple','Ln','N',NULL,NULL,NULL,NULL,'Portage',1,1021,NULL,'49024',NULL,1228,42.216541,-85.61773,0,NULL,NULL,NULL), - (57,136,1,1,0,'459W Main Ave NW',459,'W',NULL,'Main','Ave','NW',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75210',NULL,1228,32.77103,-96.74732,0,NULL,NULL,NULL), - (58,58,1,1,0,'858Q College Blvd S',858,'Q',NULL,'College','Blvd','S',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60632',NULL,1228,41.809299,-87.7105,0,NULL,NULL,NULL), - (59,7,1,1,0,'4F Dowlen Ln NW',4,'F',NULL,'Dowlen','Ln','NW',NULL,NULL,NULL,NULL,'Maple Plain',1,1022,NULL,'55572',NULL,1228,45.015914,-93.47188,0,NULL,NULL,NULL), - (60,20,1,1,0,'256F Lincoln Way NW',256,'F',NULL,'Lincoln','Way','NW',NULL,NULL,NULL,NULL,'Auburn',1,1000,NULL,'36832',NULL,1228,32.589553,-85.53991,0,NULL,NULL,NULL), - (61,115,1,1,0,'181P Second Way NE',181,'P',NULL,'Second','Way','NE',NULL,NULL,NULL,NULL,'Clarksville',1,1031,NULL,'12041',NULL,1228,42.543326,-73.97403,0,NULL,NULL,NULL), - (62,3,1,1,0,'296L Pine Pl N',296,'L',NULL,'Pine','Pl','N',NULL,NULL,NULL,NULL,'Fairfield',1,1025,NULL,'59436',NULL,1228,47.624913,-112.03006,0,NULL,NULL,NULL), - (63,61,1,1,0,'507K College St W',507,'K',NULL,'College','St','W',NULL,NULL,NULL,NULL,'Leeds',1,1020,NULL,'01053',NULL,1228,42.353105,-72.70206,0,NULL,NULL,NULL), - (64,101,1,1,0,'914Y Jackson Blvd E',914,'Y',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Cartersville',1,1009,NULL,'30120',NULL,1228,34.167327,-84.82764,0,NULL,NULL,NULL), - (65,43,1,1,0,'227Z Van Ness St SE',227,'Z',NULL,'Van Ness','St','SE',NULL,NULL,NULL,NULL,'Omaha',1,1026,NULL,'68127',NULL,1228,41.203029,-96.05009,0,NULL,NULL,NULL), - (66,89,1,1,0,'461C Van Ness Ln E',461,'C',NULL,'Van Ness','Ln','E',NULL,NULL,NULL,NULL,'Lorton',1,1045,NULL,'22079',NULL,1228,38.695915,-77.20122,0,NULL,NULL,NULL), - (67,197,1,1,0,'811T Dowlen Ave S',811,'T',NULL,'Dowlen','Ave','S',NULL,NULL,NULL,NULL,'Freedom',1,1037,NULL,'15042',NULL,1228,40.682566,-80.23208,0,NULL,NULL,NULL), - (68,52,1,1,0,'725L Woodbridge St SW',725,'L',NULL,'Woodbridge','St','SW',NULL,NULL,NULL,NULL,'Arcola',1,1012,NULL,'61910',NULL,1228,39.676634,-88.30284,0,NULL,NULL,NULL), - (69,26,1,1,0,'486W Bay Path S',486,'W',NULL,'Bay','Path','S',NULL,NULL,NULL,NULL,'Fort Wayne',1,1013,NULL,'46868',NULL,1228,41.093763,-85.070713,0,NULL,NULL,NULL), - (70,123,1,1,0,'239U Maple Blvd S',239,'U',NULL,'Maple','Blvd','S',NULL,NULL,NULL,NULL,'Barnstead',1,1028,NULL,'03218',NULL,1228,43.338347,-71.29305,0,NULL,NULL,NULL), - (71,97,1,1,0,'907Y Dowlen Path N',907,'Y',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30377',NULL,1228,33.844371,-84.47405,0,NULL,NULL,NULL), - (72,149,1,1,0,'972T Cadell Ln SE',972,'T',NULL,'Cadell','Ln','SE',NULL,NULL,NULL,NULL,'Ivanhoe',1,1022,NULL,'56142',NULL,1228,44.476959,-96.23,0,NULL,NULL,NULL), - (73,75,1,1,0,'140N Dowlen Blvd N',140,'N',NULL,'Dowlen','Blvd','N',NULL,NULL,NULL,NULL,'Gower',1,1024,NULL,'64454',NULL,1228,39.61222,-94.5929,0,NULL,NULL,NULL), - (74,71,3,1,0,'581R Pine Dr W',581,'R',NULL,'Pine','Dr','W',NULL,'Attn: Development',NULL,NULL,'Decatur',1,1000,NULL,'35603',NULL,1228,34.539072,-86.95732,0,NULL,NULL,NULL), - (75,29,3,1,0,'89N Martin Luther King Ave SE',89,'N',NULL,'Martin Luther King','Ave','SE',NULL,'Churchgate',NULL,NULL,'Dodson',1,1042,NULL,'79230',NULL,1228,34.698438,-100.06623,0,NULL,NULL,NULL), - (76,109,3,1,0,'665O Van Ness Rd SW',665,'O',NULL,'Van Ness','Rd','SW',NULL,'Churchgate',NULL,NULL,'McDowell',1,1045,NULL,'24458',NULL,1228,38.322663,-79.54418,0,NULL,NULL,NULL), - (77,50,2,0,0,'665O Van Ness Rd SW',665,'O',NULL,'Van Ness','Rd','SW',NULL,'Churchgate',NULL,NULL,'McDowell',1,1045,NULL,'24458',NULL,1228,38.322663,-79.54418,0,NULL,NULL,76), - (78,23,3,1,0,'313N Van Ness Blvd E',313,'N',NULL,'Van Ness','Blvd','E',NULL,'Mailstop 101',NULL,NULL,'Chula',1,1009,NULL,'31733',NULL,1228,31.592199,-83.48004,0,NULL,NULL,NULL), - (79,91,3,1,0,'786T Beech Path E',786,'T',NULL,'Beech','Path','E',NULL,'Urgent',NULL,NULL,'Bremerton',1,1046,NULL,'98311',NULL,1228,47.629717,-122.63493,0,NULL,NULL,NULL), - (80,86,2,0,0,'786T Beech Path E',786,'T',NULL,'Beech','Path','E',NULL,'Urgent',NULL,NULL,'Bremerton',1,1046,NULL,'98311',NULL,1228,47.629717,-122.63493,0,NULL,NULL,79), - (81,178,3,1,0,'90Q Maple Path E',90,'Q',NULL,'Maple','Path','E',NULL,'Editorial Dept',NULL,NULL,'Ravia',1,1035,NULL,'73445',NULL,1228,34.244011,-96.751093,0,NULL,NULL,NULL), - (82,129,3,1,0,'8Z Caulder Ave SE',8,'Z',NULL,'Caulder','Ave','SE',NULL,'Churchgate',NULL,NULL,'Torbert',1,1017,NULL,'70781',NULL,1228,30.561065,-91.48607,0,NULL,NULL,NULL), - (83,191,2,1,0,'8Z Caulder Ave SE',8,'Z',NULL,'Caulder','Ave','SE',NULL,'Churchgate',NULL,NULL,'Torbert',1,1017,NULL,'70781',NULL,1228,30.561065,-91.48607,0,NULL,NULL,82), - (84,19,3,1,0,'604E Pine Blvd E',604,'E',NULL,'Pine','Blvd','E',NULL,'Receiving',NULL,NULL,'Hayti',1,1040,NULL,'57241',NULL,1228,44.695445,-97.21584,0,NULL,NULL,NULL), - (85,177,3,1,0,'494W Pine Path NW',494,'W',NULL,'Pine','Path','NW',NULL,'Churchgate',NULL,NULL,'Sedalia',1,1005,NULL,'80135',NULL,1228,39.340969,-105.05404,0,NULL,NULL,NULL), - (86,159,2,1,0,'494W Pine Path NW',494,'W',NULL,'Pine','Path','NW',NULL,'Churchgate',NULL,NULL,'Sedalia',1,1005,NULL,'80135',NULL,1228,39.340969,-105.05404,0,NULL,NULL,85), - (87,108,3,1,0,'23Y Maple Ave NW',23,'Y',NULL,'Maple','Ave','NW',NULL,'Receiving',NULL,NULL,'Spokane',1,1046,NULL,'99213',NULL,1228,47.656726,-117.282483,0,NULL,NULL,NULL), - (88,194,3,1,0,'695D Woodbridge Way N',695,'D',NULL,'Woodbridge','Way','N',NULL,'Editorial Dept',NULL,NULL,'Saint Paul',1,1026,NULL,'68873',NULL,1228,41.230069,-98.47449,0,NULL,NULL,NULL), - (89,36,2,1,0,'695D Woodbridge Way N',695,'D',NULL,'Woodbridge','Way','N',NULL,'Editorial Dept',NULL,NULL,'Saint Paul',1,1026,NULL,'68873',NULL,1228,41.230069,-98.47449,0,NULL,NULL,88), - (90,168,3,1,0,'185I Martin Luther King Path SE',185,'I',NULL,'Martin Luther King','Path','SE',NULL,'Editorial Dept',NULL,NULL,'Pittsburgh',1,1037,NULL,'15283',NULL,1228,40.434436,-80.024817,0,NULL,NULL,NULL), - (91,90,3,1,0,'858B Pine St SE',858,'B',NULL,'Pine','St','SE',NULL,'Cuffe Parade',NULL,NULL,'Leavenworth',1,1013,NULL,'47137',NULL,1228,38.200101,-86.36988,0,NULL,NULL,NULL), - (92,143,2,1,0,'858B Pine St SE',858,'B',NULL,'Pine','St','SE',NULL,'Cuffe Parade',NULL,NULL,'Leavenworth',1,1013,NULL,'47137',NULL,1228,38.200101,-86.36988,0,NULL,NULL,91), - (93,137,3,1,0,'822T Northpoint Rd SW',822,'T',NULL,'Northpoint','Rd','SW',NULL,'Subscriptions Dept',NULL,NULL,'San Antonio',1,1042,NULL,'78237',NULL,1228,29.422583,-98.56584,0,NULL,NULL,NULL), - (94,18,3,1,0,'628K Van Ness Dr N',628,'K',NULL,'Van Ness','Dr','N',NULL,'Attn: Accounting',NULL,NULL,'Connelly',1,1031,NULL,'12417',NULL,1228,41.907604,-73.989254,0,NULL,NULL,NULL), - (95,78,3,1,0,'74I Woodbridge Ln S',74,'I',NULL,'Woodbridge','Ln','S',NULL,'Churchgate',NULL,NULL,'Austin',1,1042,NULL,'78703',NULL,1228,30.290907,-97.76277,0,NULL,NULL,NULL), - (96,88,3,1,0,'307Q Cadell Blvd N',307,'Q',NULL,'Cadell','Blvd','N',NULL,'Mailstop 101',NULL,NULL,'Huntsville',1,1000,NULL,'35897',NULL,1228,34.733964,-86.522913,0,NULL,NULL,NULL), - (97,40,2,1,0,'307Q Cadell Blvd N',307,'Q',NULL,'Cadell','Blvd','N',NULL,'Mailstop 101',NULL,NULL,'Huntsville',1,1000,NULL,'35897',NULL,1228,34.733964,-86.522913,0,NULL,NULL,96), - (98,193,3,1,0,'115X Van Ness Dr W',115,'X',NULL,'Van Ness','Dr','W',NULL,'c/o PO Plus',NULL,NULL,'Nassawadox',1,1045,NULL,'23413',NULL,1228,37.452186,-75.84523,0,NULL,NULL,NULL), - (99,147,2,1,0,'115X Van Ness Dr W',115,'X',NULL,'Van Ness','Dr','W',NULL,'c/o PO Plus',NULL,NULL,'Nassawadox',1,1045,NULL,'23413',NULL,1228,37.452186,-75.84523,0,NULL,NULL,98), - (100,170,3,1,0,'918H El Camino Dr E',918,'H',NULL,'El Camino','Dr','E',NULL,'Attn: Accounting',NULL,NULL,'Milford',1,1031,NULL,'13807',NULL,1228,42.606209,-74.97261,0,NULL,NULL,NULL), - (101,153,3,1,0,'802G Woodbridge Ln N',802,'G',NULL,'Woodbridge','Ln','N',NULL,'c/o PO Plus',NULL,NULL,'Statesboro',1,1009,NULL,'30460',NULL,1228,32.41795,-81.78233,0,NULL,NULL,NULL), - (102,201,2,1,0,'802G Woodbridge Ln N',802,'G',NULL,'Woodbridge','Ln','N',NULL,'c/o PO Plus',NULL,NULL,'Statesboro',1,1009,NULL,'30460',NULL,1228,32.41795,-81.78233,0,NULL,NULL,101), - (103,133,1,1,0,'552X States Rd NE',552,'X',NULL,'States','Rd','NE',NULL,NULL,NULL,NULL,'Lorain',1,1034,NULL,'44052',NULL,1228,41.459218,-82.1691,0,NULL,NULL,54), - (104,157,1,1,0,'552X States Rd NE',552,'X',NULL,'States','Rd','NE',NULL,NULL,NULL,NULL,'Lorain',1,1034,NULL,'44052',NULL,1228,41.459218,-82.1691,0,NULL,NULL,54), - (105,155,1,1,0,'552X States Rd NE',552,'X',NULL,'States','Rd','NE',NULL,NULL,NULL,NULL,'Lorain',1,1034,NULL,'44052',NULL,1228,41.459218,-82.1691,0,NULL,NULL,54), - (106,85,1,1,0,'552X States Rd NE',552,'X',NULL,'States','Rd','NE',NULL,NULL,NULL,NULL,'Lorain',1,1034,NULL,'44052',NULL,1228,41.459218,-82.1691,0,NULL,NULL,54), - (107,181,1,1,0,'513Z Bay Dr W',513,'Z',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Beaver',1,1036,NULL,'97108',NULL,1228,45.284763,-123.6908,0,NULL,NULL,55), - (108,14,1,1,0,'513Z Bay Dr W',513,'Z',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Beaver',1,1036,NULL,'97108',NULL,1228,45.284763,-123.6908,0,NULL,NULL,55), - (109,5,1,1,0,'513Z Bay Dr W',513,'Z',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Beaver',1,1036,NULL,'97108',NULL,1228,45.284763,-123.6908,0,NULL,NULL,55), - (110,83,1,1,0,'513Z Bay Dr W',513,'Z',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Beaver',1,1036,NULL,'97108',NULL,1228,45.284763,-123.6908,0,NULL,NULL,55), - (111,189,1,1,0,'734Z Maple Ln N',734,'Z',NULL,'Maple','Ln','N',NULL,NULL,NULL,NULL,'Portage',1,1021,NULL,'49024',NULL,1228,42.216541,-85.61773,0,NULL,NULL,56), - (112,185,1,1,0,'734Z Maple Ln N',734,'Z',NULL,'Maple','Ln','N',NULL,NULL,NULL,NULL,'Portage',1,1021,NULL,'49024',NULL,1228,42.216541,-85.61773,0,NULL,NULL,56), - (113,76,1,1,0,'734Z Maple Ln N',734,'Z',NULL,'Maple','Ln','N',NULL,NULL,NULL,NULL,'Portage',1,1021,NULL,'49024',NULL,1228,42.216541,-85.61773,0,NULL,NULL,56), - (114,140,1,1,0,'734Z Maple Ln N',734,'Z',NULL,'Maple','Ln','N',NULL,NULL,NULL,NULL,'Portage',1,1021,NULL,'49024',NULL,1228,42.216541,-85.61773,0,NULL,NULL,56), - (115,103,1,1,0,'459W Main Ave NW',459,'W',NULL,'Main','Ave','NW',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75210',NULL,1228,32.77103,-96.74732,0,NULL,NULL,57), - (116,63,1,1,0,'459W Main Ave NW',459,'W',NULL,'Main','Ave','NW',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75210',NULL,1228,32.77103,-96.74732,0,NULL,NULL,57), - (117,154,1,1,0,'459W Main Ave NW',459,'W',NULL,'Main','Ave','NW',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75210',NULL,1228,32.77103,-96.74732,0,NULL,NULL,57), - (118,107,1,1,0,'33U College Pl NE',33,'U',NULL,'College','Pl','NE',NULL,NULL,NULL,NULL,'McIntyre',1,1037,NULL,'15756',NULL,1228,40.570149,-79.29689,0,NULL,NULL,NULL), - (119,32,1,1,0,'858Q College Blvd S',858,'Q',NULL,'College','Blvd','S',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60632',NULL,1228,41.809299,-87.7105,0,NULL,NULL,58), - (120,191,1,0,0,'858Q College Blvd S',858,'Q',NULL,'College','Blvd','S',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60632',NULL,1228,41.809299,-87.7105,0,NULL,NULL,58), - (121,201,1,0,0,'858Q College Blvd S',858,'Q',NULL,'College','Blvd','S',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60632',NULL,1228,41.809299,-87.7105,0,NULL,NULL,58), - (122,38,1,1,0,'349K States Ave SE',349,'K',NULL,'States','Ave','SE',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10032',NULL,1228,40.840686,-73.94154,0,NULL,NULL,NULL), - (123,40,1,0,0,'4F Dowlen Ln NW',4,'F',NULL,'Dowlen','Ln','NW',NULL,NULL,NULL,NULL,'Maple Plain',1,1022,NULL,'55572',NULL,1228,45.015914,-93.47188,0,NULL,NULL,59), - (124,121,1,1,0,'4F Dowlen Ln NW',4,'F',NULL,'Dowlen','Ln','NW',NULL,NULL,NULL,NULL,'Maple Plain',1,1022,NULL,'55572',NULL,1228,45.015914,-93.47188,0,NULL,NULL,59), - (125,128,1,1,0,'4F Dowlen Ln NW',4,'F',NULL,'Dowlen','Ln','NW',NULL,NULL,NULL,NULL,'Maple Plain',1,1022,NULL,'55572',NULL,1228,45.015914,-93.47188,0,NULL,NULL,59), - (126,159,1,0,0,'4F Dowlen Ln NW',4,'F',NULL,'Dowlen','Ln','NW',NULL,NULL,NULL,NULL,'Maple Plain',1,1022,NULL,'55572',NULL,1228,45.015914,-93.47188,0,NULL,NULL,59), - (127,36,1,0,0,'256F Lincoln Way NW',256,'F',NULL,'Lincoln','Way','NW',NULL,NULL,NULL,NULL,'Auburn',1,1000,NULL,'36832',NULL,1228,32.589553,-85.53991,0,NULL,NULL,60), - (128,37,1,1,0,'256F Lincoln Way NW',256,'F',NULL,'Lincoln','Way','NW',NULL,NULL,NULL,NULL,'Auburn',1,1000,NULL,'36832',NULL,1228,32.589553,-85.53991,0,NULL,NULL,60), - (129,17,1,1,0,'256F Lincoln Way NW',256,'F',NULL,'Lincoln','Way','NW',NULL,NULL,NULL,NULL,'Auburn',1,1000,NULL,'36832',NULL,1228,32.589553,-85.53991,0,NULL,NULL,60), - (130,98,1,1,0,'907M Maple Pl SE',907,'M',NULL,'Maple','Pl','SE',NULL,NULL,NULL,NULL,'Cambridgeport',1,1044,NULL,'05141',NULL,1228,42.99467,-72.720362,0,NULL,NULL,NULL), - (131,13,1,1,0,'181P Second Way NE',181,'P',NULL,'Second','Way','NE',NULL,NULL,NULL,NULL,'Clarksville',1,1031,NULL,'12041',NULL,1228,42.543326,-73.97403,0,NULL,NULL,61), - (132,173,1,1,0,'181P Second Way NE',181,'P',NULL,'Second','Way','NE',NULL,NULL,NULL,NULL,'Clarksville',1,1031,NULL,'12041',NULL,1228,42.543326,-73.97403,0,NULL,NULL,61), - (133,31,1,1,0,'181P Second Way NE',181,'P',NULL,'Second','Way','NE',NULL,NULL,NULL,NULL,'Clarksville',1,1031,NULL,'12041',NULL,1228,42.543326,-73.97403,0,NULL,NULL,61), - (134,100,1,1,0,'92U Caulder Way N',92,'U',NULL,'Caulder','Way','N',NULL,NULL,NULL,NULL,'Philadelphia',1,1037,NULL,'19153',NULL,1228,39.898985,-75.23221,0,NULL,NULL,NULL), - (135,35,1,1,0,'296L Pine Pl N',296,'L',NULL,'Pine','Pl','N',NULL,NULL,NULL,NULL,'Fairfield',1,1025,NULL,'59436',NULL,1228,47.624913,-112.03006,0,NULL,NULL,62), - (136,27,1,1,0,'296L Pine Pl N',296,'L',NULL,'Pine','Pl','N',NULL,NULL,NULL,NULL,'Fairfield',1,1025,NULL,'59436',NULL,1228,47.624913,-112.03006,0,NULL,NULL,62), - (137,146,1,1,0,'296L Pine Pl N',296,'L',NULL,'Pine','Pl','N',NULL,NULL,NULL,NULL,'Fairfield',1,1025,NULL,'59436',NULL,1228,47.624913,-112.03006,0,NULL,NULL,62), - (138,72,1,1,0,'420Y Woodbridge Dr NE',420,'Y',NULL,'Woodbridge','Dr','NE',NULL,NULL,NULL,NULL,'Delphos',1,1015,NULL,'67436',NULL,1228,39.26795,-97.73798,0,NULL,NULL,NULL), - (139,192,1,1,0,'507K College St W',507,'K',NULL,'College','St','W',NULL,NULL,NULL,NULL,'Leeds',1,1020,NULL,'01053',NULL,1228,42.353105,-72.70206,0,NULL,NULL,63), - (140,158,1,1,0,'507K College St W',507,'K',NULL,'College','St','W',NULL,NULL,NULL,NULL,'Leeds',1,1020,NULL,'01053',NULL,1228,42.353105,-72.70206,0,NULL,NULL,63), - (141,102,1,1,0,'507K College St W',507,'K',NULL,'College','St','W',NULL,NULL,NULL,NULL,'Leeds',1,1020,NULL,'01053',NULL,1228,42.353105,-72.70206,0,NULL,NULL,63), - (142,67,1,1,0,'507K College St W',507,'K',NULL,'College','St','W',NULL,NULL,NULL,NULL,'Leeds',1,1020,NULL,'01053',NULL,1228,42.353105,-72.70206,0,NULL,NULL,63), - (143,95,1,1,0,'914Y Jackson Blvd E',914,'Y',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Cartersville',1,1009,NULL,'30120',NULL,1228,34.167327,-84.82764,0,NULL,NULL,64), - (144,120,1,1,0,'914Y Jackson Blvd E',914,'Y',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Cartersville',1,1009,NULL,'30120',NULL,1228,34.167327,-84.82764,0,NULL,NULL,64), - (145,44,1,1,0,'914Y Jackson Blvd E',914,'Y',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Cartersville',1,1009,NULL,'30120',NULL,1228,34.167327,-84.82764,0,NULL,NULL,64), - (146,33,1,1,0,'909T Jackson Path NW',909,'T',NULL,'Jackson','Path','NW',NULL,NULL,NULL,NULL,'Odessa',1,1042,NULL,'79766',NULL,1228,31.749504,-102.32177,0,NULL,NULL,NULL), - (147,151,1,1,0,'227Z Van Ness St SE',227,'Z',NULL,'Van Ness','St','SE',NULL,NULL,NULL,NULL,'Omaha',1,1026,NULL,'68127',NULL,1228,41.203029,-96.05009,0,NULL,NULL,65), - (148,105,1,1,0,'227Z Van Ness St SE',227,'Z',NULL,'Van Ness','St','SE',NULL,NULL,NULL,NULL,'Omaha',1,1026,NULL,'68127',NULL,1228,41.203029,-96.05009,0,NULL,NULL,65), - (149,9,1,1,0,'227Z Van Ness St SE',227,'Z',NULL,'Van Ness','St','SE',NULL,NULL,NULL,NULL,'Omaha',1,1026,NULL,'68127',NULL,1228,41.203029,-96.05009,0,NULL,NULL,65), - (150,56,1,1,0,'555T Jackson Ave W',555,'T',NULL,'Jackson','Ave','W',NULL,NULL,NULL,NULL,'Union Grove',1,1032,NULL,'28689',NULL,1228,36.03559,-80.91265,0,NULL,NULL,NULL), - (151,66,1,1,0,'461C Van Ness Ln E',461,'C',NULL,'Van Ness','Ln','E',NULL,NULL,NULL,NULL,'Lorton',1,1045,NULL,'22079',NULL,1228,38.695915,-77.20122,0,NULL,NULL,66), - (152,41,1,1,0,'461C Van Ness Ln E',461,'C',NULL,'Van Ness','Ln','E',NULL,NULL,NULL,NULL,'Lorton',1,1045,NULL,'22079',NULL,1228,38.695915,-77.20122,0,NULL,NULL,66), - (153,73,1,1,0,'461C Van Ness Ln E',461,'C',NULL,'Van Ness','Ln','E',NULL,NULL,NULL,NULL,'Lorton',1,1045,NULL,'22079',NULL,1228,38.695915,-77.20122,0,NULL,NULL,66), - (154,48,1,1,0,'461C Van Ness Ln E',461,'C',NULL,'Van Ness','Ln','E',NULL,NULL,NULL,NULL,'Lorton',1,1045,NULL,'22079',NULL,1228,38.695915,-77.20122,0,NULL,NULL,66), - (155,84,1,1,0,'811T Dowlen Ave S',811,'T',NULL,'Dowlen','Ave','S',NULL,NULL,NULL,NULL,'Freedom',1,1037,NULL,'15042',NULL,1228,40.682566,-80.23208,0,NULL,NULL,67), - (156,93,1,1,0,'811T Dowlen Ave S',811,'T',NULL,'Dowlen','Ave','S',NULL,NULL,NULL,NULL,'Freedom',1,1037,NULL,'15042',NULL,1228,40.682566,-80.23208,0,NULL,NULL,67), - (157,6,1,1,0,'811T Dowlen Ave S',811,'T',NULL,'Dowlen','Ave','S',NULL,NULL,NULL,NULL,'Freedom',1,1037,NULL,'15042',NULL,1228,40.682566,-80.23208,0,NULL,NULL,67), - (158,11,1,1,0,'707Y Northpoint Rd E',707,'Y',NULL,'Northpoint','Rd','E',NULL,NULL,NULL,NULL,'McCune',1,1015,NULL,'66753',NULL,1228,37.364275,-95.00432,0,NULL,NULL,NULL), - (159,28,1,1,0,'725L Woodbridge St SW',725,'L',NULL,'Woodbridge','St','SW',NULL,NULL,NULL,NULL,'Arcola',1,1012,NULL,'61910',NULL,1228,39.676634,-88.30284,0,NULL,NULL,68), - (160,45,1,1,0,'725L Woodbridge St SW',725,'L',NULL,'Woodbridge','St','SW',NULL,NULL,NULL,NULL,'Arcola',1,1012,NULL,'61910',NULL,1228,39.676634,-88.30284,0,NULL,NULL,68), - (161,51,1,1,0,'725L Woodbridge St SW',725,'L',NULL,'Woodbridge','St','SW',NULL,NULL,NULL,NULL,'Arcola',1,1012,NULL,'61910',NULL,1228,39.676634,-88.30284,0,NULL,NULL,68), - (162,134,1,1,0,'787E Second Ave NE',787,'E',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Calera',1,1035,NULL,'74730',NULL,1228,33.920767,-96.44073,0,NULL,NULL,NULL), - (163,195,1,1,0,'486W Bay Path S',486,'W',NULL,'Bay','Path','S',NULL,NULL,NULL,NULL,'Fort Wayne',1,1013,NULL,'46868',NULL,1228,41.093763,-85.070713,0,NULL,NULL,69), - (164,42,1,1,0,'486W Bay Path S',486,'W',NULL,'Bay','Path','S',NULL,NULL,NULL,NULL,'Fort Wayne',1,1013,NULL,'46868',NULL,1228,41.093763,-85.070713,0,NULL,NULL,69), - (165,179,1,1,0,'486W Bay Path S',486,'W',NULL,'Bay','Path','S',NULL,NULL,NULL,NULL,'Fort Wayne',1,1013,NULL,'46868',NULL,1228,41.093763,-85.070713,0,NULL,NULL,69), - (166,59,1,1,0,'486W Bay Path S',486,'W',NULL,'Bay','Path','S',NULL,NULL,NULL,NULL,'Fort Wayne',1,1013,NULL,'46868',NULL,1228,41.093763,-85.070713,0,NULL,NULL,69), - (167,142,1,1,0,'239U Maple Blvd S',239,'U',NULL,'Maple','Blvd','S',NULL,NULL,NULL,NULL,'Barnstead',1,1028,NULL,'03218',NULL,1228,43.338347,-71.29305,0,NULL,NULL,70), - (168,46,1,1,0,'239U Maple Blvd S',239,'U',NULL,'Maple','Blvd','S',NULL,NULL,NULL,NULL,'Barnstead',1,1028,NULL,'03218',NULL,1228,43.338347,-71.29305,0,NULL,NULL,70), - (169,187,1,1,0,'239U Maple Blvd S',239,'U',NULL,'Maple','Blvd','S',NULL,NULL,NULL,NULL,'Barnstead',1,1028,NULL,'03218',NULL,1228,43.338347,-71.29305,0,NULL,NULL,70), - (170,135,1,1,0,'26P Beech Pl NW',26,'P',NULL,'Beech','Pl','NW',NULL,NULL,NULL,NULL,'Aydlett',1,1032,NULL,'27916',NULL,1228,36.314447,-75.89888,0,NULL,NULL,NULL), - (171,106,1,1,0,'907Y Dowlen Path N',907,'Y',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30377',NULL,1228,33.844371,-84.47405,0,NULL,NULL,71), - (172,152,1,1,0,'907Y Dowlen Path N',907,'Y',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30377',NULL,1228,33.844371,-84.47405,0,NULL,NULL,71), - (173,94,1,1,0,'907Y Dowlen Path N',907,'Y',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30377',NULL,1228,33.844371,-84.47405,0,NULL,NULL,71), - (174,131,1,1,0,'907Y Dowlen Path N',907,'Y',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30377',NULL,1228,33.844371,-84.47405,0,NULL,NULL,71), - (175,60,1,1,0,'972T Cadell Ln SE',972,'T',NULL,'Cadell','Ln','SE',NULL,NULL,NULL,NULL,'Ivanhoe',1,1022,NULL,'56142',NULL,1228,44.476959,-96.23,0,NULL,NULL,72), - (176,166,1,1,0,'972T Cadell Ln SE',972,'T',NULL,'Cadell','Ln','SE',NULL,NULL,NULL,NULL,'Ivanhoe',1,1022,NULL,'56142',NULL,1228,44.476959,-96.23,0,NULL,NULL,72), - (177,171,1,1,0,'972T Cadell Ln SE',972,'T',NULL,'Cadell','Ln','SE',NULL,NULL,NULL,NULL,'Ivanhoe',1,1022,NULL,'56142',NULL,1228,44.476959,-96.23,0,NULL,NULL,72), - (178,62,1,1,0,'736H States Blvd N',736,'H',NULL,'States','Blvd','N',NULL,NULL,NULL,NULL,'Gunnison',1,1023,NULL,'38746',NULL,1228,34.036412,-90.87715,0,NULL,NULL,NULL), - (179,199,1,1,0,'140N Dowlen Blvd N',140,'N',NULL,'Dowlen','Blvd','N',NULL,NULL,NULL,NULL,'Gower',1,1024,NULL,'64454',NULL,1228,39.61222,-94.5929,0,NULL,NULL,73), - (180,99,1,1,0,'140N Dowlen Blvd N',140,'N',NULL,'Dowlen','Blvd','N',NULL,NULL,NULL,NULL,'Gower',1,1024,NULL,'64454',NULL,1228,39.61222,-94.5929,0,NULL,NULL,73), - (181,180,1,1,0,'140N Dowlen Blvd N',140,'N',NULL,'Dowlen','Blvd','N',NULL,NULL,NULL,NULL,'Gower',1,1024,NULL,'64454',NULL,1228,39.61222,-94.5929,0,NULL,NULL,73), - (182,174,1,1,0,'261Y States Rd NW',261,'Y',NULL,'States','Rd','NW',NULL,NULL,NULL,NULL,'Roanoke',1,1045,NULL,'24024',NULL,1228,37.274175,-79.95786,0,NULL,NULL,NULL), - (183,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), - (184,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), - (185,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); + (1,25,1,1,0,'111A Lincoln Pl W',111,'A',NULL,'Lincoln','Pl','W',NULL,NULL,NULL,NULL,'Glen',1,1047,NULL,'25088',NULL,1228,38.382145,-81.19842,0,NULL,NULL,NULL), + (2,35,1,1,0,'965W Maple Path S',965,'W',NULL,'Maple','Path','S',NULL,NULL,NULL,NULL,'Columbus',1,1042,NULL,'78934',NULL,1228,29.712052,-96.56134,0,NULL,NULL,NULL), + (3,142,1,1,0,'805O Pine Ln W',805,'O',NULL,'Pine','Ln','W',NULL,NULL,NULL,NULL,'Collingswood',1,1029,NULL,'08108',NULL,1228,39.915263,-75.06401,0,NULL,NULL,NULL), + (4,5,1,1,0,'173K Northpoint St W',173,'K',NULL,'Northpoint','St','W',NULL,NULL,NULL,NULL,'Valparaiso',1,1013,NULL,'46385',NULL,1228,41.484652,-87.11269,0,NULL,NULL,NULL), + (5,4,1,1,0,'162H Bay Path W',162,'H',NULL,'Bay','Path','W',NULL,NULL,NULL,NULL,'Mound',1,1022,NULL,'55364',NULL,1228,44.933712,-93.66038,0,NULL,NULL,NULL), + (6,9,1,1,0,'337O Caulder Path NE',337,'O',NULL,'Caulder','Path','NE',NULL,NULL,NULL,NULL,'Moro',1,1012,NULL,'62067',NULL,1228,38.91973,-90.01241,0,NULL,NULL,NULL), + (7,123,1,1,0,'11U Cadell Pl W',11,'U',NULL,'Cadell','Pl','W',NULL,NULL,NULL,NULL,'Medford',1,1036,NULL,'97504',NULL,1228,42.334496,-122.83547,0,NULL,NULL,NULL), + (8,83,1,1,0,'891B States Rd SE',891,'B',NULL,'States','Rd','SE',NULL,NULL,NULL,NULL,'Chappell',1,1016,NULL,'40816',NULL,1228,36.987495,-83.32795,0,NULL,NULL,NULL), + (9,186,1,1,0,'933Q Cadell Pl SE',933,'Q',NULL,'Cadell','Pl','SE',NULL,NULL,NULL,NULL,'Perris',1,1004,NULL,'92599',NULL,1228,33.752886,-116.055617,0,NULL,NULL,NULL), + (10,89,1,1,0,'531K El Camino Path SE',531,'K',NULL,'El Camino','Path','SE',NULL,NULL,NULL,NULL,'Bloomingburg',1,1031,NULL,'12721',NULL,1228,41.564426,-74.4265,0,NULL,NULL,NULL), + (11,194,1,1,0,'101I Jackson Rd SE',101,'I',NULL,'Jackson','Rd','SE',NULL,NULL,NULL,NULL,'Hughesville',1,1019,NULL,'20637',NULL,1228,38.523408,-76.75435,0,NULL,NULL,NULL), + (12,168,1,1,0,'559U El Camino Pl NW',559,'U',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Youngsville',1,1037,NULL,'16371',NULL,1228,41.860809,-79.31703,0,NULL,NULL,NULL), + (13,172,1,1,0,'552E States Way S',552,'E',NULL,'States','Way','S',NULL,NULL,NULL,NULL,'Bearden',1,1003,NULL,'71720',NULL,1228,33.733334,-92.64664,0,NULL,NULL,NULL), + (14,117,1,1,0,'514D Main Ave SE',514,'D',NULL,'Main','Ave','SE',NULL,NULL,NULL,NULL,'Annandale',1,1022,NULL,'55302',NULL,1228,45.246631,-94.11692,0,NULL,NULL,NULL), + (15,197,1,1,0,'671A Woodbridge Rd W',671,'A',NULL,'Woodbridge','Rd','W',NULL,NULL,NULL,NULL,'South Bend',1,1013,NULL,'46699',NULL,1228,41.596769,-86.292991,0,NULL,NULL,NULL), + (16,185,1,1,0,'937U Maple Dr SE',937,'U',NULL,'Maple','Dr','SE',NULL,NULL,NULL,NULL,'San Antonio',1,1042,NULL,'78236',NULL,1228,29.389767,-98.61251,0,NULL,NULL,NULL), + (17,132,1,1,0,'485W States Pl W',485,'W',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Pocono Pines',1,1037,NULL,'18350',NULL,1228,41.116737,-75.46037,0,NULL,NULL,NULL), + (18,94,1,1,0,'121D Woodbridge Rd N',121,'D',NULL,'Woodbridge','Rd','N',NULL,NULL,NULL,NULL,'Saint Louis',1,1024,NULL,'63195',NULL,1228,38.6531,-90.243462,0,NULL,NULL,NULL), + (19,144,1,1,0,'468J Second Dr NE',468,'J',NULL,'Second','Dr','NE',NULL,NULL,NULL,NULL,'Wichita Falls',1,1042,NULL,'76305',NULL,1228,33.996515,-98.51781,0,NULL,NULL,NULL), + (20,87,1,1,0,'668P Caulder Ave NE',668,'P',NULL,'Caulder','Ave','NE',NULL,NULL,NULL,NULL,'Lake Linden',1,1021,NULL,'49945',NULL,1228,47.17583,-88.32904,0,NULL,NULL,NULL), + (21,42,1,1,0,'465R Lincoln Pl E',465,'R',NULL,'Lincoln','Pl','E',NULL,NULL,NULL,NULL,'Leon',1,1035,NULL,'73441',NULL,1228,33.877679,-97.42814,0,NULL,NULL,NULL), + (22,80,1,1,0,'454W Beech Ln S',454,'W',NULL,'Beech','Ln','S',NULL,NULL,NULL,NULL,'Hawi',1,1010,NULL,'96719',NULL,1228,20.241109,-155.84459,0,NULL,NULL,NULL), + (23,120,1,1,0,'48O Cadell Path S',48,'O',NULL,'Cadell','Path','S',NULL,NULL,NULL,NULL,'Danville',1,1037,NULL,'17821',NULL,1228,40.985594,-76.63449,0,NULL,NULL,NULL), + (24,169,1,1,0,'382A Caulder Path N',382,'A',NULL,'Caulder','Path','N',NULL,NULL,NULL,NULL,'Mendota',1,1022,NULL,'55150',NULL,1228,44.884265,-93.16415,0,NULL,NULL,NULL), + (25,130,1,1,0,'501Z Pine Ave N',501,'Z',NULL,'Pine','Ave','N',NULL,NULL,NULL,NULL,'Barnesville',1,1009,NULL,'30204',NULL,1228,33.05413,-84.14862,0,NULL,NULL,NULL), + (26,17,1,1,0,'421M Beech Path SE',421,'M',NULL,'Beech','Path','SE',NULL,NULL,NULL,NULL,'Pope A F B',1,1032,NULL,'28308',NULL,1228,35.173377,-79.013799,0,NULL,NULL,NULL), + (27,38,1,1,0,'138Q Caulder Pl N',138,'Q',NULL,'Caulder','Pl','N',NULL,NULL,NULL,NULL,'Lawen',1,1036,NULL,'97740',NULL,1228,43.019785,-119.069624,0,NULL,NULL,NULL), + (28,174,1,1,0,'740V Cadell Blvd W',740,'V',NULL,'Cadell','Blvd','W',NULL,NULL,NULL,NULL,'Mineral Springs',1,1032,NULL,'28108',NULL,1228,34.916253,-80.640383,0,NULL,NULL,NULL), + (29,113,1,1,0,'870B Main Rd NW',870,'B',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Punta Gorda',1,1008,NULL,'33599',NULL,1228,26.871443,-82.007115,0,NULL,NULL,NULL), + (30,171,1,1,0,'88Q Caulder Dr E',88,'Q',NULL,'Caulder','Dr','E',NULL,NULL,NULL,NULL,'Sutter',1,1012,NULL,'62373',NULL,1228,40.240004,-91.35197,0,NULL,NULL,NULL), + (31,97,1,1,0,'723M Beech St SE',723,'M',NULL,'Beech','St','SE',NULL,NULL,NULL,NULL,'Pacific',1,1024,NULL,'63069',NULL,1228,38.482353,-90.73892,0,NULL,NULL,NULL), + (32,29,1,1,0,'955M Lincoln Pl NE',955,'M',NULL,'Lincoln','Pl','NE',NULL,NULL,NULL,NULL,'Fort Myers',1,1008,NULL,'33913',NULL,1228,26.542097,-81.69984,0,NULL,NULL,NULL), + (33,138,1,1,0,'396E Maple Way N',396,'E',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Vergennes',1,1012,NULL,'62994',NULL,1228,37.901441,-89.33485,0,NULL,NULL,NULL), + (34,105,1,1,0,'806O Pine Way E',806,'O',NULL,'Pine','Way','E',NULL,NULL,NULL,NULL,'Vernal',1,1043,NULL,'84078',NULL,1228,40.514262,-109.54223,0,NULL,NULL,NULL), + (35,192,1,1,0,'566U Dowlen Way NW',566,'U',NULL,'Dowlen','Way','NW',NULL,NULL,NULL,NULL,'Dodson',1,1042,NULL,'79230',NULL,1228,34.698438,-100.06623,0,NULL,NULL,NULL), + (36,37,1,1,0,'21G Martin Luther King Pl E',21,'G',NULL,'Martin Luther King','Pl','E',NULL,NULL,NULL,NULL,'Haviland',1,1034,NULL,'45851',NULL,1228,41.030911,-84.60213,0,NULL,NULL,NULL), + (37,165,1,1,0,'530L El Camino Pl NW',530,'L',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Ringgold',1,1045,NULL,'24586',NULL,1228,36.595244,-79.28647,0,NULL,NULL,NULL), + (38,184,1,1,0,'25P Cadell St W',25,'P',NULL,'Cadell','St','W',NULL,NULL,NULL,NULL,'Holder',1,1008,NULL,'34445',NULL,1228,28.948753,-82.406476,0,NULL,NULL,NULL), + (39,158,1,1,0,'154C Dowlen Path S',154,'C',NULL,'Dowlen','Path','S',NULL,NULL,NULL,NULL,'Butternut',1,1048,NULL,'54514',NULL,1228,46.024995,-90.44778,0,NULL,NULL,NULL), + (40,108,1,1,0,'419Q Dowlen Way SW',419,'Q',NULL,'Dowlen','Way','SW',NULL,NULL,NULL,NULL,'Port Washington',1,1048,NULL,'53074',NULL,1228,43.40181,-87.88001,0,NULL,NULL,NULL), + (41,96,1,1,0,'975E College Path S',975,'E',NULL,'College','Path','S',NULL,NULL,NULL,NULL,'Squirrel',1,1011,NULL,'83447',NULL,1228,44.319199,-111.60171,0,NULL,NULL,NULL), + (42,188,1,1,0,'377K Caulder Ave NW',377,'K',NULL,'Caulder','Ave','NW',NULL,NULL,NULL,NULL,'Newtown',1,1013,NULL,'47969',NULL,1228,40.205056,-87.15089,0,NULL,NULL,NULL), + (43,58,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,NULL), + (44,190,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,NULL), + (45,155,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,NULL), + (46,26,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,NULL), + (47,53,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,NULL), + (48,156,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,NULL), + (49,131,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,NULL), + (50,10,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,NULL), + (51,177,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,NULL), + (52,3,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL), + (53,191,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,NULL), + (54,134,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,NULL), + (55,73,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,NULL), + (56,88,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,NULL), + (57,23,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,NULL), + (58,51,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,NULL), + (59,43,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,NULL), + (60,75,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,NULL), + (61,65,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,NULL), + (62,159,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,NULL), + (63,103,3,1,0,'615V Caulder Pl SW',615,'V',NULL,'Caulder','Pl','SW',NULL,'Community Relations',NULL,NULL,'Maupin',1,1036,NULL,'97037',NULL,1228,45.093643,-121.10814,0,NULL,NULL,NULL), + (64,187,2,1,0,'615V Caulder Pl SW',615,'V',NULL,'Caulder','Pl','SW',NULL,'Community Relations',NULL,NULL,'Maupin',1,1036,NULL,'97037',NULL,1228,45.093643,-121.10814,0,NULL,NULL,63), + (65,135,3,1,0,'506H Woodbridge Path E',506,'H',NULL,'Woodbridge','Path','E',NULL,'Editorial Dept',NULL,NULL,'Sacramento',1,1004,NULL,'95813',NULL,1228,38.377411,-121.444429,0,NULL,NULL,NULL), + (66,115,2,1,0,'506H Woodbridge Path E',506,'H',NULL,'Woodbridge','Path','E',NULL,'Editorial Dept',NULL,NULL,'Sacramento',1,1004,NULL,'95813',NULL,1228,38.377411,-121.444429,0,NULL,NULL,65), + (67,77,3,1,0,'45P Woodbridge Ln NE',45,'P',NULL,'Woodbridge','Ln','NE',NULL,'Churchgate',NULL,NULL,'Jerome',1,1011,NULL,'83338',NULL,1228,42.710124,-114.46394,0,NULL,NULL,NULL), + (68,81,2,1,0,'45P Woodbridge Ln NE',45,'P',NULL,'Woodbridge','Ln','NE',NULL,'Churchgate',NULL,NULL,'Jerome',1,1011,NULL,'83338',NULL,1228,42.710124,-114.46394,0,NULL,NULL,67), + (69,146,3,1,0,'810P Beech Pl SW',810,'P',NULL,'Beech','Pl','SW',NULL,'Receiving',NULL,NULL,'Winslow',1,1012,NULL,'61089',NULL,1228,42.475078,-89.81607,0,NULL,NULL,NULL), + (70,178,2,1,0,'810P Beech Pl SW',810,'P',NULL,'Beech','Pl','SW',NULL,'Receiving',NULL,NULL,'Winslow',1,1012,NULL,'61089',NULL,1228,42.475078,-89.81607,0,NULL,NULL,69), + (71,50,3,1,0,'763G College Ave S',763,'G',NULL,'College','Ave','S',NULL,'c/o PO Plus',NULL,NULL,'Herrick',1,1012,NULL,'62431',NULL,1228,39.228594,-88.98873,0,NULL,NULL,NULL), + (72,22,3,1,0,'630O Main St S',630,'O',NULL,'Main','St','S',NULL,'Urgent',NULL,NULL,'Boston',1,1020,NULL,'02106',NULL,1228,42.354318,-71.073449,0,NULL,NULL,NULL), + (73,33,2,1,0,'630O Main St S',630,'O',NULL,'Main','St','S',NULL,'Urgent',NULL,NULL,'Boston',1,1020,NULL,'02106',NULL,1228,42.354318,-71.073449,0,NULL,NULL,72), + (74,59,3,1,0,'389N Northpoint Path NW',389,'N',NULL,'Northpoint','Path','NW',NULL,'Attn: Development',NULL,NULL,'Fresno',1,1004,NULL,'93779',NULL,1228,36.746375,-119.639658,0,NULL,NULL,NULL), + (75,185,2,0,0,'389N Northpoint Path NW',389,'N',NULL,'Northpoint','Path','NW',NULL,'Attn: Development',NULL,NULL,'Fresno',1,1004,NULL,'93779',NULL,1228,36.746375,-119.639658,0,NULL,NULL,74), + (76,68,3,1,0,'520Z Pine Pl NW',520,'Z',NULL,'Pine','Pl','NW',NULL,'c/o OPDC',NULL,NULL,'Flintstone',1,1019,NULL,'21530',NULL,1228,39.697548,-78.53893,0,NULL,NULL,NULL), + (77,85,2,1,0,'520Z Pine Pl NW',520,'Z',NULL,'Pine','Pl','NW',NULL,'c/o OPDC',NULL,NULL,'Flintstone',1,1019,NULL,'21530',NULL,1228,39.697548,-78.53893,0,NULL,NULL,76), + (78,133,3,1,0,'145A Caulder Ln N',145,'A',NULL,'Caulder','Ln','N',NULL,'Receiving',NULL,NULL,'Chester',1,1028,NULL,'03036',NULL,1228,42.967823,-71.23453,0,NULL,NULL,NULL), + (79,72,2,1,0,'145A Caulder Ln N',145,'A',NULL,'Caulder','Ln','N',NULL,'Receiving',NULL,NULL,'Chester',1,1028,NULL,'03036',NULL,1228,42.967823,-71.23453,0,NULL,NULL,78), + (80,52,3,1,0,'686T Lincoln Dr S',686,'T',NULL,'Lincoln','Dr','S',NULL,'c/o PO Plus',NULL,NULL,'Standish',1,1004,NULL,'96128',NULL,1228,40.34863,-120.4065,0,NULL,NULL,NULL), + (81,109,2,1,0,'686T Lincoln Dr S',686,'T',NULL,'Lincoln','Dr','S',NULL,'c/o PO Plus',NULL,NULL,'Standish',1,1004,NULL,'96128',NULL,1228,40.34863,-120.4065,0,NULL,NULL,80), + (82,19,3,1,0,'337X Beech Ln NE',337,'X',NULL,'Beech','Ln','NE',NULL,'Mailstop 101',NULL,NULL,'Helenwood',1,1041,NULL,'37755',NULL,1228,36.434757,-84.53288,0,NULL,NULL,NULL), + (83,129,2,1,0,'337X Beech Ln NE',337,'X',NULL,'Beech','Ln','NE',NULL,'Mailstop 101',NULL,NULL,'Helenwood',1,1041,NULL,'37755',NULL,1228,36.434757,-84.53288,0,NULL,NULL,82), + (84,161,3,1,0,'617Q Maple Dr SW',617,'Q',NULL,'Maple','Dr','SW',NULL,'Attn: Development',NULL,NULL,'Joppa',1,1000,NULL,'35087',NULL,1228,34.303718,-86.58323,0,NULL,NULL,NULL), + (85,69,3,1,0,'326N Second Pl W',326,'N',NULL,'Second','Pl','W',NULL,'Community Relations',NULL,NULL,'Hyannis Port',1,1020,NULL,'02647',NULL,1228,41.63275,-70.30435,0,NULL,NULL,NULL), + (86,4,2,0,0,'326N Second Pl W',326,'N',NULL,'Second','Pl','W',NULL,'Community Relations',NULL,NULL,'Hyannis Port',1,1020,NULL,'02647',NULL,1228,41.63275,-70.30435,0,NULL,NULL,85), + (87,95,3,1,0,'571U El Camino Pl S',571,'U',NULL,'El Camino','Pl','S',NULL,'Donor Relations',NULL,NULL,'Lagrange',1,1034,NULL,'44050',NULL,1228,41.259352,-82.13542,0,NULL,NULL,NULL), + (88,64,3,1,0,'475G Dowlen Ln SW',475,'G',NULL,'Dowlen','Ln','SW',NULL,'Donor Relations',NULL,NULL,'Yamhill',1,1036,NULL,'97148',NULL,1228,45.352399,-123.22502,0,NULL,NULL,NULL), + (89,139,3,1,0,'446M Second Ln E',446,'M',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Jacksonville',1,1008,NULL,'32237',NULL,1228,30.34494,-81.683107,0,NULL,NULL,NULL), + (90,197,2,0,0,'446M Second Ln E',446,'M',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Jacksonville',1,1008,NULL,'32237',NULL,1228,30.34494,-81.683107,0,NULL,NULL,89), + (91,122,3,1,0,'20O Beech St SW',20,'O',NULL,'Beech','St','SW',NULL,'Attn: Development',NULL,NULL,'Cranfills Gap',1,1042,NULL,'76637',NULL,1228,31.771383,-97.82298,0,NULL,NULL,NULL), + (92,18,2,1,0,'20O Beech St SW',20,'O',NULL,'Beech','St','SW',NULL,'Attn: Development',NULL,NULL,'Cranfills Gap',1,1042,NULL,'76637',NULL,1228,31.771383,-97.82298,0,NULL,NULL,91), + (93,7,3,1,0,'21W Caulder Blvd SE',21,'W',NULL,'Caulder','Blvd','SE',NULL,'Urgent',NULL,NULL,'Hanover',1,1019,NULL,'21098',NULL,1228,38.974203,-76.594942,0,NULL,NULL,NULL), + (94,148,3,1,0,'725M Cadell Rd NW',725,'M',NULL,'Cadell','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Mapleton',1,1012,NULL,'61547',NULL,1228,40.619174,-89.72628,0,NULL,NULL,NULL), + (95,96,2,0,0,'725M Cadell Rd NW',725,'M',NULL,'Cadell','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Mapleton',1,1012,NULL,'61547',NULL,1228,40.619174,-89.72628,0,NULL,NULL,94), + (96,67,3,1,0,'323S Bay Pl E',323,'S',NULL,'Bay','Pl','E',NULL,'Disbursements',NULL,NULL,'Owensboro',1,1016,NULL,'42302',NULL,1228,37.745491,-87.112823,0,NULL,NULL,NULL), + (97,76,2,1,0,'323S Bay Pl E',323,'S',NULL,'Bay','Pl','E',NULL,'Disbursements',NULL,NULL,'Owensboro',1,1016,NULL,'42302',NULL,1228,37.745491,-87.112823,0,NULL,NULL,96), + (98,16,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43), + (99,24,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43), + (100,189,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43), + (101,86,1,1,0,'258S Martin Luther King Pl W',258,'S',NULL,'Martin Luther King','Pl','W',NULL,NULL,NULL,NULL,'Stafford Springs',1,1006,NULL,'06076',NULL,1228,41.979871,-72.27863,0,NULL,NULL,NULL), + (102,176,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (103,151,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (104,20,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (105,141,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (106,200,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (107,125,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (108,55,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (109,49,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (110,179,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46), + (111,34,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46), + (112,164,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46), + (113,150,1,1,0,'107Y Cadell Blvd S',107,'Y',NULL,'Cadell','Blvd','S',NULL,NULL,NULL,NULL,'Oklahoma City',1,1035,NULL,'73131',NULL,1228,35.576357,-97.46924,0,NULL,NULL,NULL), + (114,193,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47), + (115,44,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47), + (116,60,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47), + (117,183,1,1,0,'885A Second Rd W',885,'A',NULL,'Second','Rd','W',NULL,NULL,NULL,NULL,'Bouse',1,1002,NULL,'85325',NULL,1228,33.946064,-113.9537,0,NULL,NULL,NULL), + (118,109,1,0,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (119,76,1,0,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (120,126,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (121,84,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (122,149,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (123,147,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (124,74,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (125,46,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (126,163,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (127,162,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (128,66,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (129,140,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (130,14,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (131,170,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (132,45,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (133,21,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (134,199,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (135,112,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (136,79,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (137,124,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (138,91,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (139,104,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (140,92,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (141,48,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (142,100,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54), + (143,160,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54), + (144,57,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54), + (145,110,1,1,0,'717I Beech Ave SW',717,'I',NULL,'Beech','Ave','SW',NULL,NULL,NULL,NULL,'Shreveport',1,1017,NULL,'71161',NULL,1228,32.607556,-93.75256,0,NULL,NULL,NULL), + (146,6,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55), + (147,13,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55), + (148,62,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55), + (149,198,1,1,0,'866W College Rd SE',866,'W',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Senoia',1,1009,NULL,'30276',NULL,1228,33.281102,-84.58017,0,NULL,NULL,NULL), + (150,137,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (151,99,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (152,116,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (153,15,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (154,182,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (155,114,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (156,32,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (157,180,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (158,90,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58), + (159,39,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58), + (160,41,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58), + (161,18,1,0,0,'276T Caulder Blvd W',276,'T',NULL,'Caulder','Blvd','W',NULL,NULL,NULL,NULL,'Yanceyville',1,1032,NULL,'27379',NULL,1228,36.387904,-79.33107,0,NULL,NULL,NULL), + (162,121,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59), + (163,196,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59), + (164,195,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59), + (165,2,1,1,0,'552C Pine Blvd W',552,'C',NULL,'Pine','Blvd','W',NULL,NULL,NULL,NULL,'Ozawkie',1,1015,NULL,'66070',NULL,1228,39.201834,-95.44963,0,NULL,NULL,NULL), + (166,12,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (167,61,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (168,63,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (169,154,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (170,181,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61), + (171,175,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61), + (172,85,1,0,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61), + (173,47,1,1,0,'684E Second Ave NE',684,'E',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Umatilla',1,1008,NULL,'32784',NULL,1228,28.948549,-81.70621,0,NULL,NULL,NULL), + (174,118,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62), + (175,111,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62), + (176,152,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62), + (177,36,1,1,0,'917Y Bay Dr NW',917,'Y',NULL,'Bay','Dr','NW',NULL,NULL,NULL,NULL,'Woodstock',1,1012,NULL,'60098',NULL,1228,42.316121,-88.43884,0,NULL,NULL,NULL), + (178,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL), + (179,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL), + (180,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_address` ENABLE KEYS */; UNLOCK TABLES; @@ -1976,208 +1990,208 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contact` WRITE; /*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */; INSERT INTO `civicrm_contact` (`id`, `contact_type`, `external_identifier`, `display_name`, `organization_name`, `contact_sub_type`, `first_name`, `middle_name`, `last_name`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `sort_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `hash`, `api_key`, `source`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`, `preferred_mail_format`) VALUES - (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2023-09-19 09:27:26','Both'), - (2,'Individual',NULL,'Dr. Maxwell Lee',NULL,NULL,'Maxwell','','Lee',1,0,0,0,0,0,NULL,'Lee, Maxwell',NULL,NULL,NULL,'4',NULL,'3744211407',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Lee',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:45','Both'), - (3,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,'5',NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (4,'Individual',NULL,'arlynes18@airmail.co.uk',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'arlynes18@airmail.co.uk',NULL,NULL,NULL,NULL,NULL,'2285252027',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear arlynes18@airmail.co.uk',1,NULL,'Dear arlynes18@airmail.co.uk',1,NULL,'arlynes18@airmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:45','Both'), - (5,'Individual',NULL,'Santina Robertson-Wattson',NULL,NULL,'Santina','','Robertson-Wattson',0,0,0,0,1,0,NULL,'Robertson-Wattson, Santina',NULL,NULL,NULL,NULL,NULL,'3306118253',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Robertson-Wattson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (6,'Individual',NULL,'Magan Barkley',NULL,NULL,'Magan','Y','Barkley',1,0,0,0,0,0,NULL,'Barkley, Magan',NULL,NULL,NULL,'5',NULL,'3229711525',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Barkley',NULL,1,'1994-05-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (7,'Household',NULL,'Smith-Samson family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Smith-Samson family',NULL,NULL,NULL,'1',NULL,'3253922065',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Smith-Samson family',5,NULL,'Dear Smith-Samson family',2,NULL,'Smith-Samson family',NULL,NULL,NULL,0,NULL,'Smith-Samson family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:47','Both'), - (8,'Individual',NULL,'Ms. Betty Terrell',NULL,NULL,'Betty','J','Terrell',0,0,0,0,1,0,NULL,'Terrell, Betty',NULL,NULL,NULL,'3',NULL,'2284472069',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Ms. Betty Terrell',NULL,NULL,'1949-10-27',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:45','Both'), - (9,'Individual',NULL,'Mrs. Beula Yadav',NULL,NULL,'Beula','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Beula',NULL,NULL,NULL,NULL,NULL,'852214760',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Mrs. Beula Yadav',NULL,1,'1995-09-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (10,'Individual',NULL,'Dr. Beula González',NULL,NULL,'Beula','S','González',0,0,0,0,1,0,NULL,'González, Beula',NULL,NULL,NULL,NULL,NULL,'2578203794',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Dr. Beula González',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:46','Both'), - (11,'Individual',NULL,'Dr. Lou Barkley','Community Empowerment Services',NULL,'Lou','','Barkley',0,0,0,0,0,0,NULL,'Barkley, Lou',NULL,NULL,NULL,NULL,NULL,'1999867359',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Barkley',NULL,2,'1986-08-09',0,NULL,NULL,NULL,NULL,NULL,178,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (12,'Individual',NULL,'Ashley Robertson',NULL,NULL,'Ashley','A','Robertson',0,0,0,0,0,0,NULL,'Robertson, Ashley',NULL,NULL,NULL,NULL,NULL,'3118372484',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:46','Both'), - (13,'Individual',NULL,'Dr. Merrie Grant',NULL,NULL,'Merrie','','Grant',0,1,0,0,0,0,NULL,'Grant, Merrie',NULL,NULL,NULL,'2',NULL,'1746149346',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Dr. Merrie Grant',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (14,'Individual',NULL,'Kacey Robertson-Wattson',NULL,NULL,'Kacey','P','Robertson-Wattson',0,0,0,0,0,0,NULL,'Robertson-Wattson, Kacey',NULL,NULL,NULL,NULL,NULL,'3302618840',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Robertson-Wattson',NULL,1,'2000-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (15,'Individual',NULL,'Dr. Lou Bachman',NULL,NULL,'Lou','W','Bachman',0,0,0,0,0,0,NULL,'Bachman, Lou',NULL,NULL,NULL,NULL,NULL,'2699316578',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Bachman',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:46','Both'), - (16,'Individual',NULL,'Ms. Kandace Samuels',NULL,NULL,'Kandace','','Samuels',0,0,0,0,1,0,NULL,'Samuels, Kandace',NULL,NULL,NULL,'4',NULL,'757003024',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Ms. Kandace Samuels',NULL,1,'1939-07-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:44','Both'), - (17,'Individual',NULL,'Ms. Kandace Cruz-Wattson','New York Action Partners',NULL,'Kandace','','Cruz-Wattson',1,0,0,0,0,0,NULL,'Cruz-Wattson, Kandace',NULL,NULL,NULL,NULL,NULL,'3258057120',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Ms. Kandace Cruz-Wattson',NULL,1,'1999-07-08',0,NULL,NULL,NULL,NULL,NULL,18,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (18,'Organization',NULL,'New York Action Partners','New York Action Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'New York Action Partners',NULL,NULL,NULL,NULL,NULL,'3407986679',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New York Action Partners',NULL,NULL,NULL,0,NULL,NULL,17,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (19,'Organization',NULL,'Pine Advocacy Solutions','Pine Advocacy Solutions',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Pine Advocacy Solutions',NULL,NULL,NULL,'5',NULL,'527600052',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pine Advocacy Solutions',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (20,'Household',NULL,'Cruz-Wattson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Cruz-Wattson family',NULL,NULL,NULL,NULL,NULL,'1336326402',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Wattson family',5,NULL,'Dear Cruz-Wattson family',2,NULL,'Cruz-Wattson family',NULL,NULL,NULL,0,NULL,'Cruz-Wattson family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:47','Both'), - (21,'Individual',NULL,'Rolando Cruz II',NULL,NULL,'Rolando','M','Cruz',0,1,0,0,1,0,NULL,'Cruz, Rolando',NULL,NULL,NULL,'4',NULL,'948578294',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Cruz II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:46','Both'), - (22,'Individual',NULL,'Andrew Ivanov',NULL,NULL,'Andrew','H','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Andrew',NULL,NULL,NULL,'4',NULL,'2164085667',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Ivanov',NULL,2,'1954-05-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:45','Both'), - (23,'Organization',NULL,'Georgia Poetry Alliance','Georgia Poetry Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Georgia Poetry Alliance',NULL,NULL,NULL,'2',NULL,'1106256319',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Georgia Poetry Alliance',NULL,NULL,NULL,0,NULL,NULL,175,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (24,'Individual',NULL,'Brent Wagner',NULL,NULL,'Brent','','Wagner',0,1,0,0,0,0,NULL,'Wagner, Brent',NULL,NULL,NULL,'2',NULL,'2290384277',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Wagner',NULL,2,'1979-05-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:45','Both'), - (25,'Individual',NULL,'ivanov.esta@infomail.com',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'ivanov.esta@infomail.com',NULL,NULL,NULL,NULL,NULL,'2741345214',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear ivanov.esta@infomail.com',1,NULL,'Dear ivanov.esta@infomail.com',1,NULL,'ivanov.esta@infomail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:46','Both'), - (26,'Household',NULL,'Jacobs-Olsen family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Jacobs-Olsen family',NULL,NULL,NULL,'5',NULL,'4042732081',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jacobs-Olsen family',5,NULL,'Dear Jacobs-Olsen family',2,NULL,'Jacobs-Olsen family',NULL,NULL,NULL,0,NULL,'Jacobs-Olsen family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (27,'Individual',NULL,'Daren Terrell',NULL,NULL,'Daren','','Terrell',0,0,0,0,1,0,NULL,'Terrell, Daren',NULL,NULL,NULL,NULL,NULL,'1552940951',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Terrell',NULL,2,'2010-08-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (28,'Individual',NULL,'Rebekah Patel-Terrell',NULL,NULL,'Rebekah','X','Patel-Terrell',0,0,0,0,0,0,NULL,'Patel-Terrell, Rebekah',NULL,NULL,NULL,'5',NULL,'1547587574',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Patel-Terrell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (29,'Organization',NULL,'Dodson Culture Collective','Dodson Culture Collective',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Dodson Culture Collective',NULL,NULL,NULL,'5',NULL,'1949993101',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dodson Culture Collective',NULL,NULL,NULL,0,NULL,NULL,30,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (30,'Individual',NULL,'sdeforest81@sample.net','Dodson Culture Collective',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'sdeforest81@sample.net',NULL,NULL,NULL,'1',NULL,'1766024395',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear sdeforest81@sample.net',1,NULL,'Dear sdeforest81@sample.net',1,NULL,'sdeforest81@sample.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,29,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (31,'Individual',NULL,'Daren Grant',NULL,NULL,'Daren','G','Grant',1,0,0,0,1,0,NULL,'Grant, Daren',NULL,NULL,NULL,NULL,NULL,'3746795138',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Grant',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (32,'Individual',NULL,'Ms. Teresa Reynolds',NULL,NULL,'Teresa','','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Teresa',NULL,NULL,NULL,'3',NULL,'1708756275',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Ms. Teresa Reynolds',NULL,NULL,'1966-09-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (33,'Individual',NULL,'Truman Cooper Sr.',NULL,NULL,'Truman','','Cooper',0,1,0,0,0,0,NULL,'Cooper, Truman',NULL,NULL,NULL,'1',NULL,'938772676',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Cooper Sr.',NULL,2,'1962-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (34,'Individual',NULL,'Dr. Heidi Jameson',NULL,NULL,'Heidi','E','Jameson',0,1,0,0,0,0,NULL,'Jameson, Heidi',NULL,NULL,NULL,NULL,NULL,'1155008282',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Dr. Heidi Jameson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:46','Both'), - (35,'Individual',NULL,'Ms. Arlyne Terrell',NULL,NULL,'Arlyne','Y','Terrell',0,0,0,0,0,0,NULL,'Terrell, Arlyne',NULL,NULL,NULL,NULL,NULL,'1402664219',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Ms. Arlyne Terrell',NULL,1,'1971-07-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (36,'Individual',NULL,'Dr. Scarlet Wattson','Saint Paul Health Partners',NULL,'Scarlet','','Wattson',0,0,0,0,0,0,NULL,'Wattson, Scarlet',NULL,NULL,NULL,NULL,NULL,'2653124972',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Dr. Scarlet Wattson',NULL,1,'1971-03-14',0,NULL,NULL,NULL,NULL,NULL,194,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (37,'Individual',NULL,'Roland Cruz-Wattson',NULL,NULL,'Roland','H','Cruz-Wattson',0,0,0,0,1,0,NULL,'Cruz-Wattson, Roland',NULL,NULL,NULL,NULL,NULL,'3292731841',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Cruz-Wattson',NULL,2,'2004-04-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (38,'Individual',NULL,'Ms. Arlyne Ivanov',NULL,NULL,'Arlyne','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Arlyne',NULL,NULL,NULL,NULL,NULL,'4232136365',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Ms. Arlyne Ivanov',NULL,NULL,'1967-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (39,'Individual',NULL,'Mrs. Herminia Olsen',NULL,NULL,'Herminia','U','Olsen',0,0,0,0,0,0,NULL,'Olsen, Herminia',NULL,NULL,NULL,'1',NULL,'52824125',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Mrs. Herminia Olsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:45','Both'), - (40,'Individual',NULL,'Mrs. Betty Samson','United Wellness Alliance',NULL,'Betty','','Samson',1,1,0,0,0,0,NULL,'Samson, Betty',NULL,NULL,NULL,NULL,NULL,'3629042466',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Mrs. Betty Samson',NULL,NULL,'1979-07-14',0,NULL,NULL,NULL,NULL,NULL,88,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (41,'Individual',NULL,'Ashlie Blackwell-Robertson',NULL,NULL,'Ashlie','M','Blackwell-Robertson',0,0,0,0,1,0,NULL,'Blackwell-Robertson, Ashlie',NULL,NULL,NULL,'4',NULL,'2138458798',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Blackwell-Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (42,'Individual',NULL,'Justina Jacobs-Olsen',NULL,NULL,'Justina','','Jacobs-Olsen',1,0,0,0,0,0,NULL,'Jacobs-Olsen, Justina',NULL,NULL,NULL,'5',NULL,'112862480',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Jacobs-Olsen',NULL,NULL,'2010-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (43,'Household',NULL,'Yadav family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Yadav family',NULL,NULL,NULL,NULL,NULL,'1777336212',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Yadav family',5,NULL,'Dear Yadav family',2,NULL,'Yadav family',NULL,NULL,NULL,0,NULL,'Yadav family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (44,'Individual',NULL,'clintc@fakemail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'clintc@fakemail.co.nz',NULL,NULL,NULL,'4',NULL,'3915390282',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear clintc@fakemail.co.nz',1,NULL,'Dear clintc@fakemail.co.nz',1,NULL,'clintc@fakemail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (45,'Individual',NULL,'Valene Terrell',NULL,NULL,'Valene','I','Terrell',0,0,0,0,0,0,NULL,'Terrell, Valene',NULL,NULL,NULL,NULL,NULL,'2134208638',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Terrell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (46,'Individual',NULL,'adams-bachman.eleonor@spamalot.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'adams-bachman.eleonor@spamalot.co.in',NULL,NULL,NULL,'1',NULL,'1131439382',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear adams-bachman.eleonor@spamalot.co.in',1,NULL,'Dear adams-bachman.eleonor@spamalot.co.in',1,NULL,'adams-bachman.eleonor@spamalot.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (47,'Individual',NULL,'Ms. Damaris Samuels',NULL,NULL,'Damaris','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Damaris',NULL,NULL,NULL,'1',NULL,'3144894953',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Ms. Damaris Samuels',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:46','Both'), - (48,'Individual',NULL,'Alida Blackwell',NULL,NULL,'Alida','A','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Alida',NULL,NULL,NULL,NULL,NULL,'61950812',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (49,'Individual',NULL,'Dr. Jay Dimitrov',NULL,NULL,'Jay','M','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Jay',NULL,NULL,NULL,NULL,NULL,'512179988',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Dr. Jay Dimitrov',NULL,2,'1945-10-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:45','Both'), - (50,'Individual',NULL,'Dr. Landon Jameson II','Global Environmental Alliance',NULL,'Landon','','Jameson',0,0,0,0,0,0,NULL,'Jameson, Landon',NULL,NULL,NULL,'4',NULL,'548600134',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon Jameson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,109,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (51,'Individual',NULL,'Allen Terrell II',NULL,NULL,'Allen','R','Terrell',0,0,0,0,0,0,NULL,'Terrell, Allen',NULL,NULL,NULL,NULL,NULL,'1891444288',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Terrell II',NULL,2,'2003-04-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (52,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terrell family',NULL,NULL,NULL,'2',NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (53,'Individual',NULL,'Princess Robertson',NULL,NULL,'Princess','P','Robertson',1,0,0,0,0,0,NULL,'Robertson, Princess',NULL,NULL,NULL,'5',NULL,'1575581088',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:45','Both'), - (54,'Individual',NULL,'Mr. Jay Barkley',NULL,NULL,'Jay','','Barkley',1,0,0,0,1,0,NULL,'Barkley, Jay',NULL,NULL,NULL,NULL,NULL,'3834351816',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Mr. Jay Barkley',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:45','Both'), - (55,'Individual',NULL,'Ms. Elizabeth Samuels',NULL,NULL,'Elizabeth','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Elizabeth',NULL,NULL,NULL,NULL,NULL,'815083469',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Ms. Elizabeth Samuels',NULL,1,'1970-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:45','Both'), - (56,'Individual',NULL,'Mr. Brent Yadav',NULL,NULL,'Brent','','Yadav',1,0,0,0,0,0,NULL,'Yadav, Brent',NULL,NULL,NULL,NULL,NULL,'3167259095',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Mr. Brent Yadav',NULL,NULL,'1983-09-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (57,'Individual',NULL,'Mr. Barry Parker',NULL,NULL,'Barry','','Parker',1,0,0,0,0,0,NULL,'Parker, Barry',NULL,NULL,NULL,'5',NULL,'259830884',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Mr. Barry Parker',NULL,NULL,'1935-02-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:46','Both'), - (58,'Household',NULL,'Ivanov-Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Ivanov-Reynolds family',NULL,NULL,NULL,NULL,NULL,'1232257104',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov-Reynolds family',5,NULL,'Dear Ivanov-Reynolds family',2,NULL,'Ivanov-Reynolds family',NULL,NULL,NULL,0,NULL,'Ivanov-Reynolds family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:47','Both'), - (59,'Individual',NULL,'Dr. Brzęczysław Jacobs III',NULL,NULL,'Brzęczysław','P','Jacobs',0,1,0,0,0,0,NULL,'Jacobs, Brzęczysław',NULL,NULL,NULL,'1',NULL,'1026883277',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Dr. Brzęczysław Jacobs III',NULL,2,'1976-06-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (60,'Individual',NULL,'Mr. Russell Parker',NULL,NULL,'Russell','','Parker',1,1,0,0,0,0,NULL,'Parker, Russell',NULL,NULL,NULL,NULL,NULL,'1852900847',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Mr. Russell Parker',NULL,2,'1955-01-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (61,'Household',NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,'1649131487',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Zope family',5,NULL,'Dear Zope family',2,NULL,'Zope family',NULL,NULL,NULL,0,NULL,'Zope family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (62,'Individual',NULL,'tobyp46@testmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'tobyp46@testmail.co.nz',NULL,NULL,NULL,NULL,NULL,'1891258509',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear tobyp46@testmail.co.nz',1,NULL,'Dear tobyp46@testmail.co.nz',1,NULL,'tobyp46@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:49','Both'), - (63,'Individual',NULL,'Ms. Rebekah Dimitrov',NULL,NULL,'Rebekah','O','Dimitrov',0,1,0,0,0,0,NULL,'Dimitrov, Rebekah',NULL,NULL,NULL,'3',NULL,'4037028038',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Ms. Rebekah Dimitrov',NULL,1,'1992-10-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:43','2023-09-19 09:27:48','Both'), - (64,'Individual',NULL,'Jed Blackwell',NULL,NULL,'Jed','U','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Jed',NULL,NULL,NULL,NULL,NULL,'38907930',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Blackwell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (65,'Individual',NULL,'Santina Prentice',NULL,NULL,'Santina','E','Prentice',0,0,0,0,0,0,NULL,'Prentice, Santina',NULL,NULL,NULL,'2',NULL,'3560693906',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Prentice',NULL,NULL,'1970-11-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (66,'Individual',NULL,'Ms. Carylon Robertson',NULL,NULL,'Carylon','W','Robertson',1,0,0,0,0,0,NULL,'Robertson, Carylon',NULL,NULL,NULL,'3',NULL,'356199954',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Ms. Carylon Robertson',NULL,1,'1967-03-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (67,'Individual',NULL,'Lou Zope II',NULL,NULL,'Lou','V','Zope',1,1,0,0,0,0,NULL,'Zope, Lou',NULL,NULL,NULL,'1',NULL,'2741422295',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Zope II',NULL,2,'1966-02-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (68,'Individual',NULL,'chowskia@lol.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'chowskia@lol.biz',NULL,NULL,NULL,'5',NULL,'3845787218',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear chowskia@lol.biz',1,NULL,'Dear chowskia@lol.biz',1,NULL,'chowskia@lol.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (69,'Individual',NULL,'Ashley Wagner',NULL,NULL,'Ashley','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Ashley',NULL,NULL,NULL,NULL,NULL,'1660268830',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Wagner',NULL,1,'1982-03-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (70,'Individual',NULL,'Princess González',NULL,NULL,'Princess','','González',0,0,0,0,0,0,NULL,'González, Princess',NULL,NULL,NULL,NULL,NULL,'4053474994',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess González',NULL,1,'1937-11-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (71,'Organization',NULL,'United Peace Network','United Peace Network',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'United Peace Network',NULL,NULL,NULL,'5',NULL,'2415714498',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Peace Network',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (72,'Individual',NULL,'Dr. Maxwell Terrell Jr.',NULL,NULL,'Maxwell','M','Terrell',0,0,0,0,1,0,NULL,'Terrell, Maxwell',NULL,NULL,NULL,NULL,NULL,'4143618431',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Terrell Jr.',NULL,2,'1965-04-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (73,'Individual',NULL,'Iris Blackwell-Robertson',NULL,NULL,'Iris','','Blackwell-Robertson',1,0,0,0,0,0,NULL,'Blackwell-Robertson, Iris',NULL,NULL,NULL,NULL,NULL,'519198523',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Blackwell-Robertson',NULL,NULL,'1983-07-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (74,'Individual',NULL,'Ms. Sharyn González',NULL,NULL,'Sharyn','Y','González',1,1,0,0,1,0,NULL,'González, Sharyn',NULL,NULL,NULL,NULL,NULL,'491929242',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Ms. Sharyn González',NULL,1,'1937-09-11',1,'2022-11-06',NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (75,'Household',NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Nielsen family',NULL,NULL,NULL,'2',NULL,'766698874',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen family',5,NULL,'Dear Nielsen family',2,NULL,'Nielsen family',NULL,NULL,NULL,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (76,'Individual',NULL,'csmith@fakemail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'csmith@fakemail.co.nz',NULL,NULL,NULL,'1',NULL,'665119349',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear csmith@fakemail.co.nz',1,NULL,'Dear csmith@fakemail.co.nz',1,NULL,'csmith@fakemail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (77,'Individual',NULL,'Mr. Lawerence McReynolds Jr.',NULL,NULL,'Lawerence','N','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Lawerence',NULL,NULL,NULL,'4',NULL,'2918598675',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence McReynolds Jr.',NULL,NULL,'1984-12-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (78,'Organization',NULL,'Woodbridge Environmental Fund','Woodbridge Environmental Fund',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Woodbridge Environmental Fund',NULL,NULL,NULL,NULL,NULL,'2462975931',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Woodbridge Environmental Fund',NULL,NULL,NULL,0,NULL,NULL,151,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (79,'Individual',NULL,'Mrs. Junko Jameson',NULL,NULL,'Junko','E','Jameson',0,0,0,0,0,0,NULL,'Jameson, Junko',NULL,NULL,NULL,'2',NULL,'95792282',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Mrs. Junko Jameson',NULL,1,'1973-03-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (80,'Individual',NULL,'Arlyne Olsen',NULL,NULL,'Arlyne','S','Olsen',0,0,0,0,0,0,NULL,'Olsen, Arlyne',NULL,NULL,NULL,NULL,NULL,'3061476892',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Olsen',NULL,NULL,'1947-05-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (81,'Individual',NULL,'Dr. Lou Blackwell',NULL,NULL,'Lou','W','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Lou',NULL,NULL,NULL,'5',NULL,'2525168848',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Blackwell',NULL,2,'1987-02-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (82,'Individual',NULL,'Mr. Brent Jacobs Jr.',NULL,NULL,'Brent','K','Jacobs',1,0,0,0,0,0,NULL,'Jacobs, Brent',NULL,NULL,NULL,'5',NULL,'2357186266',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Mr. Brent Jacobs Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (83,'Individual',NULL,'Truman Robertson II',NULL,NULL,'Truman','N','Robertson',0,0,0,0,0,0,NULL,'Robertson, Truman',NULL,NULL,NULL,NULL,NULL,'2477492650',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Robertson II',NULL,2,'1977-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (84,'Individual',NULL,'Mrs. Princess Barkley',NULL,NULL,'Princess','T','Barkley',0,1,0,0,0,0,NULL,'Barkley, Princess',NULL,NULL,NULL,'4',NULL,'1098730680',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Mrs. Princess Barkley',NULL,1,'1982-11-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (85,'Individual',NULL,'Nicole Smith',NULL,NULL,'Nicole','','Smith',0,1,0,0,0,0,NULL,'Smith, Nicole',NULL,NULL,NULL,NULL,NULL,'1624607505',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (86,'Individual',NULL,'Dr. Magan Dimitrov','Bremerton Sports Initiative',NULL,'Magan','','Dimitrov',0,1,0,0,0,0,NULL,'Dimitrov, Magan',NULL,NULL,NULL,'5',NULL,'2875568835',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,91,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (87,'Individual',NULL,'Dr. Winford Jensen III',NULL,NULL,'Winford','','Jensen',1,0,0,0,0,0,NULL,'Jensen, Winford',NULL,NULL,NULL,'5',NULL,'1126016522',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Jensen III',NULL,2,'1941-03-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (88,'Organization',NULL,'United Wellness Alliance','United Wellness Alliance',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'United Wellness Alliance',NULL,NULL,NULL,'2',NULL,'831557662',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Wellness Alliance',NULL,NULL,NULL,0,NULL,NULL,40,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (89,'Household',NULL,'Blackwell-Robertson family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Blackwell-Robertson family',NULL,NULL,NULL,'3',NULL,'1627296753',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell-Robertson family',5,NULL,'Dear Blackwell-Robertson family',2,NULL,'Blackwell-Robertson family',NULL,NULL,NULL,0,NULL,'Blackwell-Robertson family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (90,'Organization',NULL,'Indiana Sports Network','Indiana Sports Network',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Indiana Sports Network',NULL,NULL,NULL,NULL,NULL,'1841367049',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Indiana Sports Network',NULL,NULL,NULL,0,NULL,NULL,143,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (91,'Organization',NULL,'Bremerton Sports Initiative','Bremerton Sports Initiative',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Bremerton Sports Initiative',NULL,NULL,NULL,'1',NULL,'2368927889',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bremerton Sports Initiative',NULL,NULL,NULL,0,NULL,NULL,86,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (92,'Individual',NULL,'Mr. Sherman Reynolds II',NULL,NULL,'Sherman','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sherman',NULL,NULL,NULL,'5',NULL,'3073547479',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Reynolds II',NULL,NULL,'1981-01-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (93,'Individual',NULL,'Sanford Barkley',NULL,NULL,'Sanford','F','Barkley',0,1,0,0,1,0,NULL,'Barkley, Sanford',NULL,NULL,NULL,NULL,NULL,'975752860',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (94,'Individual',NULL,'Mrs. Betty Adams',NULL,NULL,'Betty','A','Adams',0,0,0,0,0,0,NULL,'Adams, Betty',NULL,NULL,NULL,NULL,NULL,'2445322404',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Mrs. Betty Adams',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (95,'Individual',NULL,'Ms. Valene Cooper',NULL,NULL,'Valene','T','Cooper',0,0,0,0,0,0,NULL,'Cooper, Valene',NULL,NULL,NULL,NULL,NULL,'1848920183',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Ms. Valene Cooper',NULL,1,'1978-12-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (96,'Individual',NULL,'Claudio Terrell III',NULL,NULL,'Claudio','U','Terrell',0,1,0,0,1,0,NULL,'Terrell, Claudio',NULL,NULL,NULL,'1',NULL,'941491020',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Terrell III',NULL,NULL,'1946-06-28',1,'2023-06-03',NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (97,'Household',NULL,'Adams family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Adams family',NULL,NULL,NULL,NULL,NULL,'1515323104',NULL,'Sample Data',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,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (98,'Individual',NULL,'Billy Cruz Jr.',NULL,NULL,'Billy','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Billy',NULL,NULL,NULL,'1',NULL,'2613422700',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Cruz Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (99,'Individual',NULL,'Iris Nielsen',NULL,NULL,'Iris','Z','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Iris',NULL,NULL,NULL,'4',NULL,'3773138011',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (100,'Individual',NULL,'delanagrant@testing.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'delanagrant@testing.co.pl',NULL,NULL,NULL,'5',NULL,'3155097848',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear delanagrant@testing.co.pl',1,NULL,'Dear delanagrant@testing.co.pl',1,NULL,'delanagrant@testing.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (101,'Household',NULL,'Cooper family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Cooper family',NULL,NULL,NULL,NULL,NULL,'1133003930',NULL,'Sample Data',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,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (102,'Individual',NULL,'louz@sample.org',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'louz@sample.org',NULL,NULL,NULL,NULL,NULL,'2801936748',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear louz@sample.org',1,NULL,'Dear louz@sample.org',1,NULL,'louz@sample.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (103,'Individual',NULL,'Dr. Tanya Dimitrov',NULL,NULL,'Tanya','','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Tanya',NULL,NULL,NULL,'1',NULL,'3688954231',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Dimitrov',NULL,1,'1989-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (104,'Individual',NULL,'Mrs. Megan Terry',NULL,NULL,'Megan','','Terry',0,0,0,0,0,0,NULL,'Terry, Megan',NULL,NULL,NULL,NULL,NULL,'3263409952',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Terry',NULL,1,'1965-01-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (105,'Individual',NULL,'Andrew Yadav Sr.',NULL,NULL,'Andrew','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Andrew',NULL,NULL,NULL,NULL,NULL,'3652555424',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Yadav Sr.',NULL,2,'1985-06-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (106,'Individual',NULL,'Mrs. Sharyn Adams',NULL,NULL,'Sharyn','Y','Adams',0,0,0,0,0,0,NULL,'Adams, Sharyn',NULL,NULL,NULL,'3',NULL,'4201826843',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn Adams',NULL,1,'1974-12-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (107,'Individual',NULL,'Irvin Dimitrov',NULL,NULL,'Irvin','E','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Irvin',NULL,NULL,NULL,NULL,NULL,'3379867453',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Dimitrov',NULL,2,'1983-05-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (108,'Organization',NULL,'Spokane Music Alliance','Spokane Music Alliance',NULL,NULL,NULL,NULL,1,1,0,0,1,0,NULL,'Spokane Music Alliance',NULL,NULL,NULL,NULL,NULL,'3629800125',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Spokane Music Alliance',NULL,NULL,NULL,0,NULL,NULL,110,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (109,'Organization',NULL,'Global Environmental Alliance','Global Environmental Alliance',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Global Environmental Alliance',NULL,NULL,NULL,NULL,NULL,'2727474470',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Environmental Alliance',NULL,NULL,NULL,0,NULL,NULL,50,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (110,'Individual',NULL,'Ray Smith II','Spokane Music Alliance',NULL,'Ray','Q','Smith',1,0,0,0,0,0,NULL,'Smith, Ray',NULL,NULL,NULL,NULL,NULL,'2980443594',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Smith II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,108,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (111,'Individual',NULL,'Damaris Müller',NULL,NULL,'Damaris','','Müller',0,0,0,0,0,0,NULL,'Müller, Damaris',NULL,NULL,NULL,'4',NULL,'282196089',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Müller',NULL,NULL,'1999-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (112,'Individual',NULL,'Dr. Jackson Olsen III',NULL,NULL,'Jackson','W','Olsen',0,0,0,0,0,0,NULL,'Olsen, Jackson',NULL,NULL,NULL,NULL,NULL,'2108387664',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Olsen III',NULL,2,'1948-05-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (113,'Individual',NULL,'Elina Barkley',NULL,NULL,'Elina','B','Barkley',0,0,0,0,1,0,NULL,'Barkley, Elina',NULL,NULL,NULL,NULL,NULL,'522372077',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (114,'Individual',NULL,'Ms. Eleonor Nielsen',NULL,NULL,'Eleonor','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Eleonor',NULL,NULL,NULL,NULL,NULL,'792977136',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Ms. Eleonor Nielsen',NULL,1,'1998-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (115,'Household',NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,'3228000340',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Grant family',5,NULL,'Dear Grant family',2,NULL,'Grant family',NULL,NULL,NULL,0,NULL,'Grant family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (116,'Individual',NULL,'Merrie Nielsen',NULL,NULL,'Merrie','','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Merrie',NULL,NULL,NULL,NULL,NULL,'3023030184',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Nielsen',NULL,NULL,'1965-08-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (117,'Individual',NULL,'Dr. Laree Jones',NULL,NULL,'Laree','','Jones',0,1,0,0,0,0,NULL,'Jones, Laree',NULL,NULL,NULL,NULL,NULL,'4205271200',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Dr. Laree Jones',NULL,NULL,'1991-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (118,'Individual',NULL,'Ms. Princess Bachman',NULL,NULL,'Princess','L','Bachman',0,0,0,0,0,0,NULL,'Bachman, Princess',NULL,NULL,NULL,'3',NULL,'2581077622',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Ms. Princess Bachman',NULL,1,'1945-03-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (119,'Individual',NULL,'beulanielsen@lol.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'beulanielsen@lol.co.nz',NULL,NULL,NULL,'1',NULL,'1628306589',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear beulanielsen@lol.co.nz',1,NULL,'Dear beulanielsen@lol.co.nz',1,NULL,'beulanielsen@lol.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:44','Both'), - (120,'Individual',NULL,'Mrs. Elizabeth Cooper',NULL,NULL,'Elizabeth','','Cooper',0,0,0,0,0,0,NULL,'Cooper, Elizabeth',NULL,NULL,NULL,NULL,NULL,'1085968806',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Mrs. Elizabeth Cooper',NULL,1,'1987-03-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (121,'Individual',NULL,'Dr. Jackson Smith-Samson III',NULL,NULL,'Jackson','E','Smith-Samson',0,0,0,0,0,0,NULL,'Smith-Samson, Jackson',NULL,NULL,NULL,'5',NULL,'3942097243',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Smith-Samson III',NULL,NULL,'1992-11-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (122,'Individual',NULL,'Mr. Miguel Robertson II',NULL,NULL,'Miguel','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Miguel',NULL,NULL,NULL,NULL,NULL,'3255154078',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Robertson II',NULL,NULL,'1939-07-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (123,'Household',NULL,'Adams-Bachman family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Adams-Bachman family',NULL,NULL,NULL,NULL,NULL,'2174336543',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Adams-Bachman family',5,NULL,'Dear Adams-Bachman family',2,NULL,'Adams-Bachman family',NULL,NULL,NULL,0,NULL,'Adams-Bachman family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (124,'Individual',NULL,'Mr. Rosario Samson Sr.',NULL,NULL,'Rosario','O','Samson',1,1,0,0,1,0,NULL,'Samson, Rosario',NULL,NULL,NULL,NULL,NULL,'2618822778',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Mr. Rosario Samson Sr.',NULL,NULL,'1975-08-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (125,'Individual',NULL,'Jerome González',NULL,NULL,'Jerome','','González',0,1,0,0,0,0,NULL,'González, Jerome',NULL,NULL,NULL,NULL,NULL,'775254007',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome González',NULL,NULL,'1957-07-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (126,'Household',NULL,'Smith family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Smith family',NULL,NULL,NULL,NULL,NULL,'4082772645',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Smith family',5,NULL,'Dear Smith family',2,NULL,'Smith family',NULL,NULL,NULL,0,NULL,'Smith family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:47','Both'), - (127,'Individual',NULL,'terrye@fishmail.co.uk',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'terrye@fishmail.co.uk',NULL,NULL,NULL,'1',NULL,'2702886344',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrye@fishmail.co.uk',1,NULL,'Dear terrye@fishmail.co.uk',1,NULL,'terrye@fishmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (128,'Individual',NULL,'smith-samsonj16@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'smith-samsonj16@fishmail.co.in',NULL,NULL,NULL,'4',NULL,'1448315187',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear smith-samsonj16@fishmail.co.in',1,NULL,'Dear smith-samsonj16@fishmail.co.in',1,NULL,'smith-samsonj16@fishmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (129,'Organization',NULL,'Community Legal Fellowship','Community Legal Fellowship',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Community Legal Fellowship',NULL,NULL,NULL,'4',NULL,'155841626',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Legal Fellowship',NULL,NULL,NULL,0,NULL,NULL,191,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (130,'Individual',NULL,'Lashawnda Zope',NULL,NULL,'Lashawnda','A','Zope',0,0,0,0,0,0,NULL,'Zope, Lashawnda',NULL,NULL,NULL,'3',NULL,'465899624',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Zope',NULL,1,'1965-08-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (131,'Individual',NULL,'Elbert Adams',NULL,NULL,'Elbert','Q','Adams',0,0,0,0,0,0,NULL,'Adams, Elbert',NULL,NULL,NULL,'2',NULL,'3476535287',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Adams',NULL,2,'1966-06-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (132,'Individual',NULL,'Dr. Maria Deforest Jr.',NULL,NULL,'Maria','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Maria',NULL,NULL,NULL,NULL,NULL,'4009306469',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Dr. Maria Deforest Jr.',NULL,2,'1989-06-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (133,'Individual',NULL,'Ms. Alexia Cruz',NULL,NULL,'Alexia','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Alexia',NULL,NULL,NULL,NULL,NULL,'3468295475',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Ms. Alexia Cruz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (134,'Individual',NULL,'Russell Terrell II',NULL,NULL,'Russell','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Russell',NULL,NULL,NULL,'1',NULL,'127505299',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Terrell II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (135,'Individual',NULL,'Dr. Arlyne Adams',NULL,NULL,'Arlyne','X','Adams',0,0,0,0,0,0,NULL,'Adams, Arlyne',NULL,NULL,NULL,'5',NULL,'4065496202',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Dr. Arlyne Adams',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (136,'Household',NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,'3351288571',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov family',5,NULL,'Dear Dimitrov family',2,NULL,'Dimitrov family',NULL,NULL,NULL,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:47','Both'), - (137,'Organization',NULL,'Texas Literacy Collective','Texas Literacy Collective',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Texas Literacy Collective',NULL,NULL,NULL,'4',NULL,'1392035556',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Texas Literacy Collective',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (138,'Individual',NULL,'Dr. Barry Łąchowski',NULL,NULL,'Barry','R','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Barry',NULL,NULL,NULL,NULL,NULL,'2573012896',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Dr. Barry Łąchowski',NULL,NULL,'1988-02-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (139,'Individual',NULL,'Arlyne Smith',NULL,NULL,'Arlyne','','Smith',0,0,0,0,0,0,NULL,'Smith, Arlyne',NULL,NULL,NULL,'2',NULL,'4098699841',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Smith',NULL,1,'1991-03-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:44','Both'), - (140,'Individual',NULL,'Dr. Lawerence Smith',NULL,NULL,'Lawerence','V','Smith',1,0,0,0,1,0,NULL,'Smith, Lawerence',NULL,NULL,NULL,NULL,NULL,'3991125276',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Dr. Lawerence Smith',NULL,NULL,'1987-09-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (141,'Individual',NULL,'Megan Wagner',NULL,NULL,'Megan','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Megan',NULL,NULL,NULL,NULL,NULL,'3194270905',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Wagner',NULL,NULL,'1957-06-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:44','Both'), - (142,'Individual',NULL,'Beula Bachman',NULL,NULL,'Beula','K','Bachman',0,0,0,0,0,0,NULL,'Bachman, Beula',NULL,NULL,NULL,NULL,NULL,'1024437619',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Bachman',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (143,'Individual',NULL,'Mr. Jackson Samuels','Indiana Sports Network',NULL,'Jackson','I','Samuels',0,0,0,0,1,0,NULL,'Samuels, Jackson',NULL,NULL,NULL,'3',NULL,'257936857',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson Samuels',NULL,2,'1995-10-19',0,NULL,NULL,NULL,NULL,NULL,90,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (144,'Individual',NULL,'Mr. Truman Wattson III',NULL,NULL,'Truman','A','Wattson',0,0,0,0,1,0,NULL,'Wattson, Truman',NULL,NULL,NULL,NULL,NULL,'3799954079',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Mr. Truman Wattson III',NULL,2,'1971-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (145,'Individual',NULL,'terrell.brigette8@infomail.org',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'terrell.brigette8@infomail.org',NULL,NULL,NULL,'5',NULL,'3372915296',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear terrell.brigette8@infomail.org',1,NULL,'Dear terrell.brigette8@infomail.org',1,NULL,'terrell.brigette8@infomail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (146,'Individual',NULL,'Ashlie Terrell',NULL,NULL,'Ashlie','H','Terrell',0,0,0,0,0,0,NULL,'Terrell, Ashlie',NULL,NULL,NULL,'3',NULL,'3023355040',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Terrell',NULL,1,'2012-11-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (147,'Individual',NULL,'Mrs. Carylon Blackwell','Global Action School',NULL,'Carylon','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Carylon',NULL,NULL,NULL,'1',NULL,'1747720268',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Mrs. Carylon Blackwell',NULL,NULL,'1988-10-29',0,NULL,NULL,NULL,NULL,NULL,193,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (148,'Individual',NULL,'Elina Zope',NULL,NULL,'Elina','T','Zope',0,0,0,0,0,0,NULL,'Zope, Elina',NULL,NULL,NULL,'1',NULL,'3511494831',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Zope',NULL,NULL,'1968-11-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (149,'Household',NULL,'Parker family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Parker family',NULL,NULL,NULL,NULL,NULL,'425242179',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Parker family',5,NULL,'Dear Parker family',2,NULL,'Parker family',NULL,NULL,NULL,0,NULL,'Parker family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (150,'Individual',NULL,'Dr. Maxwell Ivanov Jr.',NULL,NULL,'Maxwell','D','Ivanov',0,1,0,0,0,0,NULL,'Ivanov, Maxwell',NULL,NULL,NULL,NULL,NULL,'3562493045',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Ivanov Jr.',NULL,NULL,'1948-02-10',1,'2023-08-31',NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (151,'Individual',NULL,'Dr. Angelika Olsen-Yadav','Woodbridge Environmental Fund',NULL,'Angelika','F','Olsen-Yadav',0,0,0,0,1,0,NULL,'Olsen-Yadav, Angelika',NULL,NULL,NULL,'1',NULL,'1418415988',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Dr. Angelika Olsen-Yadav',NULL,1,'1976-04-11',0,NULL,NULL,NULL,NULL,NULL,78,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (152,'Individual',NULL,'Rosario Adams',NULL,NULL,'Rosario','R','Adams',0,0,0,0,0,0,NULL,'Adams, Rosario',NULL,NULL,NULL,'4',NULL,'628774619',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Adams',NULL,2,'1990-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (153,'Organization',NULL,'Statesboro Culture Systems','Statesboro Culture Systems',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Statesboro Culture Systems',NULL,NULL,NULL,'1',NULL,'2591717033',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Statesboro Culture Systems',NULL,NULL,NULL,0,NULL,NULL,201,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (154,'Individual',NULL,'Mr. Rodrigo Dimitrov',NULL,NULL,'Rodrigo','V','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Rodrigo',NULL,NULL,NULL,'3',NULL,'3624892269',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Mr. Rodrigo Dimitrov',NULL,2,'1997-10-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (155,'Individual',NULL,'Ms. Ivey Cruz',NULL,NULL,'Ivey','','Cruz',1,0,0,0,0,0,NULL,'Cruz, Ivey',NULL,NULL,NULL,NULL,NULL,'3529937009',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ms. Ivey Cruz',NULL,1,'2000-01-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (156,'Individual',NULL,'Dr. Russell Wilson II',NULL,NULL,'Russell','X','Wilson',0,0,0,0,0,0,NULL,'Wilson, Russell',NULL,NULL,NULL,NULL,NULL,'1575033929',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Dr. Russell Wilson II',NULL,NULL,'1939-11-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (157,'Individual',NULL,'Mr. Lawerence Cruz',NULL,NULL,'Lawerence','E','Cruz',0,1,0,0,0,0,NULL,'Cruz, Lawerence',NULL,NULL,NULL,NULL,NULL,'1184039604',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Cruz',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (158,'Individual',NULL,'Damaris Zope',NULL,NULL,'Damaris','J','Zope',0,1,0,0,1,0,NULL,'Zope, Damaris',NULL,NULL,NULL,'2',NULL,'2309654739',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (159,'Individual',NULL,'Jackson Smith','Sedalia Peace Center',NULL,'Jackson','E','Smith',0,0,0,0,0,0,NULL,'Smith, Jackson',NULL,NULL,NULL,'2',NULL,'1748200261',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Smith',NULL,NULL,'1974-10-28',0,NULL,NULL,NULL,NULL,NULL,177,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (160,'Individual',NULL,'Iris Lee',NULL,NULL,'Iris','','Lee',0,0,0,0,0,0,NULL,'Lee, Iris',NULL,NULL,NULL,'5',NULL,'3806304392',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Lee',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (161,'Individual',NULL,'Kandace Deforest',NULL,NULL,'Kandace','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Kandace',NULL,NULL,NULL,'3',NULL,'1547944287',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Deforest',NULL,1,'1995-07-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (162,'Individual',NULL,'Mr. Jackson Patel III',NULL,NULL,'Jackson','','Patel',0,0,0,0,0,0,NULL,'Patel, Jackson',NULL,NULL,NULL,NULL,NULL,'2060230662',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson Patel III',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (163,'Individual',NULL,'Dr. Irvin Deforest',NULL,NULL,'Irvin','A','Deforest',0,0,0,0,0,0,NULL,'Deforest, Irvin',NULL,NULL,NULL,NULL,NULL,'3462644377',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Dr. Irvin Deforest',NULL,NULL,'1972-01-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (164,'Individual',NULL,'Elbert Samson Jr.','Pennsylvania Arts Fund',NULL,'Elbert','','Samson',0,0,0,0,0,0,NULL,'Samson, Elbert',NULL,NULL,NULL,NULL,NULL,'3416596353',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Samson Jr.',NULL,2,'1983-07-07',0,NULL,NULL,NULL,NULL,NULL,168,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (165,'Individual',NULL,'junkoivanov20@notmail.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'junkoivanov20@notmail.com',NULL,NULL,NULL,'2',NULL,'2973355707',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear junkoivanov20@notmail.com',1,NULL,'Dear junkoivanov20@notmail.com',1,NULL,'junkoivanov20@notmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (166,'Individual',NULL,'Mr. Sherman Parker Jr.',NULL,NULL,'Sherman','','Parker',0,1,0,0,1,0,NULL,'Parker, Sherman',NULL,NULL,NULL,'3',NULL,'1977701504',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Parker Jr.',NULL,2,'1987-11-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (167,'Individual',NULL,'Dr. Claudio Jameson III',NULL,NULL,'Claudio','D','Jameson',0,0,0,0,1,0,NULL,'Jameson, Claudio',NULL,NULL,NULL,'2',NULL,'4087838754',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Dr. Claudio Jameson III',NULL,2,'1951-04-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (168,'Organization',NULL,'Pennsylvania Arts Fund','Pennsylvania Arts Fund',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Pennsylvania Arts Fund',NULL,NULL,NULL,'4',NULL,'3501038823',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pennsylvania Arts Fund',NULL,NULL,NULL,0,NULL,NULL,164,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (169,'Individual',NULL,'Kathlyn Olsen',NULL,NULL,'Kathlyn','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Kathlyn',NULL,NULL,NULL,NULL,NULL,'273403650',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Olsen',NULL,NULL,'1978-10-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (170,'Organization',NULL,'New York Food Systems','New York Food Systems',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'New York Food Systems',NULL,NULL,NULL,'5',NULL,'3091370973',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New York Food Systems',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (171,'Individual',NULL,'parkera@lol.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'parkera@lol.co.pl',NULL,NULL,NULL,'2',NULL,'2769523592',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear parkera@lol.co.pl',1,NULL,'Dear parkera@lol.co.pl',1,NULL,'parkera@lol.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (172,'Household',NULL,'Cruz family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Cruz family',NULL,NULL,NULL,NULL,NULL,'2326538497',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz family',5,NULL,'Dear Cruz family',2,NULL,'Cruz family',NULL,NULL,NULL,0,NULL,'Cruz family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:47','Both'), - (173,'Individual',NULL,'Mei Grant',NULL,NULL,'Mei','R','Grant',0,1,0,0,0,0,NULL,'Grant, Mei',NULL,NULL,NULL,'4',NULL,'3865539072',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Grant',NULL,1,'1986-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (174,'Individual',NULL,'Dr. Jay Nielsen Jr.',NULL,NULL,'Jay','','Nielsen',0,1,0,0,0,0,NULL,'Nielsen, Jay',NULL,NULL,NULL,NULL,NULL,'1092213488',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Dr. Jay Nielsen Jr.',NULL,2,'1976-02-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (175,'Individual',NULL,'Dr. Omar Cooper','Georgia Poetry Alliance',NULL,'Omar','K','Cooper',0,1,0,0,1,0,NULL,'Cooper, Omar',NULL,NULL,NULL,'1',NULL,'1015907011',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Dr. Omar Cooper',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,23,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (176,'Individual',NULL,'Jina Prentice',NULL,NULL,'Jina','V','Prentice',0,0,0,0,0,0,NULL,'Prentice, Jina',NULL,NULL,NULL,NULL,NULL,'3574120172',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Prentice',NULL,1,'1972-03-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (177,'Organization',NULL,'Sedalia Peace Center','Sedalia Peace Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Sedalia Peace Center',NULL,NULL,NULL,NULL,NULL,'3623619115',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sedalia Peace Center',NULL,NULL,NULL,0,NULL,NULL,159,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (178,'Organization',NULL,'Community Empowerment Services','Community Empowerment Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Community Empowerment Services',NULL,NULL,NULL,'2',NULL,'308449976',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Empowerment Services',NULL,NULL,NULL,0,NULL,NULL,11,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (179,'Individual',NULL,'Brigette Jacobs-Olsen',NULL,NULL,'Brigette','','Jacobs-Olsen',0,0,0,0,0,0,NULL,'Jacobs-Olsen, Brigette',NULL,NULL,NULL,NULL,NULL,'234243717',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Jacobs-Olsen',NULL,NULL,'1984-10-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (180,'Individual',NULL,'Betty Nielsen',NULL,NULL,'Betty','J','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Betty',NULL,NULL,NULL,'5',NULL,'3861099326',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty Nielsen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (181,'Individual',NULL,'Kacey Wattson',NULL,NULL,'Kacey','','Wattson',0,1,0,0,1,0,NULL,'Wattson, Kacey',NULL,NULL,NULL,NULL,NULL,'2862665279',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Wattson',NULL,1,'1979-03-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (182,'Individual',NULL,'Dr. Rolando Cruz II',NULL,NULL,'Rolando','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Rolando',NULL,NULL,NULL,'2',NULL,'948578294',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Cruz II',NULL,2,'1935-12-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (183,'Individual',NULL,'grant.jerome@fakemail.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'grant.jerome@fakemail.com',NULL,NULL,NULL,NULL,NULL,'3226162819',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear grant.jerome@fakemail.com',1,NULL,'Dear grant.jerome@fakemail.com',1,NULL,'grant.jerome@fakemail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (184,'Individual',NULL,'Dr. Merrie González',NULL,NULL,'Merrie','','González',0,1,0,0,1,0,NULL,'González, Merrie',NULL,NULL,NULL,NULL,NULL,'1134733928',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Dr. Merrie González',NULL,1,'1989-12-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (185,'Individual',NULL,'Truman Smith',NULL,NULL,'Truman','','Smith',0,0,0,0,0,0,NULL,'Smith, Truman',NULL,NULL,NULL,'1',NULL,'2166519703',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Smith',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (186,'Household',NULL,'Robertson-Wattson family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Robertson-Wattson family',NULL,NULL,NULL,NULL,NULL,'3347759967',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Robertson-Wattson family',5,NULL,'Dear Robertson-Wattson family',2,NULL,'Robertson-Wattson family',NULL,NULL,NULL,0,NULL,'Robertson-Wattson family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:47','Both'), - (187,'Individual',NULL,'Brent Adams-Bachman Sr.',NULL,NULL,'Brent','S','Adams-Bachman',0,1,0,0,0,0,NULL,'Adams-Bachman, Brent',NULL,NULL,NULL,NULL,NULL,'1421789276',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Adams-Bachman Sr.',NULL,2,'2019-08-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (188,'Individual',NULL,'Dr. Errol Jones Sr.',NULL,NULL,'Errol','C','Jones',0,0,0,0,0,0,NULL,'Jones, Errol',NULL,NULL,NULL,NULL,NULL,'908628622',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Jones Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (189,'Individual',NULL,'Ms. Iris Smith',NULL,NULL,'Iris','','Smith',0,0,0,0,0,0,NULL,'Smith, Iris',NULL,NULL,NULL,NULL,NULL,'3014958774',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Ms. Iris Smith',NULL,1,'1962-11-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (190,'Individual',NULL,'Shad Wattson Sr.',NULL,NULL,'Shad','Y','Wattson',0,1,0,0,0,0,NULL,'Wattson, Shad',NULL,NULL,NULL,NULL,NULL,'2057635546',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Wattson Sr.',NULL,2,'1974-02-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:45','Both'), - (191,'Individual',NULL,'ivanov-reynoldsr@spamalot.info','Community Legal Fellowship',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'ivanov-reynoldsr@spamalot.info',NULL,NULL,NULL,NULL,NULL,'3847494423',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear ivanov-reynoldsr@spamalot.info',1,NULL,'Dear ivanov-reynoldsr@spamalot.info',1,NULL,'ivanov-reynoldsr@spamalot.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,129,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (192,'Individual',NULL,'Magan Zope',NULL,NULL,'Magan','B','Zope',1,0,0,0,0,0,NULL,'Zope, Magan',NULL,NULL,NULL,NULL,NULL,'250517479',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Zope',NULL,NULL,'1959-01-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (193,'Organization',NULL,'Global Action School','Global Action School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Action School',NULL,NULL,NULL,'4',NULL,'569341752',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Action School',NULL,NULL,NULL,0,NULL,NULL,147,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (194,'Organization',NULL,'Saint Paul Health Partners','Saint Paul Health Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Saint Paul Health Partners',NULL,NULL,NULL,NULL,NULL,'3879649726',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Saint Paul Health Partners',NULL,NULL,NULL,0,NULL,NULL,36,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (195,'Individual',NULL,'Mrs. Brigette Olsen',NULL,NULL,'Brigette','','Olsen',0,1,0,0,0,0,NULL,'Olsen, Brigette',NULL,NULL,NULL,'1',NULL,'2958585175',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Mrs. Brigette Olsen',NULL,NULL,'1994-09-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (196,'Individual',NULL,'barryzope@fishmail.co.uk',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'barryzope@fishmail.co.uk',NULL,NULL,NULL,NULL,NULL,'1796626105',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear barryzope@fishmail.co.uk',1,NULL,'Dear barryzope@fishmail.co.uk',1,NULL,'barryzope@fishmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (197,'Household',NULL,'Barkley family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Barkley family',NULL,NULL,NULL,'5',NULL,'2888062109',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley family',5,NULL,'Dear Barkley family',2,NULL,'Barkley family',NULL,NULL,NULL,0,NULL,'Barkley family',NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (198,'Individual',NULL,'Damaris Wilson',NULL,NULL,'Damaris','V','Wilson',1,0,0,0,0,0,NULL,'Wilson, Damaris',NULL,NULL,NULL,'3',NULL,'226365314',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Wilson',NULL,NULL,'1939-08-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (199,'Individual',NULL,'Iris Samuels-Nielsen',NULL,NULL,'Iris','F','Samuels-Nielsen',0,0,0,0,0,0,NULL,'Samuels-Nielsen, Iris',NULL,NULL,NULL,NULL,NULL,'625980352',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Samuels-Nielsen',NULL,1,'1986-08-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:49','Both'), - (200,'Individual',NULL,'Dr. Mei Yadav',NULL,NULL,'Mei','Z','Yadav',1,0,0,0,0,0,NULL,'Yadav, Mei',NULL,NULL,NULL,'1',NULL,'3106759273',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Dr. Mei Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:44','2023-09-19 09:27:46','Both'), - (201,'Individual',NULL,'Mr. Kenny Ivanov-Reynolds','Statesboro Culture Systems',NULL,'Kenny','Q','Ivanov-Reynolds',0,0,0,0,0,0,NULL,'Ivanov-Reynolds, Kenny',NULL,NULL,NULL,'5',NULL,'779036696',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Ivanov-Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,153,0,'2023-09-19 09:27:44','2023-09-19 09:27:48','Both'), - (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','7a4f2f634367dd10605adfa8bb796b07',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-19 09:27:51','2023-09-19 09:27:53','Both'); + (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2023-10-19 21:22:28','Both'), + (2,'Individual',NULL,'Mr. Elbert Terrell II',NULL,NULL,'Elbert','','Terrell',0,0,0,0,1,0,NULL,'Terrell, Elbert',NULL,NULL,NULL,NULL,NULL,'1862258278',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Terrell II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (3,'Household',NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,'1144797465',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Müller family',5,NULL,'Dear Müller family',2,NULL,'Müller family',NULL,NULL,NULL,0,NULL,'Müller family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (4,'Individual',NULL,'Mrs. Damaris Smith','Global Sports Center',NULL,'Damaris','A','Smith',0,0,0,0,0,0,NULL,'Smith, Damaris',NULL,NULL,NULL,'1',NULL,'3693080437',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Mrs. Damaris Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,69,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (5,'Individual',NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,'4',NULL,'325908741',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jacobs.esta@testmail.co.nz',1,NULL,'Dear jacobs.esta@testmail.co.nz',1,NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (6,'Individual',NULL,'Magan Reynolds',NULL,NULL,'Magan','','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Magan',NULL,NULL,NULL,'1',NULL,'2569744381',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Reynolds',NULL,1,'1968-09-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (7,'Organization',NULL,'Hanover Education School','Hanover Education School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Hanover Education School',NULL,NULL,NULL,NULL,NULL,'3329437880',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Hanover Education School',NULL,NULL,NULL,0,NULL,NULL,15,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (8,'Individual',NULL,'Ms. Laree Blackwell',NULL,NULL,'Laree','T','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Laree',NULL,NULL,NULL,'4',NULL,'122613497',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Ms. Laree Blackwell',NULL,1,'1987-03-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (9,'Individual',NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,'1',NULL,'1346258529',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear brigetter@notmail.co.uk',1,NULL,'Dear brigetter@notmail.co.uk',1,NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (10,'Household',NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,'558108751',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terry family',5,NULL,'Dear Terry family',2,NULL,'Terry family',NULL,NULL,NULL,0,NULL,'Terry family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (11,'Individual',NULL,'Mr. Carlos Cruz II',NULL,NULL,'Carlos','N','Cruz',0,1,0,0,0,0,NULL,'Cruz, Carlos',NULL,NULL,NULL,'1',NULL,'149105357',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Mr. Carlos Cruz II',NULL,NULL,'1970-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (12,'Individual',NULL,'Margaret Reynolds',NULL,NULL,'Margaret','','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Margaret',NULL,NULL,NULL,NULL,NULL,'1615992834',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Reynolds',NULL,1,'1995-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (13,'Individual',NULL,'Sonny Reynolds III',NULL,NULL,'Sonny','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'2914964394',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Reynolds III',NULL,2,'1999-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (14,'Individual',NULL,'Delana Wattson',NULL,NULL,'Delana','','Wattson',1,0,0,0,0,0,NULL,'Wattson, Delana',NULL,NULL,NULL,'1',NULL,'4463545',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Wattson',NULL,1,'1958-04-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (15,'Individual',NULL,'olsenb@testmail.co.pl','Hanover Education School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'olsenb@testmail.co.pl',NULL,NULL,NULL,'3',NULL,'3294760178',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear olsenb@testmail.co.pl',1,NULL,'Dear olsenb@testmail.co.pl',1,NULL,'olsenb@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,7,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (16,'Individual',NULL,'Mrs. Kiara Bachman',NULL,NULL,'Kiara','I','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kiara',NULL,NULL,NULL,'2',NULL,'3047638217',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Bachman',NULL,1,'1998-10-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (17,'Individual',NULL,'Alexia Olsen',NULL,NULL,'Alexia','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Alexia',NULL,NULL,NULL,NULL,NULL,'1565274268',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Olsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (18,'Individual',NULL,'Andrew Díaz Sr.','Cranfills Gap Health Trust',NULL,'Andrew','E','Díaz',1,0,0,0,0,0,NULL,'Díaz, Andrew',NULL,NULL,NULL,NULL,NULL,'2189664098',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Díaz Sr.',NULL,NULL,'1989-09-08',0,NULL,NULL,NULL,NULL,NULL,122,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (19,'Organization',NULL,'Creative Peace Solutions','Creative Peace Solutions',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Creative Peace Solutions',NULL,NULL,NULL,NULL,NULL,'2853948413',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Peace Solutions',NULL,NULL,NULL,0,NULL,NULL,129,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (20,'Individual',NULL,'Claudio Cruz-Reynolds',NULL,NULL,'Claudio','','Cruz-Reynolds',0,0,0,0,0,0,NULL,'Cruz-Reynolds, Claudio',NULL,NULL,NULL,NULL,NULL,'2191699643',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Cruz-Reynolds',NULL,2,'1987-12-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (21,'Individual',NULL,'Jackson Wattson',NULL,NULL,'Jackson','C','Wattson',0,0,0,0,1,0,NULL,'Wattson, Jackson',NULL,NULL,NULL,NULL,NULL,'1720434610',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Wattson',NULL,2,'1969-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (22,'Organization',NULL,'Boston Development Academy','Boston Development Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Boston Development Academy',NULL,NULL,NULL,NULL,NULL,'3712082957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Boston Development Academy',NULL,NULL,NULL,0,NULL,NULL,33,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (23,'Household',NULL,'Samson-Terry family',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Samson-Terry family',NULL,NULL,NULL,'1',NULL,'1196143838',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samson-Terry family',5,NULL,'Dear Samson-Terry family',2,NULL,'Samson-Terry family',NULL,NULL,NULL,0,NULL,'Samson-Terry family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (24,'Individual',NULL,'Sherman Bachman',NULL,NULL,'Sherman','','Bachman',0,1,0,0,0,0,NULL,'Bachman, Sherman',NULL,NULL,NULL,'4',NULL,'2672494279',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Bachman',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (25,'Individual',NULL,'Beula Wagner',NULL,NULL,'Beula','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Beula',NULL,NULL,NULL,NULL,NULL,'109524906',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Wagner',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (26,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,'2',NULL,'3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (27,'Individual',NULL,'Mrs. Merrie Robertson',NULL,NULL,'Merrie','A','Robertson',0,0,0,0,0,0,NULL,'Robertson, Merrie',NULL,NULL,NULL,'4',NULL,'2954108447',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Mrs. Merrie Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (28,'Individual',NULL,'Sharyn Nielsen',NULL,NULL,'Sharyn','','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Sharyn',NULL,NULL,NULL,'1',NULL,'3940504410',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (29,'Individual',NULL,'Ms. Beula Cruz',NULL,NULL,'Beula','G','Cruz',1,0,0,0,0,0,NULL,'Cruz, Beula',NULL,NULL,NULL,NULL,NULL,'3515356541',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Ms. Beula Cruz',NULL,1,'1943-06-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (30,'Individual',NULL,'Dr. Josefa Grant',NULL,NULL,'Josefa','R','Grant',0,0,0,0,1,0,NULL,'Grant, Josefa',NULL,NULL,NULL,NULL,NULL,'511786429',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Dr. Josefa Grant',NULL,NULL,'1983-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (31,'Individual',NULL,'Dr. Lincoln Yadav Sr.',NULL,NULL,'Lincoln','','Yadav',0,1,0,0,0,0,NULL,'Yadav, Lincoln',NULL,NULL,NULL,NULL,NULL,'3563160263',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Yadav Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (32,'Individual',NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,NULL,NULL,'3970115490',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear jl.samson-terry93@notmail.biz',1,NULL,'Dear jl.samson-terry93@notmail.biz',1,NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (33,'Individual',NULL,'dimitrovb20@infomail.co.uk','Boston Development Academy',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'dimitrovb20@infomail.co.uk',NULL,NULL,NULL,'2',NULL,'3487863784',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear dimitrovb20@infomail.co.uk',1,NULL,'Dear dimitrovb20@infomail.co.uk',1,NULL,'dimitrovb20@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,22,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (34,'Individual',NULL,'Mr. Sonny Prentice II',NULL,NULL,'Sonny','G','Prentice',0,0,0,0,1,0,NULL,'Prentice, Sonny',NULL,NULL,NULL,'1',NULL,'2645636632',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Mr. Sonny Prentice II',NULL,2,'1977-10-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (35,'Individual',NULL,'Omar Müller',NULL,NULL,'Omar','','Müller',1,0,0,0,1,0,NULL,'Müller, Omar',NULL,NULL,NULL,NULL,NULL,'3845396679',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Müller',NULL,2,'1971-04-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (36,'Individual',NULL,'Mr. Lou Yadav',NULL,NULL,'Lou','J','Yadav',0,0,0,0,0,0,NULL,'Yadav, Lou',NULL,NULL,NULL,'5',NULL,'1442954395',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Mr. Lou Yadav',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (37,'Individual',NULL,'Josefa Dimitrov',NULL,NULL,'Josefa','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Josefa',NULL,NULL,NULL,'4',NULL,'1492067390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Dimitrov',NULL,1,'1976-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (38,'Individual',NULL,'Landon Blackwell',NULL,NULL,'Landon','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Landon',NULL,NULL,NULL,'2',NULL,'1569508638',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Blackwell',NULL,2,'1944-11-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (39,'Individual',NULL,'Ms. Delana Díaz-Łąchowski',NULL,NULL,'Delana','E','Díaz-Łąchowski',1,0,0,0,0,0,NULL,'Díaz-Łąchowski, Delana',NULL,NULL,NULL,NULL,NULL,'1952500554',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana Díaz-Łąchowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (40,'Individual',NULL,'Mrs. Megan Parker',NULL,NULL,'Megan','J','Parker',0,0,0,0,0,0,NULL,'Parker, Megan',NULL,NULL,NULL,NULL,NULL,'4204728620',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Parker',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (41,'Individual',NULL,'Landon Díaz-Łąchowski Jr.',NULL,NULL,'Landon','V','Díaz-Łąchowski',0,1,0,0,0,0,NULL,'Díaz-Łąchowski, Landon',NULL,NULL,NULL,'2',NULL,'1221970263',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Díaz-Łąchowski Jr.',NULL,NULL,'2011-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (42,'Individual',NULL,'Rolando Grant',NULL,NULL,'Rolando','','Grant',1,0,0,0,1,0,NULL,'Grant, Rolando',NULL,NULL,NULL,'2',NULL,'4031135000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Grant',NULL,2,'1935-02-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (43,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (44,'Individual',NULL,'Delana Ivanov',NULL,NULL,'Delana','','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Delana',NULL,NULL,NULL,'3',NULL,'1796516445',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (45,'Individual',NULL,'Esta Wattson',NULL,NULL,'Esta','B','Wattson',0,1,0,0,0,0,NULL,'Wattson, Esta',NULL,NULL,NULL,'2',NULL,'1484476563',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Wattson',NULL,NULL,'2001-08-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (46,'Individual',NULL,'Dr. Miguel Samuels',NULL,NULL,'Miguel','','Samuels',1,0,0,0,0,0,NULL,'Samuels, Miguel',NULL,NULL,NULL,'3',NULL,'1633688376',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel Samuels',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (47,'Individual',NULL,'Ashley McReynolds Sr.',NULL,NULL,'Ashley','','McReynolds',0,1,0,0,0,0,NULL,'McReynolds, Ashley',NULL,NULL,NULL,NULL,NULL,'68872917',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley McReynolds Sr.',NULL,NULL,'1971-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (48,'Individual',NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,'2',NULL,'910006395',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear teddywilson@lol.co.in',1,NULL,'Dear teddywilson@lol.co.in',1,NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (49,'Individual',NULL,'Dr. Carlos Ivanov Jr.',NULL,NULL,'Carlos','E','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Carlos',NULL,NULL,NULL,'5',NULL,'3509440467',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Ivanov Jr.',NULL,2,'1994-08-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (50,'Organization',NULL,'Illinois Food Fund','Illinois Food Fund',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Illinois Food Fund',NULL,NULL,NULL,'3',NULL,'1276770505',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Illinois Food Fund',NULL,NULL,NULL,0,NULL,NULL,74,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (51,'Household',NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,NULL,NULL,'1022464571',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Díaz-Łąchowski family',5,NULL,'Dear Díaz-Łąchowski family',2,NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,0,NULL,'Díaz-Łąchowski family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (52,'Organization',NULL,'Lincoln Action Academy','Lincoln Action Academy',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Lincoln Action Academy',NULL,NULL,NULL,'4',NULL,'588269897',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lincoln Action Academy',NULL,NULL,NULL,0,NULL,NULL,109,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (53,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (54,'Individual',NULL,'Dr. Teddy Nielsen',NULL,NULL,'Teddy','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Teddy',NULL,NULL,NULL,'3',NULL,'1600610365',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Nielsen',NULL,2,'1945-06-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (55,'Individual',NULL,'Russell Ivanov Jr.',NULL,NULL,'Russell','P','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Russell',NULL,NULL,NULL,'5',NULL,'624189081',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Ivanov Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (56,'Individual',NULL,'Merrie Cooper',NULL,NULL,'Merrie','','Cooper',0,0,0,0,1,0,NULL,'Cooper, Merrie',NULL,NULL,NULL,'2',NULL,'340467569',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Cooper',NULL,1,'1939-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (57,'Individual',NULL,'Dr. Maxwell Deforest',NULL,NULL,'Maxwell','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Maxwell',NULL,NULL,NULL,'1',NULL,'1808949889',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (58,'Household',NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,'1714131215',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman family',5,NULL,'Dear Bachman family',2,NULL,'Bachman family',NULL,NULL,NULL,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (59,'Organization',NULL,'Global Sustainability Alliance','Global Sustainability Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Sustainability Alliance',NULL,NULL,NULL,'1',NULL,'842567976',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sustainability Alliance',NULL,NULL,NULL,0,NULL,NULL,185,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (60,'Individual',NULL,'Dr. Lou Ivanov Jr.',NULL,NULL,'Lou','','Ivanov',0,1,0,0,0,0,NULL,'Ivanov, Lou',NULL,NULL,NULL,'2',NULL,'211844515',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Ivanov Jr.',NULL,2,'1981-06-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (61,'Individual',NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,'1',NULL,'1093174039',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear reynoldsa@spamalot.co.uk',1,NULL,'Dear reynoldsa@spamalot.co.uk',1,NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (62,'Individual',NULL,'Alexia Reynolds',NULL,NULL,'Alexia','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Alexia',NULL,NULL,NULL,'5',NULL,'1389353396',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (63,'Individual',NULL,'Sonny Reynolds',NULL,NULL,'Sonny','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'2914964394',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Reynolds',NULL,2,'2011-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (64,'Organization',NULL,'Dowlen Software Alliance','Dowlen Software Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Dowlen Software Alliance',NULL,NULL,NULL,NULL,NULL,'1260268914',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dowlen Software Alliance',NULL,NULL,NULL,0,NULL,NULL,184,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (65,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,'4',NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (66,'Individual',NULL,'Barry Terry',NULL,NULL,'Barry','N','Terry',0,1,0,0,0,0,NULL,'Terry, Barry',NULL,NULL,NULL,NULL,NULL,'929041000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terry',NULL,NULL,'2007-11-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (67,'Organization',NULL,'Bay Empowerment School','Bay Empowerment School',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bay Empowerment School',NULL,NULL,NULL,NULL,NULL,'2478135666',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bay Empowerment School',NULL,NULL,NULL,0,NULL,NULL,76,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (68,'Organization',NULL,'United Agriculture Academy','United Agriculture Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'United Agriculture Academy',NULL,NULL,NULL,'2',NULL,'2961780957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Agriculture Academy',NULL,NULL,NULL,0,NULL,NULL,85,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (69,'Organization',NULL,'Global Sports Center','Global Sports Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Sports Center',NULL,NULL,NULL,NULL,NULL,'2901322748',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sports Center',NULL,NULL,NULL,0,NULL,NULL,4,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (70,'Individual',NULL,'Irvin Díaz Jr.',NULL,NULL,'Irvin','','Díaz',0,0,0,0,0,0,NULL,'Díaz, Irvin',NULL,NULL,NULL,NULL,NULL,'2415400429',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Díaz Jr.',NULL,2,'1952-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (71,'Individual',NULL,'Ms. Bernadette Müller',NULL,NULL,'Bernadette','F','Müller',0,0,0,0,1,0,NULL,'Müller, Bernadette',NULL,NULL,NULL,NULL,NULL,'2804032609',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Ms. Bernadette Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (72,'Individual',NULL,'Mr. Miguel Wagner','Progressive Culture Partnership',NULL,'Miguel','D','Wagner',0,0,0,0,0,0,NULL,'Wagner, Miguel',NULL,NULL,NULL,NULL,NULL,'422482436',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Wagner',NULL,2,'1950-08-08',0,NULL,NULL,NULL,NULL,NULL,133,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (73,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'1',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (74,'Individual',NULL,'Valene Samuels','Illinois Food Fund',NULL,'Valene','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Valene',NULL,NULL,NULL,NULL,NULL,'1762584511',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Samuels',NULL,1,'2020-03-07',0,NULL,NULL,NULL,NULL,NULL,50,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (75,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'1',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (76,'Individual',NULL,'Mr. Miguel Prentice II','Bay Empowerment School',NULL,'Miguel','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Miguel',NULL,NULL,NULL,NULL,NULL,'3093767059',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Prentice II',NULL,NULL,'1978-08-28',0,NULL,NULL,NULL,NULL,NULL,67,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (77,'Organization',NULL,'Global Wellness Center','Global Wellness Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Wellness Center',NULL,NULL,NULL,'4',NULL,'2771241701',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Wellness Center',NULL,NULL,NULL,0,NULL,NULL,81,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (78,'Individual',NULL,'Shad Müller',NULL,NULL,'Shad','','Müller',0,0,0,0,0,0,NULL,'Müller, Shad',NULL,NULL,NULL,NULL,NULL,'233080666',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Müller',NULL,2,NULL,1,'2022-12-10',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (79,'Individual',NULL,'Irvin Müller',NULL,NULL,'Irvin','N','Müller',0,0,0,0,1,0,NULL,'Müller, Irvin',NULL,NULL,NULL,NULL,NULL,'1250430175',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Müller',NULL,2,'2016-02-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (80,'Individual',NULL,'Dr. Kathlyn Dimitrov',NULL,NULL,'Kathlyn','','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Kathlyn',NULL,NULL,NULL,NULL,NULL,'3934921435',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Dr. Kathlyn Dimitrov',NULL,NULL,'1970-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (81,'Individual',NULL,'Dr. Elina Smith','Global Wellness Center',NULL,'Elina','D','Smith',0,0,0,0,1,0,NULL,'Smith, Elina',NULL,NULL,NULL,'3',NULL,'1079819733',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Smith',NULL,1,'1942-10-13',0,NULL,NULL,NULL,NULL,NULL,77,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (82,'Individual',NULL,'Mrs. Margaret Cruz',NULL,NULL,'Margaret','M','Cruz',0,0,0,0,1,0,NULL,'Cruz, Margaret',NULL,NULL,NULL,'2',NULL,'680750633',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Mrs. Margaret Cruz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (83,'Individual',NULL,'Toby Barkley',NULL,NULL,'Toby','F','Barkley',1,0,0,0,1,0,NULL,'Barkley, Toby',NULL,NULL,NULL,'3',NULL,'2112758075',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Barkley',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (84,'Individual',NULL,'Mr. Craig Prentice',NULL,NULL,'Craig','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Craig',NULL,NULL,NULL,'1',NULL,'3778069057',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Prentice',NULL,2,'1964-12-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (85,'Individual',NULL,'Dr. Justina McReynolds','United Agriculture Academy',NULL,'Justina','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Justina',NULL,NULL,NULL,'5',NULL,'1146130692',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Dr. Justina McReynolds',NULL,1,'1989-07-29',0,NULL,NULL,NULL,NULL,NULL,68,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (86,'Individual',NULL,'Eleonor Parker',NULL,NULL,'Eleonor','K','Parker',0,0,0,0,0,0,NULL,'Parker, Eleonor',NULL,NULL,NULL,NULL,NULL,'3234463672',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Parker',NULL,1,'1995-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (87,'Individual',NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,NULL,NULL,'2789926097',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear reynolds.q.laree29@fishmail.net',1,NULL,'Dear reynolds.q.laree29@fishmail.net',1,NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (88,'Household',NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,'1990073228',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen family',5,NULL,'Dear Olsen family',2,NULL,'Olsen family',NULL,NULL,NULL,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (89,'Individual',NULL,'Kiara Nielsen',NULL,NULL,'Kiara','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Kiara',NULL,NULL,NULL,'2',NULL,'4265488572',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Nielsen',NULL,1,'1968-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (90,'Individual',NULL,'Junko Łąchowski',NULL,NULL,'Junko','E','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Junko',NULL,NULL,NULL,'5',NULL,'213828340',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Łąchowski',NULL,NULL,'1989-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (91,'Individual',NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,'3825255427',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jameson.q.rebekah@fishmail.co.nz',1,NULL,'Dear jameson.q.rebekah@fishmail.co.nz',1,NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (92,'Individual',NULL,'Mrs. Magan Wilson-Jameson',NULL,NULL,'Magan','','Wilson-Jameson',0,1,0,0,0,0,NULL,'Wilson-Jameson, Magan',NULL,NULL,NULL,NULL,NULL,'200719141',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Mrs. Magan Wilson-Jameson',NULL,1,'2002-10-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (93,'Individual',NULL,'Mr. Jackson McReynolds',NULL,NULL,'Jackson','Q','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Jackson',NULL,NULL,NULL,'3',NULL,'748161972',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (94,'Individual',NULL,'Omar Parker Jr.',NULL,NULL,'Omar','','Parker',0,1,0,0,0,0,NULL,'Parker, Omar',NULL,NULL,NULL,'2',NULL,'3921166397',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Parker Jr.',NULL,NULL,'1998-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (95,'Organization',NULL,'Rural Agriculture Trust','Rural Agriculture Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Rural Agriculture Trust',NULL,NULL,NULL,'3',NULL,'3564832016',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Agriculture Trust',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (96,'Individual',NULL,'blackwella@notmail.org','Local Environmental Trust',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'blackwella@notmail.org',NULL,NULL,NULL,NULL,NULL,'442145169',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear blackwella@notmail.org',1,NULL,'Dear blackwella@notmail.org',1,NULL,'blackwella@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,148,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (97,'Individual',NULL,'Bernadette Łąchowski',NULL,NULL,'Bernadette','','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Bernadette',NULL,NULL,NULL,'2',NULL,'2108681272',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Łąchowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (98,'Individual',NULL,'Shauna Patel',NULL,NULL,'Shauna','P','Patel',0,1,0,0,0,0,NULL,'Patel, Shauna',NULL,NULL,NULL,NULL,NULL,'607971339',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Patel',NULL,1,'1949-12-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (99,'Individual',NULL,'Ms. Mei Olsen',NULL,NULL,'Mei','R','Olsen',1,0,0,0,0,0,NULL,'Olsen, Mei',NULL,NULL,NULL,NULL,NULL,'258402374',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Ms. Mei Olsen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (100,'Individual',NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,'4287671736',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear justinawilson-deforest24@fishmail.co.in',1,NULL,'Dear justinawilson-deforest24@fishmail.co.in',1,NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (101,'Individual',NULL,'Delana Dimitrov',NULL,NULL,'Delana','L','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Delana',NULL,NULL,NULL,NULL,NULL,'4026480882',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Dimitrov',NULL,1,NULL,1,'2023-10-11',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (102,'Individual',NULL,'Mr. Barry Wagner',NULL,NULL,'Barry','N','Wagner',0,0,0,0,0,0,NULL,'Wagner, Barry',NULL,NULL,NULL,NULL,NULL,'1267143153',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Mr. Barry Wagner',NULL,2,'1953-12-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (103,'Organization',NULL,'Oregon Development Network','Oregon Development Network',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Oregon Development Network',NULL,NULL,NULL,'2',NULL,'784567487',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Oregon Development Network',NULL,NULL,NULL,0,NULL,NULL,187,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (104,'Individual',NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,NULL,NULL,'3914421875',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear bj.wilson-jameson@testing.co.uk',1,NULL,'Dear bj.wilson-jameson@testing.co.uk',1,NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (105,'Individual',NULL,'Dr. Elizabeth Roberts',NULL,NULL,'Elizabeth','D','Roberts',1,0,0,0,0,0,NULL,'Roberts, Elizabeth',NULL,NULL,NULL,'3',NULL,'3104864980',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Roberts',NULL,1,'1971-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (106,'Individual',NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,NULL,NULL,'1568362394',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear daz.rosario@fishmail.info',1,NULL,'Dear daz.rosario@fishmail.info',1,NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (107,'Individual',NULL,'Esta Łąchowski',NULL,NULL,'Esta','G','Łąchowski',0,0,0,0,1,0,NULL,'Łąchowski, Esta',NULL,NULL,NULL,'1',NULL,'195412899',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Łąchowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (108,'Individual',NULL,'Dr. Kiara Łąchowski',NULL,NULL,'Kiara','O','Łąchowski',0,0,0,0,0,0,NULL,'Łąchowski, Kiara',NULL,NULL,NULL,NULL,NULL,'1559609409',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Łąchowski',NULL,NULL,'1982-01-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (109,'Individual',NULL,'Lashawnda Prentice','Lincoln Action Academy',NULL,'Lashawnda','','Prentice',0,0,0,0,1,0,NULL,'Prentice, Lashawnda',NULL,NULL,NULL,NULL,NULL,'2396624366',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Prentice',NULL,NULL,'1977-07-17',0,NULL,NULL,NULL,NULL,NULL,52,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (110,'Individual',NULL,'Mr. Lawerence Deforest',NULL,NULL,'Lawerence','','Deforest',1,0,0,0,0,0,NULL,'Deforest, Lawerence',NULL,NULL,NULL,NULL,NULL,'2962516652',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (111,'Individual',NULL,'Kenny Yadav II',NULL,NULL,'Kenny','D','Yadav',0,0,0,0,0,0,NULL,'Yadav, Kenny',NULL,NULL,NULL,'4',NULL,'250746844',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Yadav II',NULL,NULL,'1995-06-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (112,'Individual',NULL,'Mr. Sherman Müller',NULL,NULL,'Sherman','H','Müller',1,0,0,0,0,0,NULL,'Müller, Sherman',NULL,NULL,NULL,'3',NULL,'1541323485',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Müller',NULL,2,'1991-05-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (113,'Individual',NULL,'Dr. Elizabeth Robertson',NULL,NULL,'Elizabeth','','Robertson',1,0,0,0,0,0,NULL,'Robertson, Elizabeth',NULL,NULL,NULL,NULL,NULL,'3762031116',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Robertson',NULL,NULL,'1954-06-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (114,'Individual',NULL,'Daren Samson-Terry',NULL,NULL,'Daren','F','Samson-Terry',1,0,0,0,0,0,NULL,'Samson-Terry, Daren',NULL,NULL,NULL,NULL,NULL,'1484741128',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Samson-Terry',NULL,2,'1982-06-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (115,'Individual',NULL,'Clint Deforest','Sacramento Empowerment Partners',NULL,'Clint','U','Deforest',0,0,0,0,0,0,NULL,'Deforest, Clint',NULL,NULL,NULL,'1',NULL,'2437706084',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,135,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (116,'Individual',NULL,'Teresa Olsen',NULL,NULL,'Teresa','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Teresa',NULL,NULL,NULL,NULL,NULL,'1784308763',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Olsen',NULL,1,'2007-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (117,'Individual',NULL,'Norris Reynolds',NULL,NULL,'Norris','S','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Norris',NULL,NULL,NULL,NULL,NULL,'3621358089',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Reynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (118,'Individual',NULL,'Alexia Lee-Yadav',NULL,NULL,'Alexia','P','Lee-Yadav',0,1,0,0,1,0,NULL,'Lee-Yadav, Alexia',NULL,NULL,NULL,NULL,NULL,'147177678',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Lee-Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (119,'Individual',NULL,'Mr. Ashley Wagner',NULL,NULL,'Ashley','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Ashley',NULL,NULL,NULL,'1',NULL,'1660268830',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mr. Ashley Wagner',NULL,2,'1981-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (120,'Individual',NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,'1',NULL,'2482041681',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear blackwell.josefa@infomail.org',1,NULL,'Dear blackwell.josefa@infomail.org',1,NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (121,'Individual',NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,'5',NULL,'2359360083',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrells@mymail.co.pl',1,NULL,'Dear terrells@mymail.co.pl',1,NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (122,'Organization',NULL,'Cranfills Gap Health Trust','Cranfills Gap Health Trust',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Cranfills Gap Health Trust',NULL,NULL,NULL,'1',NULL,'45920780',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Cranfills Gap Health Trust',NULL,NULL,NULL,0,NULL,NULL,18,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (123,'Individual',NULL,'Kathlyn Roberts',NULL,NULL,'Kathlyn','Z','Roberts',0,0,0,0,0,0,NULL,'Roberts, Kathlyn',NULL,NULL,NULL,NULL,NULL,'2944584126',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Roberts',NULL,1,'1942-07-12',1,'2023-02-07',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (124,'Individual',NULL,'Dr. Scott Müller',NULL,NULL,'Scott','Q','Müller',0,0,0,0,0,0,NULL,'Müller, Scott',NULL,NULL,NULL,NULL,NULL,'2575613599',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Müller',NULL,2,'1963-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (125,'Individual',NULL,'Sharyn Ivanov',NULL,NULL,'Sharyn','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Sharyn',NULL,NULL,NULL,NULL,NULL,'4099997756',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (126,'Individual',NULL,'Troy Prentice',NULL,NULL,'Troy','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Troy',NULL,NULL,NULL,NULL,NULL,'2143976390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Prentice',NULL,NULL,'1996-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (127,'Individual',NULL,'Dr. Kiara Bachman',NULL,NULL,'Kiara','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kiara',NULL,NULL,NULL,'1',NULL,'3047638217',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Bachman',NULL,1,'1947-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (128,'Individual',NULL,'Dr. Lincoln Cruz',NULL,NULL,'Lincoln','Y','Cruz',0,0,0,0,1,0,NULL,'Cruz, Lincoln',NULL,NULL,NULL,'2',NULL,'3085396026',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Cruz',NULL,2,'1940-01-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (129,'Individual',NULL,'Erik Deforest','Creative Peace Solutions',NULL,'Erik','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Erik',NULL,NULL,NULL,NULL,NULL,'1691264565',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Deforest',NULL,2,'1973-02-04',0,NULL,NULL,NULL,NULL,NULL,19,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (130,'Individual',NULL,'Justina Jensen',NULL,NULL,'Justina','','Jensen',0,0,0,0,1,0,NULL,'Jensen, Justina',NULL,NULL,NULL,'4',NULL,'3253764259',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Jensen',NULL,1,'1982-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (131,'Household',NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Samuels family',NULL,NULL,NULL,'5',NULL,'350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (132,'Individual',NULL,'Allen Cooper II',NULL,NULL,'Allen','K','Cooper',0,0,0,0,0,0,NULL,'Cooper, Allen',NULL,NULL,NULL,'3',NULL,'1888383899',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Cooper II',NULL,2,'1974-09-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (133,'Organization',NULL,'Progressive Culture Partnership','Progressive Culture Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Progressive Culture Partnership',NULL,NULL,NULL,'3',NULL,'3653775844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Culture Partnership',NULL,NULL,NULL,0,NULL,NULL,72,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (134,'Household',NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,'3235379039',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest family',5,NULL,'Dear Deforest family',2,NULL,'Deforest family',NULL,NULL,NULL,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (135,'Organization',NULL,'Sacramento Empowerment Partners','Sacramento Empowerment Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Sacramento Empowerment Partners',NULL,NULL,NULL,'2',NULL,'3370788420',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sacramento Empowerment Partners',NULL,NULL,NULL,0,NULL,NULL,115,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (136,'Individual',NULL,'Ms. Merrie Smith',NULL,NULL,'Merrie','L','Smith',1,0,0,0,0,0,NULL,'Smith, Merrie',NULL,NULL,NULL,'1',NULL,'2728255522',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (137,'Individual',NULL,'Mrs. Alexia Olsen',NULL,NULL,'Alexia','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Alexia',NULL,NULL,NULL,NULL,NULL,'1565274268',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Mrs. Alexia Olsen',NULL,1,'1986-04-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (138,'Individual',NULL,'Mr. Toby Jacobs',NULL,NULL,'Toby','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Toby',NULL,NULL,NULL,NULL,NULL,'247886444',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Jacobs',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (139,'Organization',NULL,'Rural Health Initiative','Rural Health Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Rural Health Initiative',NULL,NULL,NULL,NULL,NULL,'1369844291',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Health Initiative',NULL,NULL,NULL,0,NULL,NULL,197,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (140,'Individual',NULL,'Mr. Russell Terry',NULL,NULL,'Russell','','Terry',0,0,0,0,0,0,NULL,'Terry, Russell',NULL,NULL,NULL,NULL,NULL,'3994938484',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Mr. Russell Terry',NULL,2,'1952-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (141,'Individual',NULL,'Elbert Cruz',NULL,NULL,'Elbert','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Elbert',NULL,NULL,NULL,NULL,NULL,'418027726',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Cruz',NULL,2,'1966-11-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (142,'Individual',NULL,'Dr. Tanya Blackwell',NULL,NULL,'Tanya','H','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Tanya',NULL,NULL,NULL,NULL,NULL,'2751001066',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (143,'Individual',NULL,'Kenny Olsen III',NULL,NULL,'Kenny','L','Olsen',0,0,0,0,0,0,NULL,'Olsen, Kenny',NULL,NULL,NULL,NULL,NULL,'293860292',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Olsen III',NULL,NULL,'1982-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (144,'Individual',NULL,'Princess Terry',NULL,NULL,'Princess','','Terry',0,0,0,0,0,0,NULL,'Terry, Princess',NULL,NULL,NULL,NULL,NULL,'383206962',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (145,'Individual',NULL,'Dr. Shad Jacobs Sr.',NULL,NULL,'Shad','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Shad',NULL,NULL,NULL,NULL,NULL,'3732235082',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Jacobs Sr.',NULL,NULL,'1973-09-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (146,'Organization',NULL,'United Culture Initiative','United Culture Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'United Culture Initiative',NULL,NULL,NULL,'3',NULL,'1902448514',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Culture Initiative',NULL,NULL,NULL,0,NULL,NULL,178,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (147,'Individual',NULL,'Toby Samuels III',NULL,NULL,'Toby','L','Samuels',0,0,0,0,0,0,NULL,'Samuels, Toby',NULL,NULL,NULL,NULL,NULL,'126496012',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Samuels III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (148,'Organization',NULL,'Local Environmental Trust','Local Environmental Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Local Environmental Trust',NULL,NULL,NULL,'3',NULL,'1375669844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Environmental Trust',NULL,NULL,NULL,0,NULL,NULL,96,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (149,'Individual',NULL,'Dr. Nicole Samuels',NULL,NULL,'Nicole','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Nicole',NULL,NULL,NULL,'1',NULL,'3510229898',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Dr. Nicole Samuels',NULL,1,'1977-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (150,'Individual',NULL,'Mr. Allan Prentice',NULL,NULL,'Allan','H','Prentice',1,0,0,0,0,0,NULL,'Prentice, Allan',NULL,NULL,NULL,'5',NULL,'2464878706',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Mr. Allan Prentice',NULL,NULL,'1952-09-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (151,'Individual',NULL,'Kandace Cruz-Reynolds',NULL,NULL,'Kandace','Z','Cruz-Reynolds',0,0,0,0,1,0,NULL,'Cruz-Reynolds, Kandace',NULL,NULL,NULL,'1',NULL,'2077726550',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Cruz-Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (152,'Individual',NULL,'Alexia Yadav',NULL,NULL,'Alexia','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Alexia',NULL,NULL,NULL,NULL,NULL,'1312807214',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Yadav',NULL,NULL,'1987-05-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (153,'Individual',NULL,'Dr. Esta Nielsen',NULL,NULL,'Esta','','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Esta',NULL,NULL,NULL,'3',NULL,'2804173952',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Dr. Esta Nielsen',NULL,NULL,'1938-02-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (154,'Individual',NULL,'Valene Reynolds',NULL,NULL,'Valene','Z','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Valene',NULL,NULL,NULL,'4',NULL,'2505441873',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Reynolds',NULL,1,'1974-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (155,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (156,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,'3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (157,'Individual',NULL,'Mrs. Megan Jameson',NULL,NULL,'Megan','','Jameson',1,1,0,0,0,0,NULL,'Jameson, Megan',NULL,NULL,NULL,NULL,NULL,'1706411142',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Jameson',NULL,1,'1986-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (158,'Individual',NULL,'Dr. Rosario Robertson II',NULL,NULL,'Rosario','M','Robertson',0,0,0,0,0,0,NULL,'Robertson, Rosario',NULL,NULL,NULL,'2',NULL,'1907398578',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Dr. Rosario Robertson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (159,'Household',NULL,'Yadav family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Yadav family',NULL,NULL,NULL,'4',NULL,'1777336212',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Yadav family',5,NULL,'Dear Yadav family',2,NULL,'Yadav family',NULL,NULL,NULL,0,NULL,'Yadav family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (160,'Individual',NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,NULL,NULL,'4284286130',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear alexiad24@fishmail.net',1,NULL,'Dear alexiad24@fishmail.net',1,NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (161,'Organization',NULL,'Progressive Music Network','Progressive Music Network',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Progressive Music Network',NULL,NULL,NULL,'4',NULL,'2461489408',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Music Network',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (162,'Individual',NULL,'Dr. Brigette Terry',NULL,NULL,'Brigette','','Terry',0,0,0,0,0,0,NULL,'Terry, Brigette',NULL,NULL,NULL,NULL,NULL,'2789451544',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Dr. Brigette Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (163,'Individual',NULL,'Mrs. Kathlyn Jensen-Terry',NULL,NULL,'Kathlyn','','Jensen-Terry',1,0,0,0,1,0,NULL,'Jensen-Terry, Kathlyn',NULL,NULL,NULL,'3',NULL,'4042544597',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn Jensen-Terry',NULL,1,'1967-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (164,'Individual',NULL,'Dr. Bob Prentice',NULL,NULL,'Bob','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Bob',NULL,NULL,NULL,'3',NULL,'912966256',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Dr. Bob Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (165,'Individual',NULL,'Landon Olsen',NULL,NULL,'Landon','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Landon',NULL,NULL,NULL,NULL,NULL,'496664817',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (166,'Individual',NULL,'Mr. Clint Terry',NULL,NULL,'Clint','A','Terry',0,0,0,0,0,0,NULL,'Terry, Clint',NULL,NULL,NULL,NULL,NULL,'1893701236',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Terry',NULL,2,'1952-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (167,'Individual',NULL,'Dr. Errol Ivanov',NULL,NULL,'Errol','S','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Errol',NULL,NULL,NULL,NULL,NULL,'3859438937',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Ivanov',NULL,2,'1959-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (168,'Individual',NULL,'Dr. Ivey Deforest',NULL,NULL,'Ivey','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Ivey',NULL,NULL,NULL,NULL,NULL,'1981648661',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Dr. Ivey Deforest',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (169,'Individual',NULL,'Kathlyn Jones',NULL,NULL,'Kathlyn','','Jones',1,0,0,0,1,0,NULL,'Jones, Kathlyn',NULL,NULL,NULL,NULL,NULL,'1774529515',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Jones',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (170,'Individual',NULL,'wattsonm@infomail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wattsonm@infomail.net',NULL,NULL,NULL,NULL,NULL,'6529586',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear wattsonm@infomail.net',1,NULL,'Dear wattsonm@infomail.net',1,NULL,'wattsonm@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (171,'Individual',NULL,'Mrs. Santina Robertson',NULL,NULL,'Santina','X','Robertson',1,0,0,0,0,0,NULL,'Robertson, Santina',NULL,NULL,NULL,'5',NULL,'2867920569',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Robertson',NULL,1,'1946-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (172,'Individual',NULL,'Allan Zope Sr.',NULL,NULL,'Allan','T','Zope',0,0,0,0,1,0,NULL,'Zope, Allan',NULL,NULL,NULL,'5',NULL,'891375066',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Zope Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (173,'Individual',NULL,'Mrs. Sharyn Yadav',NULL,NULL,'Sharyn','V','Yadav',0,0,0,0,0,0,NULL,'Yadav, Sharyn',NULL,NULL,NULL,NULL,NULL,'2905194815',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn Yadav',NULL,1,NULL,1,'2023-03-11',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (174,'Individual',NULL,'Mr. Miguel Zope III',NULL,NULL,'Miguel','','Zope',0,0,0,0,0,0,NULL,'Zope, Miguel',NULL,NULL,NULL,'1',NULL,'1624097300',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Zope III',NULL,2,'1990-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (175,'Individual',NULL,'Betty McReynolds',NULL,NULL,'Betty','J','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Betty',NULL,NULL,NULL,NULL,NULL,'2136104008',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty McReynolds',NULL,NULL,'1982-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (176,'Individual',NULL,'Iris Reynolds',NULL,NULL,'Iris','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Iris',NULL,NULL,NULL,'4',NULL,'3509379571',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Reynolds',NULL,1,'1964-03-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (177,'Household',NULL,'Wattson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wattson family',NULL,NULL,NULL,'4',NULL,'2851339192',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wattson family',5,NULL,'Dear Wattson family',2,NULL,'Wattson family',NULL,NULL,NULL,0,NULL,'Wattson family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (178,'Individual',NULL,'Dr. Rodrigo Jameson','United Culture Initiative',NULL,'Rodrigo','','Jameson',0,0,0,0,0,0,NULL,'Jameson, Rodrigo',NULL,NULL,NULL,NULL,NULL,'2012648674',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Dr. Rodrigo Jameson',NULL,2,'1954-05-09',0,NULL,NULL,NULL,NULL,NULL,146,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (179,'Individual',NULL,'Dr. Bernadette Jacobs-Prentice',NULL,NULL,'Bernadette','','Jacobs-Prentice',1,0,0,0,1,0,NULL,'Jacobs-Prentice, Bernadette',NULL,NULL,NULL,'5',NULL,'2581639941',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette Jacobs-Prentice',NULL,1,'1974-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (180,'Individual',NULL,'Dr. Carlos Samson',NULL,NULL,'Carlos','F','Samson',0,1,0,0,0,0,NULL,'Samson, Carlos',NULL,NULL,NULL,'1',NULL,'3685526914',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Samson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (181,'Individual',NULL,'Ms. Tanya McReynolds',NULL,NULL,'Tanya','B','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Tanya',NULL,NULL,NULL,NULL,NULL,'2833475968',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Ms. Tanya McReynolds',NULL,1,'1989-08-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (182,'Individual',NULL,'Herminia Terry',NULL,NULL,'Herminia','Q','Terry',1,0,0,0,0,0,NULL,'Terry, Herminia',NULL,NULL,NULL,NULL,NULL,'356369010',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Terry',NULL,1,'1975-06-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (183,'Individual',NULL,'Mr. Kenny Ivanov',NULL,NULL,'Kenny','A','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Kenny',NULL,NULL,NULL,NULL,NULL,'4111336352',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Ivanov',NULL,2,'1980-09-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (184,'Individual',NULL,'Dr. Teddy Cooper III','Dowlen Software Alliance',NULL,'Teddy','','Cooper',0,0,0,0,0,0,NULL,'Cooper, Teddy',NULL,NULL,NULL,NULL,NULL,'828228061',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Cooper III',NULL,2,'1993-12-20',0,NULL,NULL,NULL,NULL,NULL,64,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (185,'Individual',NULL,'Sherman Robertson III','Global Sustainability Alliance',NULL,'Sherman','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Sherman',NULL,NULL,NULL,'3',NULL,'3479857214',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Robertson III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,59,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (186,'Individual',NULL,'Mr. Kenny Jacobs III',NULL,NULL,'Kenny','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Kenny',NULL,NULL,NULL,NULL,NULL,'1044730065',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Jacobs III',NULL,NULL,'1944-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (187,'Individual',NULL,'Mr. Bob Terrell','Oregon Development Network',NULL,'Bob','','Terrell',0,1,0,0,1,0,NULL,'Terrell, Bob',NULL,NULL,NULL,NULL,NULL,'1949116278',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Mr. Bob Terrell',NULL,2,'1985-04-15',0,NULL,NULL,NULL,NULL,NULL,103,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (188,'Individual',NULL,'Mrs. Alexia Díaz',NULL,NULL,'Alexia','Q','Díaz',0,0,0,0,0,0,NULL,'Díaz, Alexia',NULL,NULL,NULL,'1',NULL,'352965868',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Mrs. Alexia Díaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (189,'Individual',NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,NULL,NULL,'356570904',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear bachman.maria@infomail.info',1,NULL,'Dear bachman.maria@infomail.info',1,NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (190,'Household',NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,NULL,'3738961941',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Reynolds family',5,NULL,'Dear Cruz-Reynolds family',2,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,0,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (191,'Household',NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,NULL,'1733530397',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson-Jameson family',5,NULL,'Dear Wilson-Jameson family',2,NULL,'Wilson-Jameson family',NULL,NULL,NULL,0,NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (192,'Individual',NULL,'Mrs. Josefa Wilson',NULL,NULL,'Josefa','L','Wilson',0,1,0,0,0,0,NULL,'Wilson, Josefa',NULL,NULL,NULL,'2',NULL,'244303065',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Wilson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (193,'Individual',NULL,'Alexia Ivanov',NULL,NULL,'Alexia','','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Alexia',NULL,NULL,NULL,NULL,NULL,'393680941',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (194,'Individual',NULL,'Mr. Troy Müller',NULL,NULL,'Troy','','Müller',0,0,0,0,0,0,NULL,'Müller, Troy',NULL,NULL,NULL,NULL,NULL,'2080888850',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Mr. Troy Müller',NULL,NULL,'1958-02-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (195,'Individual',NULL,'Tanya Terrell',NULL,NULL,'Tanya','G','Terrell',0,0,0,0,1,0,NULL,'Terrell, Tanya',NULL,NULL,NULL,NULL,NULL,'1604022989',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Terrell',NULL,1,'1995-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (196,'Individual',NULL,'Barry Terrell',NULL,NULL,'Barry','','Terrell',0,1,0,0,1,0,NULL,'Terrell, Barry',NULL,NULL,NULL,'5',NULL,'1436486502',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (197,'Individual',NULL,'Ray Grant Jr.','Rural Health Initiative',NULL,'Ray','X','Grant',0,1,0,0,0,0,NULL,'Grant, Ray',NULL,NULL,NULL,'3',NULL,'2294694701',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Grant Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,139,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (198,'Individual',NULL,'Dr. Brent Reynolds Sr.',NULL,NULL,'Brent','','Reynolds',0,1,0,0,0,0,NULL,'Reynolds, Brent',NULL,NULL,NULL,NULL,NULL,'547975558',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent Reynolds Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (199,'Individual',NULL,'Dr. Magan Müller',NULL,NULL,'Magan','O','Müller',0,0,0,0,0,0,NULL,'Müller, Magan',NULL,NULL,NULL,'3',NULL,'681120033',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (200,'Individual',NULL,'Lashawnda Deforest-Ivanov',NULL,NULL,'Lashawnda','A','Deforest-Ivanov',0,0,0,0,0,0,NULL,'Deforest-Ivanov, Lashawnda',NULL,NULL,NULL,NULL,NULL,'1651460725',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Deforest-Ivanov',NULL,1,'1972-08-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (201,'Individual',NULL,'Beula Nielsen',NULL,NULL,'Beula','R','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Beula',NULL,NULL,NULL,'1',NULL,'1989597446',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Nielsen',NULL,1,'1980-02-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','2553ad08256bebb3da7d27de1801f4e3',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'); /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -2206,117 +2220,117 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution` WRITE; /*!40000 ALTER TABLE `civicrm_contribution` DISABLE KEYS */; INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`, `is_template`) VALUES - (1,2,1,NULL,4,'2013-09-19 09:27:59',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0), - (2,4,1,NULL,1,'2021-06-19 09:27:59',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (3,6,1,NULL,4,'2017-08-24 20:27:59',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0), - (4,8,1,NULL,4,'2021-06-19 09:27:59',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0), - (5,4,1,NULL,1,'2021-06-19 09:27:59',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (6,16,1,NULL,4,'2023-06-26 08:45:59',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0), - (7,19,1,NULL,1,'2023-09-17 09:27:59',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0), - (8,82,1,NULL,1,'2023-01-25 17:38:59',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (9,92,1,NULL,1,'2022-10-19 09:27:59',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (10,34,1,NULL,1,'2019-04-26 11:27:59',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (11,71,1,NULL,1,'2023-09-18 05:27:59',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (12,43,1,NULL,1,'2022-06-18 22:54:39',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (13,32,1,NULL,1,'2023-06-19 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (14,32,1,NULL,1,'2023-07-19 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (15,59,1,NULL,1,'2022-06-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (16,59,1,NULL,1,'2022-07-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (17,59,1,NULL,1,'2022-08-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (18,59,1,NULL,1,'2022-09-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (19,59,1,NULL,1,'2022-10-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (20,59,1,NULL,1,'2022-11-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (21,59,1,NULL,1,'2022-12-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (22,59,1,NULL,1,'2023-01-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (23,59,1,NULL,1,'2023-02-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (24,59,1,NULL,1,'2023-03-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (25,59,1,NULL,1,'2023-04-19 09:27:59',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (26,99,1,NULL,1,'2023-01-19 09:27:59',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (27,99,1,NULL,1,'2023-02-19 09:27:59',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (28,99,1,NULL,1,'2023-03-19 09:27:59',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (29,99,1,NULL,1,'2023-04-19 09:27:59',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (30,99,1,NULL,1,'2023-05-19 09:27:59',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (31,103,1,NULL,1,'2023-08-19 09:27:59',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (32,63,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'cfea93a436d4fbe9',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (33,143,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'13d53c9adb8b3db7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (34,175,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'1c778bb09cc1b392',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (35,183,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'5061100fd255b04e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (36,132,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'a97d1d39888ccdf7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (37,120,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'0b606d2299191135',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (38,34,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'d00b9b024591f172',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (39,55,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'3c11a282f98bbad4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (40,156,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'e27e9abef81b3a9a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (41,36,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'78fce18dc342cfff',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (42,5,2,NULL,1,'2023-09-19 09:27:59',0.00,1200.00,NULL,NULL,'7cfa16ac3dca11de',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (43,201,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'a9d6a1f3202a8731',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (44,103,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'433e02a0457d2d4c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (45,113,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'07d1d5cc82c9a25c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (46,117,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'26bb8d3b362fe332',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (47,166,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'eb9810716534d9a6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (48,151,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'90a3aae330d6b5f4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (49,138,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'0fe647544107c77b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (50,53,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'b06db265d02e6e62',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (51,13,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'1b36181a5963f3f7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (52,142,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'af495fd984da9b16',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (53,82,2,NULL,1,'2023-09-19 09:27:59',0.00,1200.00,NULL,NULL,'bb3900396ec2cc3f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (54,160,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'929581478352902b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (55,199,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'b343dead88529b7a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (56,150,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'b11b56e51fc2ddfe',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (57,195,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'fc2ef1f2cfb8e91f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (58,84,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'3dd2d7853eae4107',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (59,134,2,NULL,1,'2023-09-19 09:27:59',0.00,50.00,NULL,NULL,'e0e697bd746e79e0',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (60,110,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'05b74d70c1c86d49',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (61,141,2,NULL,1,'2023-09-19 09:27:59',0.00,100.00,NULL,NULL,'6879ccb0b2815b7f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (63,6,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'f2dd8909940a5d72',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (64,8,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'3509bb260398b48d',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (65,10,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'3213addd93548fc3',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (66,14,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'b49ac70aa0a05c8e',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (67,16,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'5c25dcc76d76e6a7',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (68,20,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'3950d41c6d687022',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (69,23,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'c7e695a2fdc0d029',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (70,25,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'d701564eb8a64ea3',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (71,27,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'c23d2dfc4c73dcda',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (72,34,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'6d80d47b3ece00d7',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (73,39,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'a3a86830172704ab',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (74,41,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'d3f52e4f0e21b5d9',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (75,48,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'05fb3f715ffa1e5d',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (76,53,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'fd733abe19c3a112',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (77,54,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'ddb9abe2a9c41d16',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (78,55,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'2ae96ad5c89c888a',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (79,56,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'a90305709d035a75',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (80,60,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'60610e3e3b0b0ee3',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (81,64,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'9ccbae1575a15acb',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (82,66,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'b359ff175f484b30',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (83,68,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'f5c17811317fa017',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (84,70,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'2cf7b0d8beda636b',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (85,71,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'7c926dcf8c50cc2f',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (86,72,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'7ef7979c2715fd68',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (87,79,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'d02bef7f783dd71f',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (88,84,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'3767ecc6782624e3',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (89,87,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'3f55f86d29dfd7d3',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (90,90,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'b1e390b4ea32eed7',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (91,106,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'be010a6cf445b7c7',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (92,111,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'916dac78058ad859',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (93,114,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'69552b597f214131',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (94,115,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'99cd9e88b259c4bd',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (95,131,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'29f4aec3f6f7f8fd',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (96,137,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'5c7218dc9ae21989',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (97,138,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'ca7e5e869f9800c0',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (98,139,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'cb20d731fb68c5fc',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (99,140,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'9e976a8b4799f98f',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (100,142,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'c3477cff3394b4e6',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (101,148,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'558accfaf04974d1',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (102,150,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'30e05dbd3f24eea6',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (103,155,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'8c874d815e3ca2ec',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (104,158,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'3843aa22f6d05be2',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (105,161,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'8f50182f139641bf',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (106,165,4,NULL,1,'2023-09-19 09:28:00',0.00,50.00,NULL,NULL,'8b47d1b4c07c4e1c',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (107,172,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'75e3e53fd98caa9a',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (108,175,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'f10e94149b33f53a',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (109,181,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'f87fefd3f271712a',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (110,186,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'ff35874007cb040b',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (111,191,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'311c4f84be113522',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (112,201,4,NULL,1,'2023-09-19 09:28:00',0.00,800.00,NULL,NULL,'a9976c41bdeacd5d',NULL,NULL,'USD',NULL,NULL,'2023-09-19 09:28:00',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0); + (1,2,1,NULL,4,'2013-10-19 14:22:30',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0), + (2,4,1,NULL,1,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (3,6,1,NULL,4,'2017-09-24 01:22:30',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0), + (4,8,1,NULL,4,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0), + (5,4,1,NULL,1,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (6,16,1,NULL,4,'2023-07-26 13:40:30',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0), + (7,19,1,NULL,1,'2023-10-17 14:22:30',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0), + (8,82,1,NULL,1,'2023-02-24 22:33:30',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (9,92,1,NULL,1,'2022-11-19 14:22:30',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (10,34,1,NULL,1,'2019-05-27 16:22:30',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (11,71,1,NULL,1,'2023-10-18 10:22:30',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (12,43,1,NULL,1,'2022-07-19 03:49:10',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (13,32,1,NULL,1,'2023-07-19 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (14,32,1,NULL,1,'2023-08-19 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (15,59,1,NULL,1,'2022-07-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (16,59,1,NULL,1,'2022-08-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (17,59,1,NULL,1,'2022-09-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (18,59,1,NULL,1,'2022-10-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (19,59,1,NULL,1,'2022-11-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (20,59,1,NULL,1,'2022-12-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (21,59,1,NULL,1,'2023-01-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (22,59,1,NULL,1,'2023-02-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (23,59,1,NULL,1,'2023-03-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (24,59,1,NULL,1,'2023-04-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (25,59,1,NULL,1,'2023-05-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (26,99,1,NULL,1,'2023-02-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (27,99,1,NULL,1,'2023-03-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (28,99,1,NULL,1,'2023-04-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (29,99,1,NULL,1,'2023-05-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (30,99,1,NULL,1,'2023-06-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (31,103,1,NULL,1,'2023-09-19 14:22:30',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (32,55,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'c908bcfa0cd5be20',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (33,168,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'4d24ed19cb02ed0c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (34,36,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'c7f53644ae2a7abd',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (35,87,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'df65e9305cdef133',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (36,48,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'9e43d605091634b7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (37,180,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'e6d81f09a41d0f35',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (38,8,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'e38f6ec37b9fabb3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (39,54,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'f739f79d40e7bd2d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (40,106,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'0937a86d9856d20f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (41,17,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'386a76c90a983717',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (42,175,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'1d446a98d22519c5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (43,28,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'6f302a92a8d039f4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (44,117,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'184c1625a0ab7dc0',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (45,86,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'fd4792bd3a50da87',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (46,149,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'2ae34338151a8c31',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (47,47,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'62904aaad7687d16',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (48,126,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'58c722d9ea8f60e4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (49,113,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'0e4d2cc74726c33e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (50,169,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'46fff670fdd88c83',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (51,164,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'126eb1cbca88ac46',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (52,39,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'8e1a4f823c309e35',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (53,49,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9183e73af132fbd1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (54,92,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'e7836a1040fc6647',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (55,136,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'dc8c98604902da07',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (56,187,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9668e4798e266def',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (57,100,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ef096073ba84bc0a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (58,78,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'aa13673d8ef85a65',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (59,66,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'32f851d09a3775f2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (60,93,2,NULL,1,'2023-10-19 14:22:30',0.00,1200.00,NULL,NULL,'fe44a2c192ab18be',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (61,5,2,NULL,1,'2023-10-19 14:22:30',0.00,1200.00,NULL,NULL,'ffed5868e9951a95',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (63,6,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'b28927dfa09ab7b4',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (64,8,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'52b5a6a76b142227',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (65,10,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7245aac602b546bb',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (66,13,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ff5b5537da44c970',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (67,14,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'fad72a1cf34cf68e',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (68,16,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'95a80169077a3dea',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (69,17,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'413cb05032f4ef86',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (70,19,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'755c91f4df5025f2',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (71,23,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'d39bcc7bf0e51cab',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (72,30,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'2169580b75789814',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (73,36,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'25a9f0b5ed29df0a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (74,40,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'3eb2384d79bdaa10',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (75,41,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ed07590fe067cb07',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (76,45,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'96af8634550c39ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (77,57,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'a2542bee3dc332de',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (78,69,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'6cc8dd5a5b8e8913',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (79,73,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'a720e6fdf9eea694',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (80,76,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'732d30e0d1d41ca5',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (81,77,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ac8995759a7a3270',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (82,80,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'6ba712ac9576b7b6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (83,84,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'b056ac8b83186f79',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (84,88,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'24cc9f9c83795713',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (85,92,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'548746b3839860da',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (86,94,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'472bf4e471ef125f',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (87,96,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'188d57636c31422a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (88,97,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'c8d10d10dd2d66bb',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (89,101,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'082640d22f20fcf6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (90,117,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'7a53e74599f788ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (91,123,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'f78524f14cda217c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (92,127,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'3de19df12cf6886c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (93,132,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'b7c48e40295cdc9a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (94,135,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'648327e05cdee0ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (95,144,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9dc4f36b0500ac35',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (96,154,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'fe477a4cedeef016',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (97,156,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'bd1cbf336bcdc529',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (98,158,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'146f0c5184fd503c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (99,159,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'6def5a3cac235219',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (100,160,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'0ab78d1432305653',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (101,163,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'4bc019d5fcebe204',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (102,172,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'44c3f7faa315a724',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (103,175,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7749b8e4f077e05c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (104,178,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7e35b99bd91e7b4c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (105,179,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'504a9107e1c840c3',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (106,182,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'cca171d375cdc8f6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (107,184,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'656d8e5060576829',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (108,189,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'b7318d85efca799b',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (109,192,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'4feacc260963ba72',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (110,195,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'f82bc2b76969d315',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (111,196,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'a96ed671bbd3ea09',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (112,197,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'60f19d9651d20536',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0); /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */; UNLOCK TABLES; @@ -2349,9 +2363,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution_recur` WRITE; /*!40000 ALTER TABLE `civicrm_contribution_recur` DISABLE KEYS */; INSERT INTO `civicrm_contribution_recur` (`id`, `contact_id`, `amount`, `currency`, `frequency_unit`, `frequency_interval`, `installments`, `start_date`, `create_date`, `modified_date`, `cancel_date`, `cancel_reason`, `end_date`, `processor_id`, `payment_token_id`, `trxn_id`, `invoice_id`, `contribution_status_id`, `is_test`, `cycle_day`, `next_sched_contribution_date`, `failure_count`, `failure_retry_date`, `auto_renew`, `payment_processor_id`, `financial_type_id`, `payment_instrument_id`, `campaign_id`, `is_email_receipt`) VALUES - (1,59,25.00,'USD','month',1,12,'2022-06-19 09:27:59','2023-09-19 09:27:59','2023-09-19 09:27:59',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), - (2,99,10.00,'CAD','month',1,6,'2023-01-19 09:27:59','2023-09-19 09:27:59','2023-09-19 09:27:59','2023-08-19 09:27:59','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), - (3,103,5.00,'EUR','month',3,3,'2023-08-19 09:27:59','2023-09-19 09:27:59','2023-09-19 09:27:59',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-11-19 09:27:59',0,NULL,0,1,NULL,NULL,NULL,1); + (1,59,25.00,'USD','month',1,12,'2022-07-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), + (2,99,10.00,'CAD','month',1,6,'2023-02-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30','2023-09-19 14:22:30','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), + (3,103,5.00,'EUR','month',3,3,'2023-09-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-12-19 14:22:30',0,NULL,0,1,NULL,NULL,NULL,1); /*!40000 ALTER TABLE `civicrm_contribution_recur` ENABLE KEYS */; UNLOCK TABLES; @@ -2362,8 +2376,8 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution_soft` WRITE; /*!40000 ALTER TABLE `civicrm_contribution_soft` DISABLE KEYS */; INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES - (1,9,141,10.00,'USD',1,1,'Jones Family','Helping Hands',10), - (2,10,141,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); + (1,9,142,10.00,'USD',1,1,'Jones Family','Helping Hands',10), + (2,10,142,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */; UNLOCK TABLES; @@ -2961,7 +2975,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_domain` WRITE; /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */; INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES - (1,'Default Domain Name',NULL,'5.67.alpha1',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); + (1,'Default Domain Name',NULL,'5.68.alpha1',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */; UNLOCK TABLES; @@ -2973,185 +2987,196 @@ LOCK TABLES `civicrm_email` WRITE; /*!40000 ALTER TABLE `civicrm_email` DISABLE KEYS */; INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES (1,1,1,'fixme.domainemail@example.org',1,0,0,0,NULL,NULL,NULL,NULL), - (2,119,1,'beulan@example.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (3,119,1,'beulanielsen@lol.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (4,139,1,'arlynesmith64@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (5,141,1,'meganwagner@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (6,156,1,'russellw@sample.info',1,0,0,0,NULL,NULL,NULL,NULL), - (7,156,1,'rx.wilson@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (8,132,1,'mdeforest57@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (9,132,1,'deforest.maria9@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (10,79,1,'junkoj@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (11,79,1,'junkoj@example.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (12,49,1,'dimitrov.m.jay@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (13,53,1,'robertson.princess79@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (14,22,1,'ah.ivanov@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (15,22,1,'ah.ivanov17@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (16,4,1,'samuelsa@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (17,4,1,'arlynes18@airmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (18,96,1,'claudiot86@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (19,96,1,'terrell.claudio@testing.info',0,0,0,0,NULL,NULL,NULL,NULL), - (20,2,1,'mlee9@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (21,2,1,'maxwelll@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL), - (22,54,1,'jaybarkley@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (23,54,1,'jbarkley@testmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (24,86,1,'magandimitrov@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (25,69,1,'wagnera83@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (26,69,1,'wagner.ashley4@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (27,143,1,'jacksonsamuels33@testing.info',1,0,0,0,NULL,NULL,NULL,NULL), - (28,145,1,'terrell.brigette8@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (29,175,1,'cooper.k.omar@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (30,175,1,'cooper.k.omar36@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (31,74,1,'gonzlezs19@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (32,74,1,'gonzlez.sharyn16@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (33,68,1,'chowskia@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (34,183,1,'jeromeg@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (35,183,1,'grant.jerome@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (36,114,1,'enielsen@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (37,114,1,'eleonorn@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), - (38,39,1,'olsen.herminia@lol.net',1,0,0,0,NULL,NULL,NULL,NULL), - (39,39,1,'herminiao@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (40,70,1,'princessgonzlez@example.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (41,25,1,'ivanov.esta@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (42,144,1,'wattson.truman@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (43,138,1,'br.chowski@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (44,196,1,'bm.zope@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (45,196,1,'barryzope@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (46,161,1,'deforest.kandace3@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), - (47,161,1,'kandacedeforest8@airmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (48,57,1,'parker.barry@testing.org',1,0,0,0,NULL,NULL,NULL,NULL), - (49,165,1,'junkoivanov66@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (50,165,1,'junkoivanov20@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (51,200,1,'yadav.mei@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (52,104,1,'mterry61@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (53,104,1,'terry.megan@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (54,125,1,'jgonzlez@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (55,64,1,'ju.blackwell@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (56,64,1,'ju.blackwell@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL), - (57,30,1,'sanfordd@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (58,30,1,'sdeforest81@sample.net',0,0,0,0,NULL,NULL,NULL,NULL), - (59,176,1,'jv.prentice59@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (60,12,1,'robertsona58@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (61,12,1,'ashleyr53@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (62,116,1,'nielsen.merrie@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (63,116,1,'nielsenm33@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (64,112,1,'olsenj40@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (65,182,1,'cruz.rolando@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (66,198,1,'dv.wilson@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (67,198,1,'wilsond@sample.info',0,0,0,0,NULL,NULL,NULL,NULL), - (68,148,1,'zope.elina19@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (69,148,1,'et.zope53@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (70,87,1,'jensen.winford88@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (71,87,1,'jensen.winford12@testmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (72,110,1,'raysmith@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (73,110,1,'rq.smith77@lol.net',0,0,0,0,NULL,NULL,NULL,NULL), - (74,127,1,'terrye@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (75,85,1,'nicoles@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (76,133,1,'cruza@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (77,157,1,'lawerencecruz20@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (78,157,1,'cruz.e.lawerence@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL), - (79,5,1,'robertson-wattson.santina@lol.info',1,0,0,0,NULL,NULL,NULL,NULL), - (80,5,1,'santinar16@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (81,140,1,'lawerences@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (82,189,1,'smithi25@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (83,76,1,'csmith@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (84,63,1,'dimitrovr@example.info',1,0,0,0,NULL,NULL,NULL,NULL), - (85,63,1,'dimitrovr29@sample.info',0,0,0,0,NULL,NULL,NULL,NULL), - (86,32,1,'reynolds.teresa7@sample.com',1,0,0,0,NULL,NULL,NULL,NULL), - (87,191,1,'ivanov-reynoldsr@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL), - (88,40,1,'samsonb@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (89,121,1,'jacksonsmith-samson@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (90,121,1,'smith-samsonj41@fishmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (91,128,1,'ji.smith-samson@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (92,128,1,'smith-samsonj16@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (93,36,1,'scarletwattson@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (94,36,1,'scarletwattson@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (95,37,1,'rolandc29@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (96,17,1,'cruz-wattsonk2@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (97,17,1,'kandacec58@lol.org',0,0,0,0,NULL,NULL,NULL,NULL), - (98,100,1,'delanagrant@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (99,35,1,'arlynet75@lol.info',1,0,0,0,NULL,NULL,NULL,NULL), - (100,27,1,'terrell.daren@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (101,146,1,'terrell.ashlie@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (102,146,1,'terrella@sample.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (103,67,1,'lv.zope20@example.info',1,0,0,0,NULL,NULL,NULL,NULL), - (104,192,1,'zope.b.magan@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (105,158,1,'zope.j.damaris@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (106,158,1,'zope.j.damaris9@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (107,102,1,'lzope@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (108,102,1,'louz@sample.org',0,0,0,0,NULL,NULL,NULL,NULL), - (109,33,1,'cooper.truman19@testing.org',1,0,0,0,NULL,NULL,NULL,NULL), - (110,95,1,'cooper.valene@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (111,120,1,'cooper.elizabeth@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (112,120,1,'elizabethcooper49@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (113,44,1,'cooperc77@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (114,44,1,'clintc@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (115,56,1,'brentyadav@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (116,105,1,'yadava@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (117,105,1,'andrewyadav@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL), - (118,9,1,'yadav.beula11@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (119,9,1,'beulay@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (120,48,1,'blackwella8@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (121,48,1,'blackwella17@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (122,93,1,'barkley.f.sanford@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (123,6,1,'barkley.y.magan@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (124,134,1,'terrellr44@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (125,45,1,'valenet@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (126,45,1,'terrell.i.valene75@testing.com',0,0,0,0,NULL,NULL,NULL,NULL), - (127,59,1,'brzczysawj@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (128,195,1,'olsen.brigette81@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (129,42,1,'jacobs-olsen.justina5@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (130,42,1,'justinajacobs-olsen@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (131,179,1,'brigettejacobs-olsen@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (132,135,1,'adams.x.arlyne@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (133,135,1,'arlyneadams@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (134,142,1,'bachman.k.beula@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (135,142,1,'bachman.k.beula@lol.info',0,0,0,0,NULL,NULL,NULL,NULL), - (136,46,1,'adams-bachman.eleonor@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (137,46,1,'adams-bachman.eleonor@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (138,131,1,'eq.adams@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (139,152,1,'adams.r.rosario99@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (140,94,1,'bettya26@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (141,62,1,'tobyp46@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (142,166,1,'parker.sherman4@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (143,166,1,'shermanparker49@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (144,171,1,'parkera@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (145,174,1,'nielsen.jay95@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (146,199,1,'samuels-nielsen.iris@sample.com',1,0,0,0,NULL,NULL,NULL,NULL), - (147,180,1,'nielsenb@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (148,23,3,'contact@georgiaalliance.org',1,0,0,0,NULL,NULL,NULL,NULL), - (149,175,2,'coopero@georgiaalliance.org',0,0,0,0,NULL,NULL,NULL,NULL), - (150,91,3,'info@bremertonsportsinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL), - (151,86,2,'dimitrov.magan@bremertonsportsinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL), - (152,178,3,'feedback@communityempowermentservices.org',1,0,0,0,NULL,NULL,NULL,NULL), - (153,11,2,'barkleyl10@communityempowermentservices.org',1,0,0,0,NULL,NULL,NULL,NULL), - (154,129,3,'contact@communityfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL), - (155,191,2,'acruz34@communityfellowship.org',0,0,0,0,NULL,NULL,NULL,NULL), - (156,19,3,'contact@pinesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL), - (157,108,3,'contact@spokanealliance.org',1,0,0,0,NULL,NULL,NULL,NULL), - (158,110,2,'raysmith51@spokanealliance.org',0,0,0,0,NULL,NULL,NULL,NULL), - (159,194,3,'info@sphealthpartners.org',1,0,0,0,NULL,NULL,NULL,NULL), - (160,36,2,'swattson@sphealthpartners.org',0,0,0,0,NULL,NULL,NULL,NULL), - (161,168,3,'sales@pennsylvaniaarts.org',1,0,0,0,NULL,NULL,NULL,NULL), - (162,164,2,'samsone@pennsylvaniaarts.org',1,0,0,0,NULL,NULL,NULL,NULL), - (163,90,3,'feedback@indianasportsnetwork.org',1,0,0,0,NULL,NULL,NULL,NULL), - (164,143,2,'ji.samuels@indianasportsnetwork.org',0,0,0,0,NULL,NULL,NULL,NULL), - (165,137,3,'sales@texasliteracycollective.org',1,0,0,0,NULL,NULL,NULL,NULL), - (166,18,3,'info@nyactionpartners.org',1,0,0,0,NULL,NULL,NULL,NULL), - (167,17,2,'cruz-wattsonk@nyactionpartners.org',0,0,0,0,NULL,NULL,NULL,NULL), - (168,78,3,'sales@woodbridgeenvironmental.org',1,0,0,0,NULL,NULL,NULL,NULL), - (169,151,2,'angelikao1@woodbridgeenvironmental.org',1,0,0,0,NULL,NULL,NULL,NULL), - (170,88,3,'feedback@unitedwellnessalliance.org',1,0,0,0,NULL,NULL,NULL,NULL), - (171,40,2,'bsamson26@unitedwellnessalliance.org',0,0,0,0,NULL,NULL,NULL,NULL), - (172,193,3,'info@globalschool.org',1,0,0,0,NULL,NULL,NULL,NULL), - (173,147,2,'blackwellc@globalschool.org',1,0,0,0,NULL,NULL,NULL,NULL), - (174,170,3,'info@nyfoodsystems.org',1,0,0,0,NULL,NULL,NULL,NULL), - (175,153,3,'contact@statesboroculturesystems.org',1,0,0,0,NULL,NULL,NULL,NULL), - (176,201,2,'ivanov-reynolds.kenny45@statesboroculturesystems.org',1,0,0,0,NULL,NULL,NULL,NULL), - (177,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (178,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (179,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (180,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); + (2,25,1,'beulaw59@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (3,25,1,'wagnerb94@notmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (4,35,1,'mllero90@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (5,35,1,'omarmller@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (6,5,1,'jacobs.esta@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (7,54,1,'teddynielsen@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (8,4,1,'smith.a.damaris42@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), + (9,4,1,'smith.a.damaris@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (10,9,1,'brigetteroberts@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (11,9,1,'brigetter@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (12,143,1,'olsenk90@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), + (13,143,1,'olsenk@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (14,123,1,'kz.roberts@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (15,123,1,'kathlynroberts79@lol.org',0,0,0,0,NULL,NULL,NULL,NULL), + (16,70,1,'daz.irvin@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (17,70,1,'irvindaz@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (18,173,1,'yadav.sharyn@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (19,186,1,'jacobs.kenny@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (20,186,1,'jacobsk50@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (21,127,1,'kiarab15@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (22,101,1,'delanadimitrov@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (23,30,1,'josefag39@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (24,30,1,'grant.josefa82@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (25,89,1,'nielsenk60@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (26,187,1,'bobt59@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (27,194,1,'troymller@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (28,115,1,'deforest.u.clint2@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (29,115,1,'deforest.u.clint61@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (30,129,1,'erikd57@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (31,129,1,'deforest.erik32@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (32,168,1,'ideforest7@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (33,168,1,'iveyd@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (34,157,1,'jameson.megan@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (35,157,1,'jameson.megan@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (36,172,1,'allanz@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (37,172,1,'at.zope30@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (38,197,1,'rayg@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (39,197,1,'raygrant@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (40,98,1,'shaunapatel@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (41,94,1,'omarp@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (42,94,1,'omarp59@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (43,11,1,'cruzc@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (44,178,1,'rjameson4@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (45,144,1,'princessterry@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (46,201,1,'beulanielsen@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (47,87,1,'reynolds.q.laree29@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (48,8,1,'lt.blackwell40@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), + (49,8,1,'blackwell.t.laree45@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (50,33,1,'dimitrovb@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (51,33,1,'dimitrovb20@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (52,42,1,'grantr7@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (53,120,1,'blackwell.josefa@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (54,169,1,'kathlynj@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL), + (55,169,1,'kjones@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (56,17,1,'aolsen@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (57,17,1,'alexiao17@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (58,174,1,'miguelzope@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (59,71,1,'mllerb@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), + (60,71,1,'bf.mller@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (61,56,1,'cooper.merrie@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (62,171,1,'sx.robertson@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (63,171,1,'robertson.santina5@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (64,97,1,'chowski.bernadette@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (65,29,1,'cruz.beula75@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (66,138,1,'tobyj@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (67,138,1,'tjacobs90@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (68,107,1,'estachowski@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (69,107,1,'chowski.g.esta16@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (70,167,1,'ivanov.errol42@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (71,167,1,'ivanov.errol@testing.info',0,0,0,0,NULL,NULL,NULL,NULL), + (72,27,1,'robertson.merrie@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (73,27,1,'robertsonm44@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (74,184,1,'cooper.teddy48@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (75,184,1,'teddycooper72@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL), + (76,102,1,'wagner.n.barry@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (77,102,1,'barryw56@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (78,96,1,'blackwella@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (79,106,1,'dazr@sample.org',1,0,0,0,NULL,NULL,NULL,NULL), + (80,106,1,'daz.rosario@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (81,86,1,'eleonorp@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (82,86,1,'eleonorparker61@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (83,24,1,'sbachman@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (84,189,1,'bachman.maria@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (85,176,1,'reynolds.iris@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL), + (86,176,1,'ireynolds85@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (87,151,1,'kandacecruz-reynolds@example.com',1,0,0,0,NULL,NULL,NULL,NULL), + (88,49,1,'carlosivanov25@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL), + (89,49,1,'carlosi64@example.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (90,200,1,'deforest-ivanov.lashawnda36@testing.info',1,0,0,0,NULL,NULL,NULL,NULL), + (91,125,1,'ivanov.sharyn@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (92,125,1,'sharyni93@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (93,55,1,'ivanov.p.russell30@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (94,55,1,'russelli@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (95,150,1,'prentice.h.allan58@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (96,150,1,'prenticea@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (97,34,1,'sonnyprentice32@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (98,34,1,'sonnyprentice47@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (99,183,1,'ivanov.a.kenny24@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (100,183,1,'ivanovk@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (101,193,1,'ivanova@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (102,44,1,'divanov@sample.info',1,0,0,0,NULL,NULL,NULL,NULL), + (103,44,1,'delanai@example.com',0,0,0,0,NULL,NULL,NULL,NULL), + (104,60,1,'louivanov85@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (105,60,1,'livanov@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (106,109,1,'lashawndaprentice31@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (107,109,1,'lashawndap@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (108,76,1,'prenticem4@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (109,76,1,'prenticem86@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (110,126,1,'troyp@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (111,126,1,'tprentice83@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (112,46,1,'miguels@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (113,74,1,'samuels.valene96@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (114,163,1,'kjensen-terry@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (115,162,1,'terry.brigette@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (116,162,1,'brigettet@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (117,21,1,'jc.wattson@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (118,14,1,'delanaw69@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (119,14,1,'wattson.delana@lol.org',0,0,0,0,NULL,NULL,NULL,NULL), + (120,170,1,'wattsonm@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (121,45,1,'estaw12@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), + (122,45,1,'estawattson@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (123,199,1,'mo.mller8@testing.org',1,0,0,0,NULL,NULL,NULL,NULL), + (124,199,1,'mllerm@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL), + (125,112,1,'mller.h.sherman73@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (126,79,1,'irvinmller41@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (127,79,1,'mlleri@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (128,48,1,'teddywilson@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (129,91,1,'rebekahj@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (130,91,1,'jameson.q.rebekah@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (131,104,1,'wilson-jameson.brittney@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (132,104,1,'bj.wilson-jameson@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (133,92,1,'maganwilson-jameson9@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (134,100,1,'justinawilson-deforest24@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (135,160,1,'alexiad24@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (136,198,1,'brentr@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), + (137,198,1,'reynoldsb42@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (138,6,1,'reynolds.magan75@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (139,15,1,'olsenb@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (140,137,1,'olsena@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (141,180,1,'cf.samson37@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (142,180,1,'cf.samson29@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (143,114,1,'darens@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (144,114,1,'darens48@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (145,32,1,'jl.samson-terry93@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (146,18,1,'andrewd35@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (147,18,1,'ae.daz94@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (148,90,1,'junkochowski28@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (149,39,1,'daz-chowskid16@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (150,121,1,'terrell.g.sherman70@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (151,121,1,'terrells@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (152,196,1,'terrell.barry@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (153,154,1,'vz.reynolds@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (154,61,1,'arlynereynolds@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (155,61,1,'reynoldsa@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (156,63,1,'sreynolds21@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (157,63,1,'sonnyreynolds@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (158,85,1,'mcreynolds.justina@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (159,85,1,'mcreynolds.justina@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (160,36,1,'yadav.j.lou79@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (161,36,1,'louyadav@testing.org',0,0,0,0,NULL,NULL,NULL,NULL), + (162,118,1,'ap.lee-yadav10@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (163,118,1,'lee-yadava5@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (164,103,3,'info@oregondevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL), + (165,187,2,'bterrell@oregondevelopment.org',0,0,0,0,NULL,NULL,NULL,NULL), + (166,135,3,'service@sacramentopartners.org',1,0,0,0,NULL,NULL,NULL,NULL), + (167,115,2,'clintdeforest@sacramentopartners.org',0,0,0,0,NULL,NULL,NULL,NULL), + (168,77,3,'contact@globalwellnesscenter.org',1,0,0,0,NULL,NULL,NULL,NULL), + (169,81,2,'smith.elina@globalwellnesscenter.org',1,0,0,0,NULL,NULL,NULL,NULL), + (170,22,3,'info@bostonacademy.org',1,0,0,0,NULL,NULL,NULL,NULL), + (171,33,2,'angelikaterrell45@bostonacademy.org',0,0,0,0,NULL,NULL,NULL,NULL), + (172,68,3,'contact@unitedagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL), + (173,85,2,'mcreynolds.justina@unitedagriculture.org',0,0,0,0,NULL,NULL,NULL,NULL), + (174,133,3,'feedback@progressivepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), + (175,72,2,'wagner.miguel@progressivepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), + (176,19,3,'info@creativesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL), + (177,129,2,'erikd10@creativesolutions.org',0,0,0,0,NULL,NULL,NULL,NULL), + (178,161,3,'info@progressivenetwork.org',1,0,0,0,NULL,NULL,NULL,NULL), + (179,69,3,'info@globalsportscenter.org',1,0,0,0,NULL,NULL,NULL,NULL), + (180,4,2,'smith.damaris@globalsportscenter.org',0,0,0,0,NULL,NULL,NULL,NULL), + (181,95,3,'info@ruralagriculturetrust.org',1,0,0,0,NULL,NULL,NULL,NULL), + (182,139,3,'sales@ruralinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL), + (183,197,2,'raygrant48@ruralinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL), + (184,7,3,'sales@hanovereducation.org',1,0,0,0,NULL,NULL,NULL,NULL), + (185,15,2,'juliannt81@hanovereducation.org',0,0,0,0,NULL,NULL,NULL,NULL), + (186,148,3,'contact@localtrust.org',1,0,0,0,NULL,NULL,NULL,NULL), + (187,96,2,'valeneb@localtrust.org',0,0,0,0,NULL,NULL,NULL,NULL), + (188,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL), + (189,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL), + (190,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL), + (191,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */; UNLOCK TABLES; @@ -3275,165 +3300,165 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, (60,'civicrm_financial_item',30,30,10.00), (61,'civicrm_contribution',31,31,5.00), (62,'civicrm_financial_item',31,31,5.00), - (63,'civicrm_contribution',32,32,100.00), - (64,'civicrm_financial_item',32,32,100.00), - (65,'civicrm_contribution',34,33,100.00), + (63,'civicrm_contribution',61,32,1200.00), + (64,'civicrm_financial_item',32,32,1200.00), + (65,'civicrm_contribution',38,33,100.00), (66,'civicrm_financial_item',33,33,100.00), - (67,'civicrm_contribution',36,34,100.00), + (67,'civicrm_contribution',41,34,100.00), (68,'civicrm_financial_item',34,34,100.00), - (69,'civicrm_contribution',38,35,100.00), + (69,'civicrm_contribution',43,35,100.00), (70,'civicrm_financial_item',35,35,100.00), - (71,'civicrm_contribution',40,36,100.00), + (71,'civicrm_contribution',34,36,100.00), (72,'civicrm_financial_item',36,36,100.00), - (73,'civicrm_contribution',41,37,100.00), - (74,'civicrm_financial_item',37,37,100.00), - (75,'civicrm_contribution',44,38,100.00), - (76,'civicrm_financial_item',38,38,100.00), - (77,'civicrm_contribution',46,39,100.00), + (73,'civicrm_contribution',52,37,50.00), + (74,'civicrm_financial_item',37,37,50.00), + (75,'civicrm_contribution',47,38,50.00), + (76,'civicrm_financial_item',38,38,50.00), + (77,'civicrm_contribution',36,39,100.00), (78,'civicrm_financial_item',39,39,100.00), - (79,'civicrm_contribution',48,40,100.00), - (80,'civicrm_financial_item',40,40,100.00), - (81,'civicrm_contribution',50,41,100.00), + (79,'civicrm_contribution',53,40,50.00), + (80,'civicrm_financial_item',40,40,50.00), + (81,'civicrm_contribution',39,41,100.00), (82,'civicrm_financial_item',41,41,100.00), - (83,'civicrm_contribution',51,42,100.00), + (83,'civicrm_contribution',32,42,100.00), (84,'civicrm_financial_item',42,42,100.00), - (85,'civicrm_contribution',52,43,100.00), - (86,'civicrm_financial_item',43,43,100.00), - (87,'civicrm_contribution',54,44,100.00), - (88,'civicrm_financial_item',44,44,100.00), - (89,'civicrm_contribution',58,45,100.00), + (85,'civicrm_contribution',59,43,50.00), + (86,'civicrm_financial_item',43,43,50.00), + (87,'civicrm_contribution',58,44,50.00), + (88,'civicrm_financial_item',44,44,50.00), + (89,'civicrm_contribution',45,45,100.00), (90,'civicrm_financial_item',45,45,100.00), - (91,'civicrm_contribution',60,46,100.00), + (91,'civicrm_contribution',35,46,100.00), (92,'civicrm_financial_item',46,46,100.00), - (93,'civicrm_contribution',61,47,100.00), - (94,'civicrm_financial_item',47,47,100.00), - (95,'civicrm_contribution',33,48,50.00), - (96,'civicrm_financial_item',48,48,50.00), - (97,'civicrm_contribution',35,49,50.00), + (93,'civicrm_contribution',54,47,50.00), + (94,'civicrm_financial_item',47,47,50.00), + (95,'civicrm_contribution',60,48,1200.00), + (96,'civicrm_financial_item',48,48,1200.00), + (97,'civicrm_contribution',57,49,50.00), (98,'civicrm_financial_item',49,49,50.00), - (99,'civicrm_contribution',37,50,50.00), - (100,'civicrm_financial_item',50,50,50.00), - (101,'civicrm_contribution',39,51,50.00), + (99,'civicrm_contribution',40,50,100.00), + (100,'civicrm_financial_item',50,50,100.00), + (101,'civicrm_contribution',49,51,50.00), (102,'civicrm_financial_item',51,51,50.00), - (103,'civicrm_contribution',43,52,50.00), - (104,'civicrm_financial_item',52,52,50.00), - (105,'civicrm_contribution',45,53,50.00), + (103,'civicrm_contribution',44,52,100.00), + (104,'civicrm_financial_item',52,52,100.00), + (105,'civicrm_contribution',48,53,50.00), (106,'civicrm_financial_item',53,53,50.00), - (107,'civicrm_contribution',47,54,50.00), + (107,'civicrm_contribution',55,54,50.00), (108,'civicrm_financial_item',54,54,50.00), - (109,'civicrm_contribution',49,55,50.00), - (110,'civicrm_financial_item',55,55,50.00), - (111,'civicrm_contribution',55,56,50.00), + (109,'civicrm_contribution',46,55,100.00), + (110,'civicrm_financial_item',55,55,100.00), + (111,'civicrm_contribution',51,56,50.00), (112,'civicrm_financial_item',56,56,50.00), - (113,'civicrm_contribution',56,57,50.00), - (114,'civicrm_financial_item',57,57,50.00), - (115,'civicrm_contribution',57,58,50.00), + (113,'civicrm_contribution',33,57,100.00), + (114,'civicrm_financial_item',57,57,100.00), + (115,'civicrm_contribution',50,58,50.00), (116,'civicrm_financial_item',58,58,50.00), - (117,'civicrm_contribution',59,59,50.00), - (118,'civicrm_financial_item',59,59,50.00), - (119,'civicrm_contribution',42,60,1200.00), - (120,'civicrm_financial_item',60,60,1200.00), - (121,'civicrm_contribution',53,61,1200.00), - (122,'civicrm_financial_item',61,61,1200.00), - (123,'civicrm_contribution',100,62,50.00), + (117,'civicrm_contribution',42,59,100.00), + (118,'civicrm_financial_item',59,59,100.00), + (119,'civicrm_contribution',37,60,100.00), + (120,'civicrm_financial_item',60,60,100.00), + (121,'civicrm_contribution',56,61,50.00), + (122,'civicrm_financial_item',61,61,50.00), + (123,'civicrm_contribution',85,62,50.00), (124,'civicrm_financial_item',62,62,50.00), - (125,'civicrm_contribution',75,63,50.00), + (125,'civicrm_contribution',73,63,50.00), (126,'civicrm_financial_item',63,63,50.00), - (127,'civicrm_contribution',94,64,50.00), + (127,'civicrm_contribution',75,64,50.00), (128,'civicrm_financial_item',64,64,50.00), - (129,'civicrm_contribution',77,65,50.00), + (129,'civicrm_contribution',110,65,50.00), (130,'civicrm_financial_item',65,65,50.00), - (131,'civicrm_contribution',74,66,50.00), + (131,'civicrm_contribution',72,66,50.00), (132,'civicrm_financial_item',66,66,50.00), - (133,'civicrm_contribution',72,67,50.00), + (133,'civicrm_contribution',105,67,50.00), (134,'civicrm_financial_item',67,67,50.00), - (135,'civicrm_contribution',78,68,50.00), + (135,'civicrm_contribution',95,68,50.00), (136,'civicrm_financial_item',68,68,50.00), (137,'civicrm_contribution',76,69,50.00), (138,'civicrm_financial_item',69,69,50.00), - (139,'civicrm_contribution',63,70,50.00), + (139,'civicrm_contribution',89,70,50.00), (140,'civicrm_financial_item',70,70,50.00), - (141,'civicrm_contribution',82,71,50.00), + (141,'civicrm_contribution',79,71,50.00), (142,'civicrm_financial_item',71,71,50.00), - (143,'civicrm_contribution',84,72,50.00), + (143,'civicrm_contribution',88,72,50.00), (144,'civicrm_financial_item',72,72,50.00), - (145,'civicrm_contribution',83,73,50.00), + (145,'civicrm_contribution',69,73,50.00), (146,'civicrm_financial_item',73,73,50.00), - (147,'civicrm_contribution',80,74,50.00), + (147,'civicrm_contribution',83,74,50.00), (148,'civicrm_financial_item',74,74,50.00), - (149,'civicrm_contribution',101,75,50.00), + (149,'civicrm_contribution',97,75,50.00), (150,'civicrm_financial_item',75,75,50.00), - (151,'civicrm_contribution',102,76,50.00), + (151,'civicrm_contribution',87,76,50.00), (152,'civicrm_financial_item',76,76,50.00), - (153,'civicrm_contribution',66,77,50.00), + (153,'civicrm_contribution',102,77,50.00), (154,'civicrm_financial_item',77,77,50.00), - (155,'civicrm_contribution',87,78,800.00), + (155,'civicrm_contribution',100,78,800.00), (156,'civicrm_financial_item',78,78,800.00), - (157,'civicrm_contribution',97,79,800.00), + (157,'civicrm_contribution',74,79,800.00), (158,'civicrm_financial_item',79,79,800.00), - (159,'civicrm_contribution',85,80,800.00), + (159,'civicrm_contribution',71,80,800.00), (160,'civicrm_financial_item',80,80,800.00), - (161,'civicrm_contribution',112,81,800.00), + (161,'civicrm_contribution',109,81,800.00), (162,'civicrm_financial_item',81,81,800.00), - (163,'civicrm_contribution',99,82,800.00), + (163,'civicrm_contribution',68,82,800.00), (164,'civicrm_financial_item',82,82,800.00), - (165,'civicrm_contribution',73,83,800.00), + (165,'civicrm_contribution',108,83,800.00), (166,'civicrm_financial_item',83,83,800.00), - (167,'civicrm_contribution',111,84,800.00), + (167,'civicrm_contribution',82,84,800.00), (168,'civicrm_financial_item',84,84,800.00), - (169,'civicrm_contribution',109,85,800.00), + (169,'civicrm_contribution',111,85,800.00), (170,'civicrm_financial_item',85,85,800.00), - (171,'civicrm_contribution',110,86,800.00), + (171,'civicrm_contribution',106,86,800.00), (172,'civicrm_financial_item',86,86,800.00), - (173,'civicrm_contribution',65,87,800.00), + (173,'civicrm_contribution',98,87,800.00), (174,'civicrm_financial_item',87,87,800.00), - (175,'civicrm_contribution',69,88,800.00), + (175,'civicrm_contribution',80,88,800.00), (176,'civicrm_financial_item',88,88,800.00), - (177,'civicrm_contribution',96,89,800.00), + (177,'civicrm_contribution',63,89,800.00), (178,'civicrm_financial_item',89,89,800.00), - (179,'civicrm_contribution',71,90,800.00), + (179,'civicrm_contribution',92,90,800.00), (180,'civicrm_financial_item',90,90,800.00), - (181,'civicrm_contribution',70,91,800.00), + (181,'civicrm_contribution',90,91,800.00), (182,'civicrm_financial_item',91,91,800.00), - (183,'civicrm_contribution',88,92,800.00), + (183,'civicrm_contribution',101,92,800.00), (184,'civicrm_financial_item',92,92,800.00), - (185,'civicrm_contribution',92,93,800.00), + (185,'civicrm_contribution',77,93,800.00), (186,'civicrm_financial_item',93,93,800.00), - (187,'civicrm_contribution',108,94,800.00), + (187,'civicrm_contribution',78,94,800.00), (188,'civicrm_financial_item',94,94,800.00), - (189,'civicrm_contribution',107,95,800.00), + (189,'civicrm_contribution',84,95,800.00), (190,'civicrm_financial_item',95,95,800.00), - (191,'civicrm_contribution',106,96,50.00), + (191,'civicrm_contribution',65,96,50.00), (192,'civicrm_financial_item',96,96,50.00), - (193,'civicrm_contribution',91,97,50.00), + (193,'civicrm_contribution',81,97,50.00), (194,'civicrm_financial_item',97,97,50.00), - (195,'civicrm_contribution',103,98,50.00), + (195,'civicrm_contribution',86,98,50.00), (196,'civicrm_financial_item',98,98,50.00), - (197,'civicrm_contribution',90,99,50.00), + (197,'civicrm_contribution',66,99,50.00), (198,'civicrm_financial_item',99,99,50.00), - (199,'civicrm_contribution',105,100,50.00), + (199,'civicrm_contribution',94,100,50.00), (200,'civicrm_financial_item',100,100,50.00), - (201,'civicrm_contribution',67,101,50.00), + (201,'civicrm_contribution',93,101,50.00), (202,'civicrm_financial_item',101,101,50.00), - (203,'civicrm_contribution',64,102,50.00), + (203,'civicrm_contribution',91,102,50.00), (204,'civicrm_financial_item',102,102,50.00), (205,'civicrm_contribution',104,103,50.00), (206,'civicrm_financial_item',103,103,50.00), - (207,'civicrm_contribution',98,104,50.00), + (207,'civicrm_contribution',64,104,50.00), (208,'civicrm_financial_item',104,104,50.00), - (209,'civicrm_contribution',89,105,50.00), + (209,'civicrm_contribution',70,105,50.00), (210,'civicrm_financial_item',105,105,50.00), - (211,'civicrm_contribution',79,106,50.00), + (211,'civicrm_contribution',112,106,50.00), (212,'civicrm_financial_item',106,106,50.00), - (213,'civicrm_contribution',86,107,50.00), + (213,'civicrm_contribution',99,107,50.00), (214,'civicrm_financial_item',107,107,50.00), - (215,'civicrm_contribution',68,108,50.00), + (215,'civicrm_contribution',96,108,50.00), (216,'civicrm_financial_item',108,108,50.00), - (217,'civicrm_contribution',93,109,50.00), + (217,'civicrm_contribution',67,109,50.00), (218,'civicrm_financial_item',109,109,50.00), - (219,'civicrm_contribution',81,110,50.00), + (219,'civicrm_contribution',107,110,50.00), (220,'civicrm_financial_item',110,110,50.00), - (221,'civicrm_contribution',95,111,50.00), + (221,'civicrm_contribution',103,111,50.00), (222,'civicrm_financial_item',111,111,50.00); /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -3445,123 +3470,126 @@ UNLOCK TABLES; LOCK TABLES `civicrm_entity_tag` WRITE; /*!40000 ALTER TABLE `civicrm_entity_tag` DISABLE KEYS */; INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES - (24,'civicrm_contact',2,4), - (23,'civicrm_contact',4,5), - (98,'civicrm_contact',11,5), - (67,'civicrm_contact',14,4), - (41,'civicrm_contact',15,4), - (42,'civicrm_contact',15,5), - (8,'civicrm_contact',18,3), - (27,'civicrm_contact',24,4), - (28,'civicrm_contact',24,5), - (84,'civicrm_contact',27,4), - (85,'civicrm_contact',27,5), - (88,'civicrm_contact',33,4), - (89,'civicrm_contact',33,5), - (79,'civicrm_contact',37,5), - (73,'civicrm_contact',38,5), - (36,'civicrm_contact',39,4), - (37,'civicrm_contact',39,5), - (97,'civicrm_contact',41,5), - (105,'civicrm_contact',42,4), - (106,'civicrm_contact',42,5), - (102,'civicrm_contact',45,4), - (103,'civicrm_contact',45,5), - (109,'civicrm_contact',46,4), - (39,'civicrm_contact',47,4), - (95,'civicrm_contact',48,4), - (96,'civicrm_contact',48,5), - (17,'civicrm_contact',49,5), - (21,'civicrm_contact',53,5), - (25,'civicrm_contact',54,4), - (26,'civicrm_contact',54,5), - (92,'civicrm_contact',56,4), - (104,'civicrm_contact',59,4), - (112,'civicrm_contact',62,4), - (71,'civicrm_contact',63,4), - (72,'civicrm_contact',63,5), - (55,'civicrm_contact',64,5), - (86,'civicrm_contact',67,5), - (33,'civicrm_contact',68,4), - (29,'civicrm_contact',69,4), - (30,'civicrm_contact',69,5), - (43,'civicrm_contact',70,5), - (1,'civicrm_contact',71,2), - (82,'civicrm_contact',72,4), - (83,'civicrm_contact',72,5), - (18,'civicrm_contact',81,4), - (19,'civicrm_contact',81,5), - (40,'civicrm_contact',82,4), - (66,'civicrm_contact',83,5), - (64,'civicrm_contact',85,5), - (9,'civicrm_contact',88,2), - (7,'civicrm_contact',90,2), - (3,'civicrm_contact',91,1), - (99,'civicrm_contact',93,4), - (100,'civicrm_contact',93,5), - (78,'civicrm_contact',98,5), - (116,'civicrm_contact',99,4), - (117,'civicrm_contact',99,5), - (80,'civicrm_contact',100,4), - (93,'civicrm_contact',105,4), - (94,'civicrm_contact',105,5), - (70,'civicrm_contact',107,5), - (2,'civicrm_contact',109,1), - (63,'civicrm_contact',110,4), - (58,'civicrm_contact',111,4), - (59,'civicrm_contact',111,5), - (57,'civicrm_contact',116,4), - (52,'civicrm_contact',118,4), - (11,'civicrm_contact',119,4), - (90,'civicrm_contact',120,4), - (91,'civicrm_contact',120,5), - (77,'civicrm_contact',121,5), - (38,'civicrm_contact',124,4), - (54,'civicrm_contact',125,5), - (4,'civicrm_contact',129,3), - (45,'civicrm_contact',130,5), - (110,'civicrm_contact',131,5), - (15,'civicrm_contact',132,4), - (16,'civicrm_contact',132,5), - (101,'civicrm_contact',134,5), - (107,'civicrm_contact',135,4), - (108,'civicrm_contact',135,5), - (46,'civicrm_contact',138,4), - (47,'civicrm_contact',138,5), - (12,'civicrm_contact',139,5), - (68,'civicrm_contact',140,5), - (31,'civicrm_contact',145,5), - (60,'civicrm_contact',147,4), - (61,'civicrm_contact',147,5), - (62,'civicrm_contact',148,4), - (111,'civicrm_contact',152,4), - (13,'civicrm_contact',156,4), - (14,'civicrm_contact',156,5), - (65,'civicrm_contact',157,4), - (87,'civicrm_contact',158,5), - (75,'civicrm_contact',159,4), - (76,'civicrm_contact',159,5), - (49,'civicrm_contact',161,5), - (32,'civicrm_contact',164,4), - (50,'civicrm_contact',165,4), - (51,'civicrm_contact',165,5), - (113,'civicrm_contact',166,4), - (44,'civicrm_contact',167,5), - (20,'civicrm_contact',169,4), - (10,'civicrm_contact',170,1), - (81,'civicrm_contact',173,5), - (114,'civicrm_contact',174,4), - (115,'civicrm_contact',174,5), - (56,'civicrm_contact',176,4), - (5,'civicrm_contact',177,1), - (34,'civicrm_contact',183,4), - (35,'civicrm_contact',183,5), - (69,'civicrm_contact',185,4), - (22,'civicrm_contact',190,4), - (74,'civicrm_contact',191,5), - (6,'civicrm_contact',194,2), - (48,'civicrm_contact',196,5), - (53,'civicrm_contact',200,4); + (111,'civicrm_contact',2,5), + (14,'civicrm_contact',4,4), + (13,'civicrm_contact',5,4), + (15,'civicrm_contact',9,4), + (16,'civicrm_contact',9,5), + (98,'civicrm_contact',13,5), + (99,'civicrm_contact',15,4), + (100,'civicrm_contact',15,5), + (107,'civicrm_contact',18,4), + (108,'civicrm_contact',18,5), + (6,'civicrm_contact',19,3), + (86,'civicrm_contact',21,4), + (87,'civicrm_contact',21,5), + (64,'civicrm_contact',24,4), + (65,'civicrm_contact',24,5), + (51,'civicrm_contact',29,4), + (11,'civicrm_contact',31,5), + (37,'civicrm_contact',33,4), + (38,'civicrm_contact',33,5), + (73,'civicrm_contact',34,4), + (12,'civicrm_contact',35,4), + (117,'civicrm_contact',36,4), + (118,'civicrm_contact',36,5), + (55,'civicrm_contact',37,4), + (45,'civicrm_contact',38,5), + (109,'civicrm_contact',39,4), + (110,'civicrm_contact',39,5), + (56,'civicrm_contact',40,4), + (76,'civicrm_contact',44,4), + (80,'civicrm_contact',46,4), + (115,'civicrm_contact',47,4), + (91,'civicrm_contact',48,4), + (92,'civicrm_contact',48,5), + (69,'civicrm_contact',49,5), + (3,'civicrm_contact',50,3), + (4,'civicrm_contact',59,2), + (114,'civicrm_contact',61,4), + (8,'civicrm_contact',64,1), + (7,'civicrm_contact',69,3), + (19,'civicrm_contact',70,5), + (48,'civicrm_contact',71,4), + (79,'civicrm_contact',76,5), + (2,'civicrm_contact',77,1), + (39,'civicrm_contact',80,5), + (46,'civicrm_contact',81,4), + (47,'civicrm_contact',81,5), + (20,'civicrm_contact',83,5), + (77,'civicrm_contact',84,4), + (78,'civicrm_contact',84,5), + (63,'civicrm_contact',86,5), + (24,'civicrm_contact',89,5), + (43,'civicrm_contact',93,4), + (44,'civicrm_contact',93,5), + (32,'civicrm_contact',94,5), + (60,'civicrm_contact',96,4), + (61,'civicrm_contact',96,5), + (101,'civicrm_contact',99,4), + (102,'civicrm_contact',99,5), + (23,'civicrm_contact',101,4), + (58,'civicrm_contact',102,4), + (59,'civicrm_contact',102,5), + (1,'civicrm_contact',103,1), + (93,'civicrm_contact',104,5), + (53,'civicrm_contact',107,5), + (94,'civicrm_contact',110,5), + (119,'civicrm_contact',111,4), + (120,'civicrm_contact',111,5), + (90,'civicrm_contact',112,4), + (105,'civicrm_contact',114,4), + (106,'civicrm_contact',114,5), + (26,'civicrm_contact',115,5), + (62,'civicrm_contact',119,4), + (40,'civicrm_contact',120,4), + (41,'civicrm_contact',120,5), + (9,'civicrm_contact',122,1), + (17,'civicrm_contact',123,4), + (18,'civicrm_contact',123,5), + (89,'civicrm_contact',124,4), + (70,'civicrm_contact',125,4), + (36,'civicrm_contact',128,4), + (42,'civicrm_contact',130,5), + (5,'civicrm_contact',133,2), + (83,'civicrm_contact',140,4), + (66,'civicrm_contact',141,4), + (67,'civicrm_contact',141,5), + (52,'civicrm_contact',145,5), + (81,'civicrm_contact',147,4), + (82,'civicrm_contact',147,5), + (10,'civicrm_contact',148,2), + (71,'civicrm_contact',150,4), + (72,'civicrm_contact',150,5), + (68,'civicrm_contact',151,4), + (113,'civicrm_contact',154,5), + (95,'civicrm_contact',160,4), + (84,'civicrm_contact',162,4), + (85,'civicrm_contact',162,5), + (54,'civicrm_contact',167,5), + (27,'civicrm_contact',168,4), + (28,'civicrm_contact',168,5), + (88,'civicrm_contact',170,4), + (49,'civicrm_contact',171,4), + (50,'civicrm_contact',171,5), + (29,'civicrm_contact',172,4), + (116,'civicrm_contact',175,5), + (33,'civicrm_contact',178,5), + (103,'civicrm_contact',180,4), + (104,'civicrm_contact',180,5), + (74,'civicrm_contact',183,4), + (75,'civicrm_contact',183,5), + (57,'civicrm_contact',184,5), + (31,'civicrm_contact',185,5), + (21,'civicrm_contact',186,4), + (22,'civicrm_contact',186,5), + (25,'civicrm_contact',194,4), + (112,'civicrm_contact',196,4), + (30,'civicrm_contact',197,4), + (96,'civicrm_contact',198,4), + (97,'civicrm_contact',198,5), + (34,'civicrm_contact',201,4), + (35,'civicrm_contact',201,5); /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -3572,9 +3600,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_event` WRITE; /*!40000 ALTER TABLE `civicrm_event` DISABLE KEYS */; INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES - (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-03-19 17:00:00','2024-03-21 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','

Thank you for your support. Your contribution will help us build even better tools.

Please tell your friends and colleagues about this wonderful event.

','

Back to CiviCRM Home Page

',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), - (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-09-18 12:00:00','2023-09-18 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','

Thank you for your support. Your participation will help build new parks.

Please tell your friends and colleagues about the concert.

','

Back to CiviCRM Home Page

',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), - (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-04-19 07:00:00','2024-04-22 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','A Soccer Youth Event','Review and Confirm Your Registration Information','','A Soccer Youth Event',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','

Thank you for your support. Your participation will help save thousands of acres of rainforest.

','

Back to CiviCRM Home Page

',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-04-19 17:00:00','2024-04-21 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','

Thank you for your support. Your contribution will help us build even better tools.

Please tell your friends and colleagues about this wonderful event.

','

Back to CiviCRM Home Page

',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-10-18 12:00:00','2023-10-18 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','

Thank you for your support. Your participation will help build new parks.

Please tell your friends and colleagues about the concert.

','

Back to CiviCRM Home Page

',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-05-19 07:00:00','2024-05-22 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','A Soccer Youth Event','Review and Confirm Your Registration Information','','A Soccer Youth Event',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','

Thank you for your support. Your participation will help save thousands of acres of rainforest.

','

Back to CiviCRM Home Page

',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0); @@ -3661,117 +3689,117 @@ UNLOCK TABLES; LOCK TABLES `civicrm_financial_item` WRITE; /*!40000 ALTER TABLE `civicrm_financial_item` DISABLE KEYS */; INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES - (1,'2023-09-19 09:28:00','2013-09-19 09:27:59',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1), - (2,'2023-09-19 09:28:00','2021-06-19 09:27:59',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2), - (3,'2023-09-19 09:28:00','2017-08-24 20:27:59',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3), - (4,'2023-09-19 09:28:00','2021-06-19 09:27:59',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4), - (5,'2023-09-19 09:28:00','2021-06-19 09:27:59',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5), - (6,'2023-09-19 09:28:00','2023-06-26 08:45:59',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6), - (7,'2023-09-19 09:28:00','2023-09-17 09:27:59',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7), - (8,'2023-09-19 09:28:00','2023-01-25 17:38:59',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8), - (9,'2023-09-19 09:28:00','2022-10-19 09:27:59',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9), - (10,'2023-09-19 09:28:00','2019-04-26 11:27:59',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10), - (11,'2023-09-19 09:28:00','2023-09-18 05:27:59',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11), - (12,'2023-09-19 09:28:00','2022-06-18 22:54:39',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12), - (13,'2023-09-19 09:28:00','2023-06-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13), - (14,'2023-09-19 09:28:00','2023-07-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14), - (15,'2023-09-19 09:28:00','2022-06-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15), - (16,'2023-09-19 09:28:00','2022-07-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16), - (17,'2023-09-19 09:28:00','2022-08-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17), - (18,'2023-09-19 09:28:00','2022-09-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18), - (19,'2023-09-19 09:28:00','2022-10-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19), - (20,'2023-09-19 09:28:00','2022-11-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20), - (21,'2023-09-19 09:28:00','2022-12-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21), - (22,'2023-09-19 09:28:00','2023-01-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22), - (23,'2023-09-19 09:28:00','2023-02-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23), - (24,'2023-09-19 09:28:00','2023-03-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24), - (25,'2023-09-19 09:28:00','2023-04-19 09:27:59',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25), - (26,'2023-09-19 09:28:00','2023-01-19 09:27:59',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26), - (27,'2023-09-19 09:28:01','2023-02-19 09:27:59',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27), - (28,'2023-09-19 09:28:01','2023-03-19 09:27:59',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28), - (29,'2023-09-19 09:28:01','2023-04-19 09:27:59',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29), - (30,'2023-09-19 09:28:01','2023-05-19 09:27:59',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30), - (31,'2023-09-19 09:28:01','2023-08-19 09:27:59',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31), - (32,'2023-09-19 09:28:01','2023-09-19 09:27:59',63,'General',100.00,'USD',2,1,'civicrm_line_item',32), - (33,'2023-09-19 09:28:01','2023-09-19 09:27:59',175,'General',100.00,'USD',2,1,'civicrm_line_item',33), - (34,'2023-09-19 09:28:01','2023-09-19 09:27:59',132,'General',100.00,'USD',2,1,'civicrm_line_item',34), - (35,'2023-09-19 09:28:01','2023-09-19 09:27:59',34,'General',100.00,'USD',2,1,'civicrm_line_item',35), - (36,'2023-09-19 09:28:01','2023-09-19 09:27:59',156,'General',100.00,'USD',2,1,'civicrm_line_item',36), - (37,'2023-09-19 09:28:01','2023-09-19 09:27:59',36,'General',100.00,'USD',2,1,'civicrm_line_item',37), - (38,'2023-09-19 09:28:01','2023-09-19 09:27:59',103,'General',100.00,'USD',2,1,'civicrm_line_item',38), - (39,'2023-09-19 09:28:01','2023-09-19 09:27:59',117,'General',100.00,'USD',2,1,'civicrm_line_item',39), - (40,'2023-09-19 09:28:01','2023-09-19 09:27:59',151,'General',100.00,'USD',2,1,'civicrm_line_item',40), - (41,'2023-09-19 09:28:01','2023-09-19 09:27:59',53,'General',100.00,'USD',2,1,'civicrm_line_item',41), - (42,'2023-09-19 09:28:01','2023-09-19 09:27:59',13,'General',100.00,'USD',2,1,'civicrm_line_item',42), - (43,'2023-09-19 09:28:01','2023-09-19 09:27:59',142,'General',100.00,'USD',2,1,'civicrm_line_item',43), - (44,'2023-09-19 09:28:01','2023-09-19 09:27:59',160,'General',100.00,'USD',2,1,'civicrm_line_item',44), - (45,'2023-09-19 09:28:01','2023-09-19 09:27:59',84,'General',100.00,'USD',2,1,'civicrm_line_item',45), - (46,'2023-09-19 09:28:01','2023-09-19 09:27:59',110,'General',100.00,'USD',2,1,'civicrm_line_item',46), - (47,'2023-09-19 09:28:01','2023-09-19 09:27:59',141,'General',100.00,'USD',2,1,'civicrm_line_item',47), - (48,'2023-09-19 09:28:01','2023-09-19 09:27:59',143,'Student',50.00,'USD',2,1,'civicrm_line_item',48), - (49,'2023-09-19 09:28:01','2023-09-19 09:27:59',183,'Student',50.00,'USD',2,1,'civicrm_line_item',49), - (50,'2023-09-19 09:28:01','2023-09-19 09:27:59',120,'Student',50.00,'USD',2,1,'civicrm_line_item',50), - (51,'2023-09-19 09:28:01','2023-09-19 09:27:59',55,'Student',50.00,'USD',2,1,'civicrm_line_item',51), - (52,'2023-09-19 09:28:01','2023-09-19 09:27:59',201,'Student',50.00,'USD',2,1,'civicrm_line_item',52), - (53,'2023-09-19 09:28:01','2023-09-19 09:27:59',113,'Student',50.00,'USD',2,1,'civicrm_line_item',53), - (54,'2023-09-19 09:28:01','2023-09-19 09:27:59',166,'Student',50.00,'USD',2,1,'civicrm_line_item',54), - (55,'2023-09-19 09:28:01','2023-09-19 09:27:59',138,'Student',50.00,'USD',2,1,'civicrm_line_item',55), - (56,'2023-09-19 09:28:01','2023-09-19 09:27:59',199,'Student',50.00,'USD',2,1,'civicrm_line_item',56), - (57,'2023-09-19 09:28:01','2023-09-19 09:27:59',150,'Student',50.00,'USD',2,1,'civicrm_line_item',57), - (58,'2023-09-19 09:28:01','2023-09-19 09:27:59',195,'Student',50.00,'USD',2,1,'civicrm_line_item',58), - (59,'2023-09-19 09:28:01','2023-09-19 09:27:59',134,'Student',50.00,'USD',2,1,'civicrm_line_item',59), - (60,'2023-09-19 09:28:01','2023-09-19 09:27:59',5,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60), - (61,'2023-09-19 09:28:01','2023-09-19 09:27:59',82,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61), - (62,'2023-09-19 09:28:01','2023-09-19 09:28:00',142,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97), - (63,'2023-09-19 09:28:01','2023-09-19 09:28:00',48,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98), - (64,'2023-09-19 09:28:01','2023-09-19 09:28:00',115,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99), - (65,'2023-09-19 09:28:01','2023-09-19 09:28:00',54,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100), - (66,'2023-09-19 09:28:01','2023-09-19 09:28:00',41,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101), - (67,'2023-09-19 09:28:01','2023-09-19 09:28:00',34,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102), - (68,'2023-09-19 09:28:01','2023-09-19 09:28:00',55,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103), - (69,'2023-09-19 09:28:01','2023-09-19 09:28:00',53,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104), - (70,'2023-09-19 09:28:01','2023-09-19 09:28:00',6,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105), - (71,'2023-09-19 09:28:01','2023-09-19 09:28:00',66,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106), - (72,'2023-09-19 09:28:02','2023-09-19 09:28:00',70,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107), - (73,'2023-09-19 09:28:02','2023-09-19 09:28:00',68,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108), - (74,'2023-09-19 09:28:02','2023-09-19 09:28:00',60,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109), - (75,'2023-09-19 09:28:02','2023-09-19 09:28:00',148,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110), - (76,'2023-09-19 09:28:02','2023-09-19 09:28:00',150,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111), - (77,'2023-09-19 09:28:02','2023-09-19 09:28:00',14,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112), - (78,'2023-09-19 09:28:02','2023-09-19 09:28:00',79,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63), - (79,'2023-09-19 09:28:02','2023-09-19 09:28:00',138,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64), - (80,'2023-09-19 09:28:02','2023-09-19 09:28:00',71,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65), - (81,'2023-09-19 09:28:02','2023-09-19 09:28:00',201,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66), - (82,'2023-09-19 09:28:02','2023-09-19 09:28:00',140,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67), - (83,'2023-09-19 09:28:02','2023-09-19 09:28:00',39,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68), - (84,'2023-09-19 09:28:02','2023-09-19 09:28:00',191,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69), - (85,'2023-09-19 09:28:02','2023-09-19 09:28:00',181,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70), - (86,'2023-09-19 09:28:02','2023-09-19 09:28:00',186,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71), - (87,'2023-09-19 09:28:02','2023-09-19 09:28:00',10,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72), - (88,'2023-09-19 09:28:02','2023-09-19 09:28:00',23,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73), - (89,'2023-09-19 09:28:02','2023-09-19 09:28:00',137,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74), - (90,'2023-09-19 09:28:02','2023-09-19 09:28:00',27,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75), - (91,'2023-09-19 09:28:02','2023-09-19 09:28:00',25,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76), - (92,'2023-09-19 09:28:02','2023-09-19 09:28:00',84,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77), - (93,'2023-09-19 09:28:02','2023-09-19 09:28:00',111,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78), - (94,'2023-09-19 09:28:02','2023-09-19 09:28:00',175,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79), - (95,'2023-09-19 09:28:02','2023-09-19 09:28:00',172,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80), - (96,'2023-09-19 09:28:02','2023-09-19 09:28:00',165,'Single',50.00,'USD',4,1,'civicrm_line_item',81), - (97,'2023-09-19 09:28:02','2023-09-19 09:28:00',106,'Single',50.00,'USD',4,1,'civicrm_line_item',82), - (98,'2023-09-19 09:28:02','2023-09-19 09:28:00',155,'Single',50.00,'USD',4,1,'civicrm_line_item',83), - (99,'2023-09-19 09:28:02','2023-09-19 09:28:00',90,'Single',50.00,'USD',4,1,'civicrm_line_item',84), - (100,'2023-09-19 09:28:02','2023-09-19 09:28:00',161,'Single',50.00,'USD',4,1,'civicrm_line_item',85), - (101,'2023-09-19 09:28:02','2023-09-19 09:28:00',16,'Single',50.00,'USD',4,1,'civicrm_line_item',86), - (102,'2023-09-19 09:28:02','2023-09-19 09:28:00',8,'Single',50.00,'USD',4,1,'civicrm_line_item',87), - (103,'2023-09-19 09:28:02','2023-09-19 09:28:00',158,'Single',50.00,'USD',4,1,'civicrm_line_item',88), - (104,'2023-09-19 09:28:02','2023-09-19 09:28:00',139,'Single',50.00,'USD',4,1,'civicrm_line_item',89), - (105,'2023-09-19 09:28:02','2023-09-19 09:28:00',87,'Single',50.00,'USD',4,1,'civicrm_line_item',90), - (106,'2023-09-19 09:28:02','2023-09-19 09:28:00',56,'Single',50.00,'USD',4,1,'civicrm_line_item',91), - (107,'2023-09-19 09:28:02','2023-09-19 09:28:00',72,'Single',50.00,'USD',4,1,'civicrm_line_item',92), - (108,'2023-09-19 09:28:02','2023-09-19 09:28:00',20,'Single',50.00,'USD',4,1,'civicrm_line_item',93), - (109,'2023-09-19 09:28:02','2023-09-19 09:28:00',114,'Single',50.00,'USD',4,1,'civicrm_line_item',94), - (110,'2023-09-19 09:28:02','2023-09-19 09:28:00',64,'Single',50.00,'USD',4,1,'civicrm_line_item',95), - (111,'2023-09-19 09:28:02','2023-09-19 09:28:00',131,'Single',50.00,'USD',4,1,'civicrm_line_item',96); + (1,'2023-10-19 21:22:30','2013-10-19 14:22:30',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1), + (2,'2023-10-19 21:22:30','2021-07-19 14:22:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2), + (3,'2023-10-19 21:22:30','2017-09-24 01:22:30',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3), + (4,'2023-10-19 21:22:30','2021-07-19 14:22:30',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4), + (5,'2023-10-19 21:22:30','2021-07-19 14:22:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5), + (6,'2023-10-19 21:22:30','2023-07-26 13:40:30',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6), + (7,'2023-10-19 21:22:30','2023-10-17 14:22:30',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7), + (8,'2023-10-19 21:22:30','2023-02-24 22:33:30',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8), + (9,'2023-10-19 21:22:30','2022-11-19 14:22:30',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9), + (10,'2023-10-19 21:22:30','2019-05-27 16:22:30',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10), + (11,'2023-10-19 21:22:30','2023-10-18 10:22:30',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11), + (12,'2023-10-19 21:22:30','2022-07-19 03:49:10',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12), + (13,'2023-10-19 21:22:30','2023-07-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13), + (14,'2023-10-19 21:22:30','2023-08-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14), + (15,'2023-10-19 21:22:30','2022-07-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15), + (16,'2023-10-19 21:22:30','2022-08-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16), + (17,'2023-10-19 21:22:30','2022-09-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17), + (18,'2023-10-19 21:22:30','2022-10-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18), + (19,'2023-10-19 21:22:30','2022-11-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19), + (20,'2023-10-19 21:22:30','2022-12-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20), + (21,'2023-10-19 21:22:30','2023-01-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21), + (22,'2023-10-19 21:22:30','2023-02-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22), + (23,'2023-10-19 21:22:30','2023-03-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23), + (24,'2023-10-19 21:22:30','2023-04-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24), + (25,'2023-10-19 21:22:30','2023-05-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25), + (26,'2023-10-19 21:22:30','2023-02-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26), + (27,'2023-10-19 21:22:30','2023-03-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27), + (28,'2023-10-19 21:22:30','2023-04-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28), + (29,'2023-10-19 21:22:30','2023-05-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29), + (30,'2023-10-19 21:22:30','2023-06-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30), + (31,'2023-10-19 21:22:30','2023-09-19 14:22:30',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31), + (32,'2023-10-19 21:22:30','2023-10-19 14:22:30',5,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61), + (33,'2023-10-19 21:22:30','2023-10-19 14:22:30',8,'General',100.00,'USD',2,1,'civicrm_line_item',38), + (34,'2023-10-19 21:22:30','2023-10-19 14:22:30',17,'General',100.00,'USD',2,1,'civicrm_line_item',41), + (35,'2023-10-19 21:22:30','2023-10-19 14:22:30',28,'General',100.00,'USD',2,1,'civicrm_line_item',43), + (36,'2023-10-19 21:22:30','2023-10-19 14:22:30',36,'General',100.00,'USD',2,1,'civicrm_line_item',34), + (37,'2023-10-19 21:22:30','2023-10-19 14:22:30',39,'Student',50.00,'USD',2,1,'civicrm_line_item',52), + (38,'2023-10-19 21:22:30','2023-10-19 14:22:30',47,'Student',50.00,'USD',2,1,'civicrm_line_item',47), + (39,'2023-10-19 21:22:30','2023-10-19 14:22:30',48,'General',100.00,'USD',2,1,'civicrm_line_item',36), + (40,'2023-10-19 21:22:30','2023-10-19 14:22:30',49,'Student',50.00,'USD',2,1,'civicrm_line_item',53), + (41,'2023-10-19 21:22:30','2023-10-19 14:22:30',54,'General',100.00,'USD',2,1,'civicrm_line_item',39), + (42,'2023-10-19 21:22:30','2023-10-19 14:22:30',55,'General',100.00,'USD',2,1,'civicrm_line_item',32), + (43,'2023-10-19 21:22:30','2023-10-19 14:22:30',66,'Student',50.00,'USD',2,1,'civicrm_line_item',59), + (44,'2023-10-19 21:22:30','2023-10-19 14:22:30',78,'Student',50.00,'USD',2,1,'civicrm_line_item',58), + (45,'2023-10-19 21:22:30','2023-10-19 14:22:30',86,'General',100.00,'USD',2,1,'civicrm_line_item',45), + (46,'2023-10-19 21:22:30','2023-10-19 14:22:30',87,'General',100.00,'USD',2,1,'civicrm_line_item',35), + (47,'2023-10-19 21:22:30','2023-10-19 14:22:30',92,'Student',50.00,'USD',2,1,'civicrm_line_item',54), + (48,'2023-10-19 21:22:30','2023-10-19 14:22:30',93,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60), + (49,'2023-10-19 21:22:30','2023-10-19 14:22:30',100,'Student',50.00,'USD',2,1,'civicrm_line_item',57), + (50,'2023-10-19 21:22:30','2023-10-19 14:22:30',106,'General',100.00,'USD',2,1,'civicrm_line_item',40), + (51,'2023-10-19 21:22:30','2023-10-19 14:22:30',113,'Student',50.00,'USD',2,1,'civicrm_line_item',49), + (52,'2023-10-19 21:22:30','2023-10-19 14:22:30',117,'General',100.00,'USD',2,1,'civicrm_line_item',44), + (53,'2023-10-19 21:22:30','2023-10-19 14:22:30',126,'Student',50.00,'USD',2,1,'civicrm_line_item',48), + (54,'2023-10-19 21:22:30','2023-10-19 14:22:30',136,'Student',50.00,'USD',2,1,'civicrm_line_item',55), + (55,'2023-10-19 21:22:30','2023-10-19 14:22:30',149,'General',100.00,'USD',2,1,'civicrm_line_item',46), + (56,'2023-10-19 21:22:30','2023-10-19 14:22:30',164,'Student',50.00,'USD',2,1,'civicrm_line_item',51), + (57,'2023-10-19 21:22:30','2023-10-19 14:22:30',168,'General',100.00,'USD',2,1,'civicrm_line_item',33), + (58,'2023-10-19 21:22:30','2023-10-19 14:22:30',169,'Student',50.00,'USD',2,1,'civicrm_line_item',50), + (59,'2023-10-19 21:22:30','2023-10-19 14:22:30',175,'General',100.00,'USD',2,1,'civicrm_line_item',42), + (60,'2023-10-19 21:22:30','2023-10-19 14:22:30',180,'General',100.00,'USD',2,1,'civicrm_line_item',37), + (61,'2023-10-19 21:22:30','2023-10-19 14:22:30',187,'Student',50.00,'USD',2,1,'civicrm_line_item',56), + (62,'2023-10-19 21:22:30','2023-10-19 14:22:30',92,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97), + (63,'2023-10-19 21:22:30','2023-10-19 14:22:30',36,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98), + (64,'2023-10-19 21:22:30','2023-10-19 14:22:30',41,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99), + (65,'2023-10-19 21:22:30','2023-10-19 14:22:30',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100), + (66,'2023-10-19 21:22:30','2023-10-19 14:22:30',30,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101), + (67,'2023-10-19 21:22:30','2023-10-19 14:22:30',179,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102), + (68,'2023-10-19 21:22:30','2023-10-19 14:22:30',144,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103), + (69,'2023-10-19 21:22:30','2023-10-19 14:22:30',45,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104), + (70,'2023-10-19 21:22:30','2023-10-19 14:22:30',101,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105), + (71,'2023-10-19 21:22:30','2023-10-19 14:22:30',73,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106), + (72,'2023-10-19 21:22:30','2023-10-19 14:22:30',97,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107), + (73,'2023-10-19 21:22:30','2023-10-19 14:22:30',17,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108), + (74,'2023-10-19 21:22:30','2023-10-19 14:22:30',84,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109), + (75,'2023-10-19 21:22:30','2023-10-19 14:22:30',156,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110), + (76,'2023-10-19 21:22:30','2023-10-19 14:22:30',96,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111), + (77,'2023-10-19 21:22:30','2023-10-19 14:22:30',172,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112), + (78,'2023-10-19 21:22:30','2023-10-19 14:22:30',160,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63), + (79,'2023-10-19 21:22:30','2023-10-19 14:22:30',40,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64), + (80,'2023-10-19 21:22:30','2023-10-19 14:22:30',23,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65), + (81,'2023-10-19 21:22:30','2023-10-19 14:22:30',192,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66), + (82,'2023-10-19 21:22:30','2023-10-19 14:22:30',16,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67), + (83,'2023-10-19 21:22:30','2023-10-19 14:22:30',189,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68), + (84,'2023-10-19 21:22:30','2023-10-19 14:22:30',80,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69), + (85,'2023-10-19 21:22:30','2023-10-19 14:22:30',196,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70), + (86,'2023-10-19 21:22:30','2023-10-19 14:22:30',182,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71), + (87,'2023-10-19 21:22:30','2023-10-19 14:22:30',158,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72), + (88,'2023-10-19 21:22:30','2023-10-19 14:22:30',76,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73), + (89,'2023-10-19 21:22:30','2023-10-19 14:22:30',6,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74), + (90,'2023-10-19 21:22:30','2023-10-19 14:22:30',127,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75), + (91,'2023-10-19 21:22:30','2023-10-19 14:22:30',117,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76), + (92,'2023-10-19 21:22:30','2023-10-19 14:22:30',163,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77), + (93,'2023-10-19 21:22:30','2023-10-19 14:22:30',57,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78), + (94,'2023-10-19 21:22:30','2023-10-19 14:22:30',69,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79), + (95,'2023-10-19 21:22:30','2023-10-19 14:22:30',88,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80), + (96,'2023-10-19 21:22:30','2023-10-19 14:22:30',10,'Single',50.00,'USD',4,1,'civicrm_line_item',81), + (97,'2023-10-19 21:22:30','2023-10-19 14:22:30',77,'Single',50.00,'USD',4,1,'civicrm_line_item',82), + (98,'2023-10-19 21:22:30','2023-10-19 14:22:30',94,'Single',50.00,'USD',4,1,'civicrm_line_item',83), + (99,'2023-10-19 21:22:30','2023-10-19 14:22:30',13,'Single',50.00,'USD',4,1,'civicrm_line_item',84), + (100,'2023-10-19 21:22:30','2023-10-19 14:22:30',135,'Single',50.00,'USD',4,1,'civicrm_line_item',85), + (101,'2023-10-19 21:22:30','2023-10-19 14:22:30',132,'Single',50.00,'USD',4,1,'civicrm_line_item',86), + (102,'2023-10-19 21:22:30','2023-10-19 14:22:30',123,'Single',50.00,'USD',4,1,'civicrm_line_item',87), + (103,'2023-10-19 21:22:30','2023-10-19 14:22:30',178,'Single',50.00,'USD',4,1,'civicrm_line_item',88), + (104,'2023-10-19 21:22:30','2023-10-19 14:22:30',8,'Single',50.00,'USD',4,1,'civicrm_line_item',89), + (105,'2023-10-19 21:22:30','2023-10-19 14:22:30',19,'Single',50.00,'USD',4,1,'civicrm_line_item',90), + (106,'2023-10-19 21:22:30','2023-10-19 14:22:30',197,'Single',50.00,'USD',4,1,'civicrm_line_item',91), + (107,'2023-10-19 21:22:30','2023-10-19 14:22:30',159,'Single',50.00,'USD',4,1,'civicrm_line_item',92), + (108,'2023-10-19 21:22:30','2023-10-19 14:22:30',154,'Single',50.00,'USD',4,1,'civicrm_line_item',93), + (109,'2023-10-19 21:22:30','2023-10-19 14:22:30',14,'Single',50.00,'USD',4,1,'civicrm_line_item',94), + (110,'2023-10-19 21:22:30','2023-10-19 14:22:30',184,'Single',50.00,'USD',4,1,'civicrm_line_item',95), + (111,'2023-10-19 21:22:30','2023-10-19 14:22:30',175,'Single',50.00,'USD',4,1,'civicrm_line_item',96); /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */; UNLOCK TABLES; @@ -3782,117 +3810,117 @@ UNLOCK TABLES; LOCK TABLES `civicrm_financial_trxn` WRITE; /*!40000 ALTER TABLE `civicrm_financial_trxn` DISABLE KEYS */; INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`, `order_reference`) VALUES - (1,NULL,6,'2013-09-19 09:27:59',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL), - (2,NULL,6,'2021-06-19 09:27:59',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (3,NULL,6,'2017-08-24 20:27:59',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL), - (4,NULL,6,'2021-06-19 09:27:59',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL), - (5,NULL,6,'2021-06-19 09:27:59',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (6,NULL,6,'2023-06-26 08:45:59',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL), - (7,NULL,6,'2023-09-17 09:27:59',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL), - (8,NULL,6,'2023-01-25 17:38:59',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (9,NULL,6,'2022-10-19 09:27:59',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (10,NULL,6,'2019-04-26 11:27:59',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (11,NULL,6,'2023-09-18 05:27:59',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (12,NULL,6,'2022-06-18 22:54:39',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (13,NULL,6,'2023-06-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (14,NULL,6,'2023-07-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (15,NULL,6,'2022-06-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (16,NULL,6,'2022-07-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (17,NULL,6,'2022-08-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (18,NULL,6,'2022-09-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (19,NULL,6,'2022-10-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (20,NULL,6,'2022-11-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (21,NULL,6,'2022-12-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (22,NULL,6,'2023-01-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (23,NULL,6,'2023-02-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (24,NULL,6,'2023-03-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (25,NULL,6,'2023-04-19 09:27:59',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (26,NULL,6,'2023-01-19 09:27:59',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (27,NULL,6,'2023-02-19 09:27:59',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (28,NULL,6,'2023-03-19 09:27:59',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (29,NULL,6,'2023-04-19 09:27:59',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (30,NULL,6,'2023-05-19 09:27:59',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (31,NULL,6,'2023-08-19 09:27:59',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (32,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'cfea93a436d4fbe9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (33,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'1c778bb09cc1b392',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (34,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'a97d1d39888ccdf7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (35,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'d00b9b024591f172',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (36,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'e27e9abef81b3a9a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (37,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'78fce18dc342cfff',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (38,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'433e02a0457d2d4c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (39,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'26bb8d3b362fe332',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (40,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'90a3aae330d6b5f4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (41,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'b06db265d02e6e62',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (42,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'1b36181a5963f3f7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (43,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'af495fd984da9b16',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (44,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'929581478352902b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (45,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'3dd2d7853eae4107',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (46,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'05b74d70c1c86d49',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (47,NULL,6,'2023-09-19 09:27:59',100.00,NULL,NULL,'USD',1,'6879ccb0b2815b7f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (48,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'13d53c9adb8b3db7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (49,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'5061100fd255b04e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (50,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'0b606d2299191135',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (51,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'3c11a282f98bbad4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (52,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'a9d6a1f3202a8731',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (53,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'07d1d5cc82c9a25c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (54,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'eb9810716534d9a6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (55,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'0fe647544107c77b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (56,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'b343dead88529b7a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (57,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'b11b56e51fc2ddfe',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (58,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'fc2ef1f2cfb8e91f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (59,NULL,6,'2023-09-19 09:27:59',50.00,NULL,NULL,'USD',1,'e0e697bd746e79e0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (60,NULL,6,'2023-09-19 09:27:59',1200.00,NULL,NULL,'USD',1,'7cfa16ac3dca11de',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (61,NULL,6,'2023-09-19 09:27:59',1200.00,NULL,NULL,'USD',1,'bb3900396ec2cc3f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (62,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'c3477cff3394b4e6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (63,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'05fb3f715ffa1e5d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (64,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'99cd9e88b259c4bd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (65,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'ddb9abe2a9c41d16',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (66,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'d3f52e4f0e21b5d9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (67,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'6d80d47b3ece00d7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (68,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'2ae96ad5c89c888a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (69,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'fd733abe19c3a112',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (70,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'f2dd8909940a5d72',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (71,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'b359ff175f484b30',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (72,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'2cf7b0d8beda636b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (73,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'f5c17811317fa017',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (74,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'60610e3e3b0b0ee3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (75,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'558accfaf04974d1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (76,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'30e05dbd3f24eea6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (77,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'b49ac70aa0a05c8e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (78,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'d02bef7f783dd71f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (79,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'ca7e5e869f9800c0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (80,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'7c926dcf8c50cc2f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (81,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'a9976c41bdeacd5d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (82,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'9e976a8b4799f98f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (83,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'a3a86830172704ab',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (84,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'311c4f84be113522',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (85,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'f87fefd3f271712a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (86,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'ff35874007cb040b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (87,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'3213addd93548fc3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (88,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'c7e695a2fdc0d029',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (89,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'5c7218dc9ae21989',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (90,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'c23d2dfc4c73dcda',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (91,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'d701564eb8a64ea3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (92,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'3767ecc6782624e3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (93,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'916dac78058ad859',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (94,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'f10e94149b33f53a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (95,NULL,6,'2023-09-19 09:28:00',800.00,NULL,NULL,'USD',1,'75e3e53fd98caa9a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (96,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'8b47d1b4c07c4e1c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (97,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'be010a6cf445b7c7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (98,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'8c874d815e3ca2ec',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (99,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'b1e390b4ea32eed7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (100,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'8f50182f139641bf',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (101,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'5c25dcc76d76e6a7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (102,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'3509bb260398b48d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (103,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'3843aa22f6d05be2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (104,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'cb20d731fb68c5fc',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (105,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'3f55f86d29dfd7d3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (106,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'a90305709d035a75',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (107,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'7ef7979c2715fd68',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (108,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'3950d41c6d687022',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (109,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'69552b597f214131',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (110,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'9ccbae1575a15acb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (111,NULL,6,'2023-09-19 09:28:00',50.00,NULL,NULL,'USD',1,'29f4aec3f6f7f8fd',NULL,1,NULL,1,NULL,NULL,NULL,NULL); + (1,NULL,6,'2013-10-19 14:22:30',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL), + (2,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (3,NULL,6,'2017-09-24 01:22:30',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL), + (4,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL), + (5,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (6,NULL,6,'2023-07-26 13:40:30',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL), + (7,NULL,6,'2023-10-17 14:22:30',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL), + (8,NULL,6,'2023-02-24 22:33:30',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (9,NULL,6,'2022-11-19 14:22:30',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (10,NULL,6,'2019-05-27 16:22:30',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (11,NULL,6,'2023-10-18 10:22:30',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (12,NULL,6,'2022-07-19 03:49:10',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (13,NULL,6,'2023-07-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (14,NULL,6,'2023-08-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (15,NULL,6,'2022-07-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (16,NULL,6,'2022-08-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (17,NULL,6,'2022-09-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (18,NULL,6,'2022-10-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (19,NULL,6,'2022-11-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (20,NULL,6,'2022-12-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (21,NULL,6,'2023-01-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (22,NULL,6,'2023-02-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (23,NULL,6,'2023-03-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (24,NULL,6,'2023-04-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (25,NULL,6,'2023-05-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (26,NULL,6,'2023-02-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (27,NULL,6,'2023-03-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (28,NULL,6,'2023-04-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (29,NULL,6,'2023-05-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (30,NULL,6,'2023-06-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (31,NULL,6,'2023-09-19 14:22:30',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (32,NULL,6,'2023-10-19 14:22:30',1200.00,NULL,NULL,'USD',1,'ffed5868e9951a95',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (33,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'e38f6ec37b9fabb3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (34,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'386a76c90a983717',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (35,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'6f302a92a8d039f4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (36,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'c7f53644ae2a7abd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (37,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'8e1a4f823c309e35',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (38,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'62904aaad7687d16',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (39,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'9e43d605091634b7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (40,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9183e73af132fbd1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (41,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'f739f79d40e7bd2d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (42,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'c908bcfa0cd5be20',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (43,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'32f851d09a3775f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (44,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'aa13673d8ef85a65',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (45,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'fd4792bd3a50da87',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (46,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'df65e9305cdef133',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (47,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'e7836a1040fc6647',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (48,NULL,6,'2023-10-19 14:22:30',1200.00,NULL,NULL,'USD',1,'fe44a2c192ab18be',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (49,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ef096073ba84bc0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (50,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'0937a86d9856d20f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (51,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'0e4d2cc74726c33e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (52,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'184c1625a0ab7dc0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (53,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'58c722d9ea8f60e4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (54,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'dc8c98604902da07',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (55,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'2ae34338151a8c31',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (56,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'126eb1cbca88ac46',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (57,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'4d24ed19cb02ed0c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (58,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'46fff670fdd88c83',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (59,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'1d446a98d22519c5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (60,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'e6d81f09a41d0f35',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (61,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9668e4798e266def',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (62,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'548746b3839860da',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (63,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'25a9f0b5ed29df0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (64,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ed07590fe067cb07',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (65,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'f82bc2b76969d315',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (66,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'2169580b75789814',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (67,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'504a9107e1c840c3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (68,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9dc4f36b0500ac35',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (69,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'96af8634550c39ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (70,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'082640d22f20fcf6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (71,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'a720e6fdf9eea694',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (72,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'c8d10d10dd2d66bb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (73,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'413cb05032f4ef86',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (74,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'b056ac8b83186f79',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (75,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'bd1cbf336bcdc529',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (76,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'188d57636c31422a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (77,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'44c3f7faa315a724',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (78,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'0ab78d1432305653',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (79,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'3eb2384d79bdaa10',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (80,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'d39bcc7bf0e51cab',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (81,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'4feacc260963ba72',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (82,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'95a80169077a3dea',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (83,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'b7318d85efca799b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (84,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'6ba712ac9576b7b6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (85,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'a96ed671bbd3ea09',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (86,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'cca171d375cdc8f6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (87,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'146f0c5184fd503c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (88,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'732d30e0d1d41ca5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (89,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'b28927dfa09ab7b4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (90,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'3de19df12cf6886c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (91,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'7a53e74599f788ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (92,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'4bc019d5fcebe204',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (93,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'a2542bee3dc332de',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (94,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'6cc8dd5a5b8e8913',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (95,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'24cc9f9c83795713',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (96,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7245aac602b546bb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (97,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ac8995759a7a3270',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (98,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'472bf4e471ef125f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (99,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ff5b5537da44c970',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (100,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'648327e05cdee0ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (101,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'b7c48e40295cdc9a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (102,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'f78524f14cda217c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (103,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7e35b99bd91e7b4c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (104,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'52b5a6a76b142227',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (105,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'755c91f4df5025f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (106,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'60f19d9651d20536',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (107,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'6def5a3cac235219',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (108,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'fe477a4cedeef016',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (109,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'fad72a1cf34cf68e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (110,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'656d8e5060576829',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (111,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7749b8e4f077e05c',NULL,1,NULL,1,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -3931,89 +3959,89 @@ UNLOCK TABLES; LOCK TABLES `civicrm_group_contact` WRITE; /*!40000 ALTER TABLE `civicrm_group_contact` DISABLE KEYS */; INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES - (1,2,119,'Added',NULL,NULL), - (2,2,16,'Added',NULL,NULL), - (3,2,139,'Added',NULL,NULL), - (4,2,141,'Added',NULL,NULL), - (5,2,156,'Added',NULL,NULL), - (6,2,122,'Added',NULL,NULL), - (7,2,132,'Added',NULL,NULL), - (8,2,79,'Added',NULL,NULL), - (9,2,49,'Added',NULL,NULL), - (10,2,188,'Added',NULL,NULL), - (11,2,81,'Added',NULL,NULL), - (12,2,80,'Added',NULL,NULL), - (13,2,169,'Added',NULL,NULL), - (14,2,150,'Added',NULL,NULL), - (15,2,53,'Added',NULL,NULL), - (16,2,22,'Added',NULL,NULL), - (17,2,190,'Added',NULL,NULL), - (18,2,55,'Added',NULL,NULL), - (19,2,4,'Added',NULL,NULL), - (20,2,96,'Added',NULL,NULL), - (21,2,2,'Added',NULL,NULL), - (22,2,65,'Added',NULL,NULL), - (23,2,54,'Added',NULL,NULL), - (24,2,8,'Added',NULL,NULL), - (25,2,24,'Added',NULL,NULL), - (26,2,86,'Added',NULL,NULL), - (27,2,69,'Added',NULL,NULL), - (28,2,143,'Added',NULL,NULL), - (29,2,145,'Added',NULL,NULL), - (30,2,175,'Added',NULL,NULL), - (31,2,164,'Added',NULL,NULL), - (32,2,74,'Added',NULL,NULL), - (33,2,68,'Added',NULL,NULL), - (34,2,162,'Added',NULL,NULL), - (35,2,183,'Added',NULL,NULL), - (36,2,114,'Added',NULL,NULL), - (37,2,39,'Added',NULL,NULL), - (38,2,184,'Added',NULL,NULL), - (39,2,124,'Added',NULL,NULL), - (40,2,160,'Added',NULL,NULL), - (41,2,47,'Added',NULL,NULL), - (42,2,92,'Added',NULL,NULL), - (43,2,82,'Added',NULL,NULL), - (44,2,21,'Added',NULL,NULL), - (45,2,15,'Added',NULL,NULL), - (46,2,50,'Added',NULL,NULL), - (47,2,70,'Added',NULL,NULL), - (48,2,25,'Added',NULL,NULL), - (49,2,167,'Added',NULL,NULL), - (50,2,144,'Added',NULL,NULL), - (51,2,130,'Added',NULL,NULL), - (52,2,10,'Added',NULL,NULL), - (53,2,138,'Added',NULL,NULL), - (54,2,77,'Added',NULL,NULL), - (55,2,196,'Added',NULL,NULL), + (1,2,31,'Added',NULL,NULL), + (2,2,25,'Added',NULL,NULL), + (3,2,35,'Added',NULL,NULL), + (4,2,142,'Added',NULL,NULL), + (5,2,5,'Added',NULL,NULL), + (6,2,54,'Added',NULL,NULL), + (7,2,4,'Added',NULL,NULL), + (8,2,82,'Added',NULL,NULL), + (9,2,9,'Added',NULL,NULL), + (10,2,143,'Added',NULL,NULL), + (11,2,123,'Added',NULL,NULL), + (12,2,78,'Added',NULL,NULL), + (13,2,70,'Added',NULL,NULL), + (14,2,173,'Added',NULL,NULL), + (15,2,83,'Added',NULL,NULL), + (16,2,72,'Added',NULL,NULL), + (17,2,186,'Added',NULL,NULL), + (18,2,127,'Added',NULL,NULL), + (19,2,101,'Added',NULL,NULL), + (20,2,30,'Added',NULL,NULL), + (21,2,89,'Added',NULL,NULL), + (22,2,187,'Added',NULL,NULL), + (23,2,194,'Added',NULL,NULL), + (24,2,136,'Added',NULL,NULL), + (25,2,115,'Added',NULL,NULL), + (26,2,129,'Added',NULL,NULL), + (27,2,168,'Added',NULL,NULL), + (28,2,157,'Added',NULL,NULL), + (29,2,172,'Added',NULL,NULL), + (30,2,117,'Added',NULL,NULL), + (31,2,197,'Added',NULL,NULL), + (32,2,98,'Added',NULL,NULL), + (33,2,185,'Added',NULL,NULL), + (34,2,132,'Added',NULL,NULL), + (35,2,94,'Added',NULL,NULL), + (36,2,11,'Added',NULL,NULL), + (37,2,178,'Added',NULL,NULL), + (38,2,144,'Added',NULL,NULL), + (39,2,201,'Added',NULL,NULL), + (40,2,87,'Added',NULL,NULL), + (41,2,128,'Added',NULL,NULL), + (42,2,8,'Added',NULL,NULL), + (43,2,33,'Added',NULL,NULL), + (44,2,42,'Added',NULL,NULL), + (45,2,80,'Added',NULL,NULL), + (46,2,153,'Added',NULL,NULL), + (47,2,120,'Added',NULL,NULL), + (48,2,169,'Added',NULL,NULL), + (49,2,130,'Added',NULL,NULL), + (50,2,28,'Added',NULL,NULL), + (51,2,93,'Added',NULL,NULL), + (52,2,17,'Added',NULL,NULL), + (53,2,38,'Added',NULL,NULL), + (54,2,174,'Added',NULL,NULL), + (55,2,81,'Added',NULL,NULL), (56,2,113,'Added',NULL,NULL), - (57,2,161,'Added',NULL,NULL), - (58,2,57,'Added',NULL,NULL), - (59,2,165,'Added',NULL,NULL), - (60,2,34,'Added',NULL,NULL), - (61,3,118,'Added',NULL,NULL), - (62,3,163,'Added',NULL,NULL), - (63,3,200,'Added',NULL,NULL), - (64,3,104,'Added',NULL,NULL), - (65,3,125,'Added',NULL,NULL), - (66,3,117,'Added',NULL,NULL), - (67,3,64,'Added',NULL,NULL), - (68,3,30,'Added',NULL,NULL), - (69,3,176,'Added',NULL,NULL), - (70,3,12,'Added',NULL,NULL), - (71,3,116,'Added',NULL,NULL), - (72,3,112,'Added',NULL,NULL), - (73,3,111,'Added',NULL,NULL), - (74,3,182,'Added',NULL,NULL), - (75,3,147,'Added',NULL,NULL), - (76,4,119,'Added',NULL,NULL), - (77,4,79,'Added',NULL,NULL), - (78,4,53,'Added',NULL,NULL), - (79,4,65,'Added',NULL,NULL), - (80,4,145,'Added',NULL,NULL), - (81,4,114,'Added',NULL,NULL), - (82,4,82,'Added',NULL,NULL), - (83,4,144,'Added',NULL,NULL), + (57,2,71,'Added',NULL,NULL), + (58,2,56,'Added',NULL,NULL), + (59,2,171,'Added',NULL,NULL), + (60,2,97,'Added',NULL,NULL), + (61,3,29,'Added',NULL,NULL), + (62,3,138,'Added',NULL,NULL), + (63,3,145,'Added',NULL,NULL), + (64,3,166,'Added',NULL,NULL), + (65,3,107,'Added',NULL,NULL), + (66,3,105,'Added',NULL,NULL), + (67,3,167,'Added',NULL,NULL), + (68,3,192,'Added',NULL,NULL), + (69,3,37,'Added',NULL,NULL), + (70,3,27,'Added',NULL,NULL), + (71,3,40,'Added',NULL,NULL), + (72,3,165,'Added',NULL,NULL), + (73,3,184,'Added',NULL,NULL), + (74,3,158,'Added',NULL,NULL), + (75,3,102,'Added',NULL,NULL), + (76,4,31,'Added',NULL,NULL), + (77,4,82,'Added',NULL,NULL), + (78,4,83,'Added',NULL,NULL), + (79,4,187,'Added',NULL,NULL), + (80,4,172,'Added',NULL,NULL), + (81,4,11,'Added',NULL,NULL), + (82,4,33,'Added',NULL,NULL), + (83,4,28,'Added',NULL,NULL), (84,4,202,'Added',NULL,NULL); /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -4129,85 +4157,85 @@ INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contributio (30,'civicrm_contribution',30,30,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,0.00,NULL), (31,'civicrm_contribution',31,31,1,'Contribution Amount',1.00,5.00,5.00,0,1,1,0.00,0.00,NULL), (32,'civicrm_membership',1,32,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (33,'civicrm_membership',3,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (34,'civicrm_membership',5,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (35,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (36,'civicrm_membership',9,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (37,'civicrm_membership',10,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (38,'civicrm_membership',13,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (39,'civicrm_membership',15,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (40,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (41,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (42,'civicrm_membership',20,51,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (43,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (44,'civicrm_membership',23,54,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (45,'civicrm_membership',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (46,'civicrm_membership',29,60,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (47,'civicrm_membership',30,61,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (48,'civicrm_membership',2,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (49,'civicrm_membership',4,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (50,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (51,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (52,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (53,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (54,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (55,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (56,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (57,'civicrm_membership',25,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (58,'civicrm_membership',26,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (33,'civicrm_membership',3,33,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (34,'civicrm_membership',7,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (35,'civicrm_membership',9,35,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (36,'civicrm_membership',13,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (37,'civicrm_membership',15,37,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (38,'civicrm_membership',17,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (39,'civicrm_membership',19,39,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (40,'civicrm_membership',20,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (41,'civicrm_membership',21,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (42,'civicrm_membership',23,42,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (43,'civicrm_membership',25,43,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (44,'civicrm_membership',27,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (45,'civicrm_membership',29,45,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (46,'civicrm_membership',30,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (47,'civicrm_membership',2,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (48,'civicrm_membership',4,48,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (49,'civicrm_membership',5,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (50,'civicrm_membership',6,50,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (51,'civicrm_membership',8,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (52,'civicrm_membership',10,52,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (53,'civicrm_membership',12,53,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (54,'civicrm_membership',14,54,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (55,'civicrm_membership',16,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (56,'civicrm_membership',18,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (57,'civicrm_membership',24,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (58,'civicrm_membership',26,58,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), (59,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (60,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), - (61,'civicrm_membership',22,53,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), - (63,'civicrm_participant',3,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (64,'civicrm_participant',6,97,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (65,'civicrm_participant',9,85,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (66,'civicrm_participant',12,112,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (67,'civicrm_participant',15,99,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (68,'civicrm_participant',18,73,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (69,'civicrm_participant',21,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (70,'civicrm_participant',24,109,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (71,'civicrm_participant',25,110,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (72,'civicrm_participant',28,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (73,'civicrm_participant',31,69,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (74,'civicrm_participant',34,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (75,'civicrm_participant',37,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (76,'civicrm_participant',40,70,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (77,'civicrm_participant',43,88,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (78,'civicrm_participant',46,92,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (79,'civicrm_participant',49,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (80,'civicrm_participant',50,107,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (81,'civicrm_participant',1,106,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (82,'civicrm_participant',4,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (83,'civicrm_participant',7,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (84,'civicrm_participant',10,90,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (85,'civicrm_participant',13,105,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (86,'civicrm_participant',16,67,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (87,'civicrm_participant',19,64,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (60,'civicrm_membership',11,60,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), + (61,'civicrm_membership',22,61,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), + (63,'civicrm_participant',3,100,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (64,'civicrm_participant',6,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (65,'civicrm_participant',9,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (66,'civicrm_participant',12,109,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (67,'civicrm_participant',15,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (68,'civicrm_participant',18,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (69,'civicrm_participant',21,82,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (70,'civicrm_participant',24,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (71,'civicrm_participant',25,106,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (72,'civicrm_participant',28,98,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (73,'civicrm_participant',31,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (74,'civicrm_participant',34,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (75,'civicrm_participant',37,92,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (76,'civicrm_participant',40,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (77,'civicrm_participant',43,101,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (78,'civicrm_participant',46,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (79,'civicrm_participant',49,78,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (80,'civicrm_participant',50,84,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (81,'civicrm_participant',1,65,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (82,'civicrm_participant',4,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (83,'civicrm_participant',7,86,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (84,'civicrm_participant',10,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (85,'civicrm_participant',13,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (86,'civicrm_participant',16,93,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (87,'civicrm_participant',19,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), (88,'civicrm_participant',22,104,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (89,'civicrm_participant',26,98,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (90,'civicrm_participant',29,89,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (91,'civicrm_participant',32,79,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (92,'civicrm_participant',35,86,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (93,'civicrm_participant',38,68,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (94,'civicrm_participant',41,93,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (95,'civicrm_participant',44,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (96,'civicrm_participant',47,95,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (97,'civicrm_participant',2,100,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (98,'civicrm_participant',5,75,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (99,'civicrm_participant',8,94,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (100,'civicrm_participant',11,77,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (101,'civicrm_participant',14,74,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (102,'civicrm_participant',17,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (103,'civicrm_participant',20,78,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (89,'civicrm_participant',26,64,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (90,'civicrm_participant',29,70,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (91,'civicrm_participant',32,112,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (92,'civicrm_participant',35,99,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (93,'civicrm_participant',38,96,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (94,'civicrm_participant',41,67,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (95,'civicrm_participant',44,107,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (96,'civicrm_participant',47,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (97,'civicrm_participant',2,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (98,'civicrm_participant',5,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (99,'civicrm_participant',8,75,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (100,'civicrm_participant',11,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (101,'civicrm_participant',14,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (102,'civicrm_participant',17,105,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (103,'civicrm_participant',20,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), (104,'civicrm_participant',23,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (105,'civicrm_participant',27,63,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (106,'civicrm_participant',30,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (107,'civicrm_participant',33,84,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (108,'civicrm_participant',36,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (109,'civicrm_participant',39,80,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (110,'civicrm_participant',42,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (111,'civicrm_participant',45,102,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (112,'civicrm_participant',48,66,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL); + (105,'civicrm_participant',27,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (106,'civicrm_participant',30,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (107,'civicrm_participant',33,88,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (108,'civicrm_participant',36,69,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (109,'civicrm_participant',39,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (110,'civicrm_participant',42,97,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (111,'civicrm_participant',45,87,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (112,'civicrm_participant',48,102,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL); /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */; UNLOCK TABLES; @@ -4218,9 +4246,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_loc_block` WRITE; /*!40000 ALTER TABLE `civicrm_loc_block` DISABLE KEYS */; INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES - (1,183,178,166,NULL,NULL,NULL,NULL,NULL), - (2,184,179,167,NULL,NULL,NULL,NULL,NULL), - (3,185,180,168,NULL,NULL,NULL,NULL,NULL); + (1,178,189,175,NULL,NULL,NULL,NULL,NULL), + (2,179,190,176,NULL,NULL,NULL,NULL,NULL), + (3,180,191,177,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */; UNLOCK TABLES; @@ -4246,7 +4274,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_log` WRITE; /*!40000 ALTER TABLE `civicrm_log` DISABLE KEYS */; INSERT INTO `civicrm_log` (`id`, `entity_table`, `entity_id`, `data`, `modified_id`, `modified_date`) VALUES - (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-09-19 09:27:51'); + (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-10-19 14:22:30'); /*!40000 ALTER TABLE `civicrm_log` ENABLE KEYS */; UNLOCK TABLES; @@ -4635,7 +4663,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_managed` WRITE; /*!40000 ALTER TABLE `civicrm_managed` DISABLE KEYS */; INSERT INTO `civicrm_managed` (`id`, `module`, `name`, `entity_type`, `entity_id`, `cleanup`, `entity_modified_date`) VALUES - (1,'civi_mail','SavedSearch_Email_Bounce_History','SavedSearch',1,'always',NULL); + (1,'civi_mail','SavedSearch_Email_Bounce_History','SavedSearch',1,'always',NULL), + (2,'civicrm','SavedSearch_Contact_Summary_Notes','SavedSearch',2,'always',NULL), + (3,'civicrm','SavedSearch_Contact_Summary_Relationships','SavedSearch',3,'unused',NULL); /*!40000 ALTER TABLE `civicrm_managed` ENABLE KEYS */; UNLOCK TABLES; @@ -4664,36 +4694,36 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership` WRITE; /*!40000 ALTER TABLE `civicrm_membership` DISABLE KEYS */; INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES - (1,63,1,'2023-09-19','2023-09-19','2025-09-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (2,143,2,'2023-09-18','2023-09-18','2024-09-17','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (3,175,1,'2023-09-17','2023-09-17','2025-09-16','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (4,183,2,'2023-09-16','2023-09-16','2024-09-15','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (5,132,1,'2021-08-18','2021-08-18','2023-08-17','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (6,120,2,'2023-09-14','2023-09-14','2024-09-13','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (7,34,1,'2023-09-13','2023-09-13','2025-09-12','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (8,55,2,'2023-09-12','2023-09-12','2024-09-11','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (9,156,1,'2023-09-11','2023-09-11','2025-09-10','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (10,36,1,'2021-07-09','2021-07-09','2023-07-08','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (11,5,3,'2023-09-09','2023-09-09',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (12,201,2,'2023-09-08','2023-09-08','2024-09-07','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (13,103,1,'2023-09-07','2023-09-07','2025-09-06','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (14,113,2,'2023-09-06','2023-09-06','2024-09-05','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (15,117,1,'2021-05-30','2021-05-30','2023-05-29','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (16,166,2,'2023-09-04','2023-09-04','2024-09-03','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (17,151,1,'2023-09-03','2023-09-03','2025-09-02','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (18,138,2,'2023-09-02','2023-09-02','2024-09-01','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (19,53,1,'2023-09-01','2023-09-01','2025-08-31','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (20,13,1,'2021-04-20','2021-04-20','2023-04-19','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (21,142,1,'2023-08-30','2023-08-30','2025-08-29','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (22,82,3,'2023-08-29','2023-08-29',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (23,160,1,'2023-08-28','2023-08-28','2025-08-27','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (24,199,2,'2023-08-27','2023-08-27','2024-08-26','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (25,150,2,'2022-08-26','2022-08-26','2023-08-25','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL), - (26,195,2,'2023-08-25','2023-08-25','2024-08-24','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (27,84,1,'2023-08-24','2023-08-24','2025-08-23','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (28,134,2,'2023-08-23','2023-08-23','2024-08-22','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (29,110,1,'2023-08-22','2023-08-22','2025-08-21','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (30,141,1,'2021-01-30','2021-01-30','2023-01-29','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL); + (1,55,1,'2023-10-19','2023-10-19','2025-10-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (2,47,2,'2023-10-18','2023-10-18','2024-10-17','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (3,168,1,'2023-10-17','2023-10-17','2025-10-16','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (4,126,2,'2023-10-16','2023-10-16','2024-10-15','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (5,113,2,'2022-10-15','2022-10-15','2023-10-14','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL), + (6,169,2,'2023-10-14','2023-10-14','2024-10-13','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (7,36,1,'2023-10-13','2023-10-13','2025-10-12','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (8,164,2,'2023-10-12','2023-10-12','2024-10-11','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (9,87,1,'2023-10-11','2023-10-11','2025-10-10','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (10,39,2,'2022-10-10','2022-10-10','2023-10-09','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL), + (11,93,3,'2023-10-09','2023-10-09',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (12,49,2,'2023-10-08','2023-10-08','2024-10-07','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (13,48,1,'2023-10-07','2023-10-07','2025-10-06','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (14,92,2,'2023-10-06','2023-10-06','2024-10-05','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (15,180,1,'2021-06-29','2021-06-29','2023-06-28','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (16,136,2,'2023-10-04','2023-10-04','2024-10-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (17,8,1,'2023-10-03','2023-10-03','2025-10-02','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (18,187,2,'2023-10-02','2023-10-02','2024-10-01','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (19,54,1,'2023-10-01','2023-10-01','2025-09-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (20,106,1,'2021-05-20','2021-05-20','2023-05-19','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (21,17,1,'2023-09-29','2023-09-29','2025-09-28','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (22,5,3,'2023-09-28','2023-09-28',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (23,175,1,'2023-09-27','2023-09-27','2025-09-26','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (24,100,2,'2023-09-26','2023-09-26','2024-09-25','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (25,28,1,'2021-04-10','2021-04-10','2023-04-09','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (26,78,2,'2023-09-24','2023-09-24','2024-09-23','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (27,117,1,'2023-09-23','2023-09-23','2025-09-22','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (28,66,2,'2023-09-22','2023-09-22','2024-09-21','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (29,86,1,'2023-09-21','2023-09-21','2025-09-20','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (30,149,1,'2021-03-01','2021-03-01','2023-02-28','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL); /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */; UNLOCK TABLES; @@ -4715,36 +4745,36 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership_log` WRITE; /*!40000 ALTER TABLE `civicrm_membership_log` DISABLE KEYS */; INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES - (1,11,1,'2023-09-09',NULL,5,'2023-09-19',3,NULL), - (2,20,3,'2021-04-20','2023-04-19',13,'2023-09-19',1,NULL), - (3,7,1,'2023-09-13','2025-09-12',34,'2023-09-19',1,NULL), - (4,10,3,'2021-07-09','2023-07-08',36,'2023-09-19',1,NULL), - (5,19,1,'2023-09-01','2025-08-31',53,'2023-09-19',1,NULL), - (6,8,1,'2023-09-12','2024-09-11',55,'2023-09-19',2,NULL), - (7,1,1,'2023-09-19','2025-09-18',63,'2023-09-19',1,NULL), - (8,22,1,'2023-08-29',NULL,82,'2023-09-19',3,NULL), - (9,27,1,'2023-08-24','2025-08-23',84,'2023-09-19',1,NULL), - (10,13,1,'2023-09-07','2025-09-06',103,'2023-09-19',1,NULL), - (11,29,1,'2023-08-22','2025-08-21',110,'2023-09-19',1,NULL), - (12,14,1,'2023-09-06','2024-09-05',113,'2023-09-19',2,NULL), - (13,15,3,'2021-05-30','2023-05-29',117,'2023-09-19',1,NULL), - (14,6,1,'2023-09-14','2024-09-13',120,'2023-09-19',2,NULL), - (15,5,3,'2021-08-18','2023-08-17',132,'2023-09-19',1,NULL), - (16,28,1,'2023-08-23','2024-08-22',134,'2023-09-19',2,NULL), - (17,18,1,'2023-09-02','2024-09-01',138,'2023-09-19',2,NULL), - (18,30,3,'2021-01-30','2023-01-29',141,'2023-09-19',1,NULL), - (19,21,1,'2023-08-30','2025-08-29',142,'2023-09-19',1,NULL), - (20,2,1,'2023-09-18','2024-09-17',143,'2023-09-19',2,NULL), - (21,25,4,'2022-08-26','2023-08-25',150,'2023-09-19',2,NULL), - (22,17,1,'2023-09-03','2025-09-02',151,'2023-09-19',1,NULL), - (23,9,1,'2023-09-11','2025-09-10',156,'2023-09-19',1,NULL), - (24,23,1,'2023-08-28','2025-08-27',160,'2023-09-19',1,NULL), - (25,16,1,'2023-09-04','2024-09-03',166,'2023-09-19',2,NULL), - (26,3,1,'2023-09-17','2025-09-16',175,'2023-09-19',1,NULL), - (27,4,1,'2023-09-16','2024-09-15',183,'2023-09-19',2,NULL), - (28,26,1,'2023-08-25','2024-08-24',195,'2023-09-19',2,NULL), - (29,24,1,'2023-08-27','2024-08-26',199,'2023-09-19',2,NULL), - (30,12,1,'2023-09-08','2024-09-07',201,'2023-09-19',2,NULL); + (1,22,1,'2023-09-28',NULL,5,'2023-10-19',3,NULL), + (2,17,1,'2023-10-03','2025-10-02',8,'2023-10-19',1,NULL), + (3,21,1,'2023-09-29','2025-09-28',17,'2023-10-19',1,NULL), + (4,25,3,'2021-04-10','2023-04-09',28,'2023-10-19',1,NULL), + (5,7,1,'2023-10-13','2025-10-12',36,'2023-10-19',1,NULL), + (6,10,4,'2022-10-10','2023-10-09',39,'2023-10-19',2,NULL), + (7,2,1,'2023-10-18','2024-10-17',47,'2023-10-19',2,NULL), + (8,13,1,'2023-10-07','2025-10-06',48,'2023-10-19',1,NULL), + (9,12,1,'2023-10-08','2024-10-07',49,'2023-10-19',2,NULL), + (10,19,1,'2023-10-01','2025-09-30',54,'2023-10-19',1,NULL), + (11,1,1,'2023-10-19','2025-10-18',55,'2023-10-19',1,NULL), + (12,28,1,'2023-09-22','2024-09-21',66,'2023-10-19',2,NULL), + (13,26,1,'2023-09-24','2024-09-23',78,'2023-10-19',2,NULL), + (14,29,1,'2023-09-21','2025-09-20',86,'2023-10-19',1,NULL), + (15,9,1,'2023-10-11','2025-10-10',87,'2023-10-19',1,NULL), + (16,14,1,'2023-10-06','2024-10-05',92,'2023-10-19',2,NULL), + (17,11,1,'2023-10-09',NULL,93,'2023-10-19',3,NULL), + (18,24,1,'2023-09-26','2024-09-25',100,'2023-10-19',2,NULL), + (19,20,3,'2021-05-20','2023-05-19',106,'2023-10-19',1,NULL), + (20,5,4,'2022-10-15','2023-10-14',113,'2023-10-19',2,NULL), + (21,27,1,'2023-09-23','2025-09-22',117,'2023-10-19',1,NULL), + (22,4,1,'2023-10-16','2024-10-15',126,'2023-10-19',2,NULL), + (23,16,1,'2023-10-04','2024-10-03',136,'2023-10-19',2,NULL), + (24,30,3,'2021-03-01','2023-02-28',149,'2023-10-19',1,NULL), + (25,8,1,'2023-10-12','2024-10-11',164,'2023-10-19',2,NULL), + (26,3,1,'2023-10-17','2025-10-16',168,'2023-10-19',1,NULL), + (27,6,1,'2023-10-14','2024-10-13',169,'2023-10-19',2,NULL), + (28,23,1,'2023-09-27','2025-09-26',175,'2023-10-19',1,NULL), + (29,15,3,'2021-06-29','2023-06-28',180,'2023-10-19',1,NULL), + (30,18,1,'2023-10-02','2024-10-01',187,'2023-10-19',2,NULL); /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */; UNLOCK TABLES; @@ -4755,36 +4785,36 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership_payment` WRITE; /*!40000 ALTER TABLE `civicrm_membership_payment` DISABLE KEYS */; INSERT INTO `civicrm_membership_payment` (`id`, `membership_id`, `contribution_id`) VALUES - (7,1,32), - (20,2,33), - (26,3,34), - (27,4,35), - (15,5,36), - (14,6,37), - (3,7,38), - (6,8,39), - (23,9,40), - (4,10,41), - (1,11,42), - (30,12,43), - (10,13,44), - (12,14,45), - (13,15,46), - (25,16,47), - (22,17,48), - (17,18,49), - (5,19,50), - (2,20,51), - (19,21,52), - (8,22,53), - (24,23,54), - (29,24,55), - (21,25,56), - (28,26,57), - (9,27,58), - (16,28,59), - (11,29,60), - (18,30,61); + (1,1,32), + (2,3,33), + (3,7,34), + (4,9,35), + (5,13,36), + (6,15,37), + (7,17,38), + (8,19,39), + (9,20,40), + (10,21,41), + (11,23,42), + (12,25,43), + (13,27,44), + (14,29,45), + (15,30,46), + (16,2,47), + (17,4,48), + (18,5,49), + (19,6,50), + (20,8,51), + (21,10,52), + (22,12,53), + (23,14,54), + (24,16,55), + (25,18,56), + (26,24,57), + (27,26,58), + (28,28,59), + (29,11,60), + (30,22,61); /*!40000 ALTER TABLE `civicrm_membership_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -4825,459 +4855,460 @@ UNLOCK TABLES; LOCK TABLES `civicrm_menu` WRITE; /*!40000 ALTER TABLE `civicrm_menu` DISABLE KEYS */; INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES - (1,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'), - (2,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'), - (3,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (4,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (5,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (6,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'), - (7,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), - (8,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), - (9,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (10,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), - (11,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'), - (12,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), - (13,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (14,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'), - (15,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (16,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (17,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (18,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (19,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'), - (20,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (21,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (22,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (23,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (24,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (25,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (26,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (27,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'), - (28,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'), - (29,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'), - (30,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'), - (31,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'), - (32,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'), - (33,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (34,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (35,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (36,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (37,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (38,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (39,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (40,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (41,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (42,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (43,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (44,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (45,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (46,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (47,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (48,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (49,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (50,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (51,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (52,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (53,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (54,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (55,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (56,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'), - (57,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (58,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (59,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (60,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (61,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (62,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (63,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (64,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (65,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (66,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (67,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), - (68,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), - (69,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), - (70,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'), - (71,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), - (72,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'), - (73,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), - (74,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (75,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (76,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (77,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (78,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (79,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (80,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (81,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (82,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (83,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (84,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (85,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (86,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (87,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (88,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (89,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (90,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (91,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (92,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (93,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (94,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (95,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), - (96,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'), - (97,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (98,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'), - (99,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (100,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), - (101,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'), - (102,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'), - (103,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'), - (104,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (105,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (106,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (107,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'), - (108,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'), - (109,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (110,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (111,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (112,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (113,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (114,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (115,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'), - (116,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (117,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (118,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (119,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (120,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (121,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (122,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (123,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (124,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (125,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (126,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (127,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (128,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (129,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (130,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), - (131,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (132,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:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (133,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (134,1,'civicrm/acl/edit',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (135,1,'civicrm/acl/delete',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (136,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (137,1,'civicrm/acl/entityrole/edit',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_Form_EntityRole\";',NULL,'a:3:{i:0;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\";}i:2;a:2:{s:5:\"title\";s:25:\"Assign Users to ACL Roles\";s:3:\"url\";s:31:\"/civicrm/acl/entityrole?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (138,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (139,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (140,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (141,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,9999,1,1,0,'a:0:{}'), - (142,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (143,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (144,1,'civicrm/api',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (145,1,'civicrm/api3',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (146,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (147,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (148,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (149,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (150,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (151,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (152,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (153,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,1,1,0,0,'a:0:{}'), - (154,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (155,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (156,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (157,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (158,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (159,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (160,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (161,1,'civicrm/dev/fake-error',NULL,'Fake Error','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Page_FakeError\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (162,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (163,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (164,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (165,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (166,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (167,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (168,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (169,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (170,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (171,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (172,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (173,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (174,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (175,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (176,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (177,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (178,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (179,1,'civicrm/task/add-activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (180,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), - (181,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'), - (182,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'), - (183,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (184,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (185,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (186,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'), - (187,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'), - (188,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (189,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (190,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (191,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (192,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (193,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (194,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (195,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (196,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (197,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (198,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (199,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (200,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (201,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (202,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (203,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (204,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (205,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (206,1,'civicrm/contact/view/note','cid=%%cid%%','Notes','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Contact_Page_View_Note\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (207,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (208,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (209,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (210,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (211,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (212,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (213,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (214,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (215,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (216,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (217,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (218,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (219,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (220,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (221,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (222,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (223,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (224,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (225,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (226,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (227,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (228,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (229,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (230,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (231,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (232,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), - (233,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (234,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (235,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (236,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'), - (237,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (238,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (239,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (240,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (241,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (242,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (243,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (244,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (245,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (246,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (247,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (248,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (249,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (250,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (251,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (252,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (253,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (254,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (255,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (256,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (257,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (258,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (259,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (260,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (261,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (262,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (263,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), - (264,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (265,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (266,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), - (267,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), - (268,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), - (269,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), - (270,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), - (271,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (272,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (273,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (274,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (275,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (276,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (277,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (278,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (279,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (280,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'), - (281,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'), - (282,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), - (283,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'), - (284,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), - (285,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'), - (286,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), - (287,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'), - (288,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'), - (289,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'), - (290,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'), - (291,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'), - (292,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'), - (293,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'), - (294,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'), - (295,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), - (296,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (297,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (298,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), - (299,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'), - (300,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), - (301,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (302,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (303,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (304,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (305,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,1,0,1,0,0,'a:0:{}'), - (306,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,360,1,0,0,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (307,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:0:{}'), - (308,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:0:{}'), - (309,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), - (310,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), - (311,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), - (312,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,440,1,0,0,'a:0:{}'), - (313,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,460,1,0,0,'a:0:{}'), - (314,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,470,1,0,0,'a:0:{}'), - (315,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'), - (316,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (317,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (318,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (319,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (320,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (321,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (322,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (323,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (324,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (325,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (326,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (327,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (328,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (329,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'), - (330,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'), - (331,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,530,1,1,0,'a:0:{}'), - (332,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'), - (333,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (334,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (335,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (336,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (337,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (338,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (339,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'), - (340,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'), - (341,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'), - (342,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'), - (343,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'), - (344,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (345,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (346,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (347,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (348,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (349,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (350,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (351,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), - (352,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (353,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'), - (354,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), - (355,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'), - (356,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'), - (357,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), - (358,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), - (359,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,2,1,0,0,'a:0:{}'), - (360,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,390,1,0,0,'a:0:{}'), - (361,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,710,1,1,0,'a:0:{}'), - (362,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,720,1,1,0,'a:0:{}'), - (363,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (364,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (365,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'), - (366,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (367,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (368,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (369,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:20:\"List email accounts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (370,1,'civicrm/admin/mailSettings/edit',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_MailSettings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Mail Accounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), - (371,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,610,1,1,0,'a:0:{}'), - (372,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'), - (373,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'), - (374,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,625,1,1,0,'a:0:{}'), - (375,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,630,1,1,0,'a:0:{}'), - (376,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,640,1,0,0,'a:0:{}'), - (377,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,645,1,0,0,'a:0:{}'), - (378,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,650,1,0,0,'a:0:{}'), - (379,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'), - (380,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'), - (381,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,680,1,0,0,'a:0:{}'), - (382,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,685,1,0,0,'a:0:{}'), - (383,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&mid=%%mid%%\";}}',NULL,NULL,4,1,0,1,0,695,1,0,0,'a:0:{}'), - (384,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (385,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,800,1,0,0,'a:0:{}'), - (386,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,850,1,0,0,'a:0:{}'), - (387,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (388,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (389,1,'civicrm/ajax/setupMailAccount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (390,1,'civicrm/mailing/url',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'), - (391,1,'civicrm/mailing/open',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'), - (392,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'), - (393,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,560,1,1,0,'a:0:{}'), - (394,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,570,1,0,0,'a:0:{}'), - (395,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'), - (396,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,580,1,0,0,'a:0:{}'), - (397,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (398,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'), - (399,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'), - (400,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,910,1,1,0,'a:0:{}'), - (401,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (402,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (403,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (404,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (405,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (406,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (407,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (408,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (409,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'), - (410,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), - (411,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), - (412,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), - (413,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), - (414,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (415,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (416,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,3,0,'a:0:{}'), - (417,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (418,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (419,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (420,1,'civicrm/case/email/add','action=add,task=email','Email','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_Task_Email\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (421,1,'civicrm/contact/view/case/deleteClient',NULL,'Remove Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Case_Form_DeleteClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (422,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'), - (423,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'), - (424,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1220,1,1,0,'a:0:{}'), - (425,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1241,1,1,0,'a:0:{}'), - (426,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'), - (427,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'), - (428,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), - (429,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), - (430,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), - (431,1,'civicrm/campaign',NULL,'Campaign Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:27:\"CRM_Campaign_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), - (432,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), - (433,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), - (434,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), - (435,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (436,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (437,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (438,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (439,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), - (440,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), - (441,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (442,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (443,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (444,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (445,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (446,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:0:{}'), - (447,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (448,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (449,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (450,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (451,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Ckeditor4_Form_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (452,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:43:\"Configure anti-abuse/bot-prevention service\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (453,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:43:\"Configure anti-abuse/bot-prevention service\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}'); + (1,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (2,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (3,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (4,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (5,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (6,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (7,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (8,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (9,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (10,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (11,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'), + (12,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (13,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (14,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (15,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (16,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (17,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (18,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (19,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'), + (20,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'), + (21,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'), + (22,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'), + (23,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'), + (24,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'), + (25,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'), + (26,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (27,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (28,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (29,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (30,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (31,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (32,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (33,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (34,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (35,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (36,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (37,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (38,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (39,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (40,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (41,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (42,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (43,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (44,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (45,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (46,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (47,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (48,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (49,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'), + (50,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (51,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (52,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (53,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (54,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (55,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (56,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (57,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (58,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (59,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (60,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), + (61,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), + (62,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), + (63,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'), + (64,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), + (65,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'), + (66,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), + (67,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (68,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (69,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (70,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (71,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (72,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (73,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (74,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (75,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (76,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (77,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (78,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (79,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (80,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (81,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (82,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (83,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (84,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (85,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (86,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (87,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), + (88,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), + (89,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'), + (90,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (91,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'), + (92,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (93,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), + (94,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'), + (95,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'), + (96,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'), + (97,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (98,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (99,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (100,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'), + (101,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'), + (102,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (103,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (104,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (105,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (106,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (107,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (108,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'), + (109,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (110,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (111,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (112,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'), + (113,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), + (114,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), + (115,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (116,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), + (117,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'), + (118,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), + (119,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (120,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'), + (121,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (122,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (123,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (124,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'), + (125,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'), + (126,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (127,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (128,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (129,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (130,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (131,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), + (132,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (133,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:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (134,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (135,1,'civicrm/acl/edit',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (136,1,'civicrm/acl/delete',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (137,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (138,1,'civicrm/acl/entityrole/edit',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_Form_EntityRole\";',NULL,'a:3:{i:0;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\";}i:2;a:2:{s:5:\"title\";s:25:\"Assign Users to ACL Roles\";s:3:\"url\";s:31:\"/civicrm/acl/entityrole?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (139,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (140,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (141,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (142,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,9999,1,1,0,'a:0:{}'), + (143,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (144,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (145,1,'civicrm/api',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (146,1,'civicrm/api3',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (147,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (148,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (149,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (150,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (151,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (152,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (153,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (154,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,1,1,0,0,'a:0:{}'), + (155,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (156,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (157,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (158,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (159,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (160,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (161,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (162,1,'civicrm/dev/fake-error',NULL,'Fake Error','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Page_FakeError\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (163,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (164,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (165,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (166,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (167,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (168,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (169,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (170,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (171,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (172,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (173,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (174,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (175,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (176,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (177,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (178,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (179,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (180,1,'civicrm/task/add-activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (181,1,'civicrm/note',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Note_Form_Note\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (182,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (183,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (184,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (185,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (186,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), + (187,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'), + (188,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'), + (189,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (190,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (191,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (192,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'), + (193,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'), + (194,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (195,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (196,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (197,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (198,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (199,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (200,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (201,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (202,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (203,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (204,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (205,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (206,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (207,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (208,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (209,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (210,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (211,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (212,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (213,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (214,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (215,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (216,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (217,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (218,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (219,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (220,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (221,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (222,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (223,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (224,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (225,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (226,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (227,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (228,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (229,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (230,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (231,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (232,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (233,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (234,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (235,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (236,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (237,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), + (238,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (239,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (240,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (241,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'), + (242,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (243,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (244,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (245,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (246,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (247,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (248,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (249,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (250,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (251,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (252,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (253,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (254,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (255,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (256,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (257,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (258,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (259,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (260,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (261,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (262,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (263,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (264,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (265,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (266,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (267,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'), + (268,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), + (269,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (270,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), + (271,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), + (272,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), + (273,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), + (274,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), + (275,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (276,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (277,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (278,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (279,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (280,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (281,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (282,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (283,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (284,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'), + (285,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'), + (286,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), + (287,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'), + (288,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), + (289,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'), + (290,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), + (291,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'), + (292,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'), + (293,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'), + (294,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'), + (295,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'), + (296,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'), + (297,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'), + (298,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'), + (299,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), + (300,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), + (301,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (302,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (303,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), + (304,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'), + (305,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (306,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (307,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (308,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (309,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,1,0,1,0,0,'a:0:{}'), + (310,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,360,1,0,0,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (311,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:0:{}'), + (312,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:0:{}'), + (313,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), + (314,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), + (315,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), + (316,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,440,1,0,0,'a:0:{}'), + (317,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,460,1,0,0,'a:0:{}'), + (318,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,470,1,0,0,'a:0:{}'), + (319,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'), + (320,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (321,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (322,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (323,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (324,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (325,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (326,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (327,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (328,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (329,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (330,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (331,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (332,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (333,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'), + (334,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'), + (335,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,530,1,1,0,'a:0:{}'), + (336,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'), + (337,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (338,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (339,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (340,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (341,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (342,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (343,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'), + (344,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'), + (345,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'), + (346,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'), + (347,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'), + (348,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (349,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (350,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (351,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (352,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (353,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (354,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (355,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (356,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (357,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'), + (358,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'), + (359,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), + (360,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), + (361,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,2,1,0,0,'a:0:{}'), + (362,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,390,1,0,0,'a:0:{}'), + (363,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,710,1,1,0,'a:0:{}'), + (364,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,720,1,1,0,'a:0:{}'), + (365,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (366,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (367,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'), + (368,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), + (369,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), + (370,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), + (371,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:20:\"List email accounts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), + (372,1,'civicrm/admin/mailSettings/edit',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_MailSettings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Mail Accounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), + (373,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,610,1,1,0,'a:0:{}'), + (374,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'), + (375,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'), + (376,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,625,1,1,0,'a:0:{}'), + (377,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,630,1,1,0,'a:0:{}'), + (378,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,640,1,0,0,'a:0:{}'), + (379,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,645,1,0,0,'a:0:{}'), + (380,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,650,1,0,0,'a:0:{}'), + (381,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'), + (382,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'), + (383,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,680,1,0,0,'a:0:{}'), + (384,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,685,1,0,0,'a:0:{}'), + (385,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&mid=%%mid%%\";}}',NULL,NULL,4,1,0,1,0,695,1,0,0,'a:0:{}'), + (386,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (387,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,800,1,0,0,'a:0:{}'), + (388,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,850,1,0,0,'a:0:{}'), + (389,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (390,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (391,1,'civicrm/ajax/setupMailAccount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (392,1,'civicrm/mailing/url',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'), + (393,1,'civicrm/mailing/open',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'), + (394,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'), + (395,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,560,1,1,0,'a:0:{}'), + (396,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,570,1,0,0,'a:0:{}'), + (397,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'), + (398,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,580,1,0,0,'a:0:{}'), + (399,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (400,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'), + (401,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'), + (402,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,910,1,1,0,'a:0:{}'), + (403,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (404,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (405,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (406,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (407,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (408,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (409,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (410,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (411,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'), + (412,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), + (413,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), + (414,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), + (415,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), + (416,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (417,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (418,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,3,0,'a:0:{}'), + (419,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (420,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (421,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (422,1,'civicrm/case/email/add','action=add,task=email','Email','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_Task_Email\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (423,1,'civicrm/contact/view/case/deleteClient',NULL,'Remove Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Case_Form_DeleteClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (424,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'), + (425,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'), + (426,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1220,1,1,0,'a:0:{}'), + (427,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1241,1,1,0,'a:0:{}'), + (428,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'), + (429,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'), + (430,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), + (431,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), + (432,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), + (433,1,'civicrm/campaign/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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), + (434,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), + (435,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), + (436,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (437,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (438,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (439,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (440,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), + (441,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), + (442,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (443,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (444,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (445,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (446,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (447,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (448,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (449,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (450,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (451,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (452,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Ckeditor4_Form_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (453,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:20:\"administer recaptcha\";}i:1;s:2:\"or\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";}'), + (454,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}'); /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */; UNLOCK TABLES; @@ -5288,66 +5319,66 @@ UNLOCK TABLES; LOCK TABLES `civicrm_msg_template` WRITE; /*!40000 ALTER TABLE `civicrm_msg_template` DISABLE KEYS */; INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`, `msg_html`, `is_active`, `workflow_id`, `workflow_name`, `is_default`, `is_reserved`, `is_sms`, `pdf_format_id`) VALUES - (1,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n \n \n \n \n {if !empty($isCaseActivity)}\n \n \n \n \n {if !empty($manageCaseURL)}\n \n \n \n {/if}\n {/if}\n {if !empty($editActURL)}\n \n \n \n {/if}\n {if !empty($viewActURL)}\n \n \n \n {/if}\n {foreach from=$activity.fields item=field}\n \n \n \n \n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n \n \n \n {foreach from=$customGroup item=field}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n
\n {ts}Activity Summary{/ts} - {$activityTypeName}\n
\n {ts}Your Case Role(s){/ts}\n \n {$contact.role|default:\'\'}\n
\n {ts}Manage Case{/ts}\n
\n {ts}Edit activity{/ts}\n
\n {ts}View activity{/ts}\n
\n {$field.label}\n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n
\n {$customGroupName}\n
\n {$field.label}\n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n
\n
\n\n\n',1,814,'case_activity',1,0,0,NULL), - (2,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n \n \n \n \n {if !empty($isCaseActivity)}\n \n \n \n \n {if !empty($manageCaseURL)}\n \n \n \n {/if}\n {/if}\n {if !empty($editActURL)}\n \n \n \n {/if}\n {if !empty($viewActURL)}\n \n \n \n {/if}\n {foreach from=$activity.fields item=field}\n \n \n \n \n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n \n \n \n {foreach from=$customGroup item=field}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n
\n {ts}Activity Summary{/ts} - {$activityTypeName}\n
\n {ts}Your Case Role(s){/ts}\n \n {$contact.role|default:\'\'}\n
\n {ts}Manage Case{/ts}\n
\n {ts}Edit activity{/ts}\n
\n {ts}View activity{/ts}\n
\n {$field.label}\n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n
\n {$customGroupName}\n
\n {$field.label}\n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n
\n
\n\n\n',1,814,'case_activity',0,1,0,NULL), - (3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n {if $receiptMessage}\n \n \n \n {/if}\n
\n

{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}

\n

{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Organization Name{/ts}\n \n {$onBehalfName}\n
\n {ts}Organization Email{/ts}\n \n {$onBehalfEmail}\n
\n {ts}Organization Contact ID{/ts}\n \n {$onBehalfID}\n
\n
\n

{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}

\n
\n \n \n \n \n \n \n \n
\n {ts}Copy of Contribution Receipt{/ts}\n
\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n
\n
\n\n\n',1,815,'contribution_dupalert',1,0,0,NULL), - (4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n {if $receiptMessage}\n \n \n \n {/if}\n
\n

{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}

\n

{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Organization Name{/ts}\n \n {$onBehalfName}\n
\n {ts}Organization Email{/ts}\n \n {$onBehalfEmail}\n
\n {ts}Organization Contact ID{/ts}\n \n {$onBehalfID}\n
\n
\n

{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}

\n
\n \n \n \n \n \n \n \n
\n {ts}Copy of Contribution Receipt{/ts}\n
\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n
\n
\n\n\n',1,815,'contribution_dupalert',0,1,0,NULL), - (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{else}{ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

\n {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n {else}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n

\n
\n \n \n \n \n \n \n \n \n \n {if \'{contribution.financial_type_id}\'}\n \n \n {/if}\n \n\n {if $isShowLineItems}\n \n \n \n\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n\n {if $isShowTax}\n \n \n \n \n {/if}\n\n \n \n \n \n\n {if \'{contribution.receive_date}\'}\n \n \n \n \n {/if}\n\n {if \'{contribution.receipt_date}\'}\n \n \n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean}}\n \n \n \n \n {if \'{contribution.check_number}\'}\n \n \n \n \n {/if}\n {/if}\n\n {if \'{contribution.trxn_id}\'}\n \n \n \n \n {/if}\n\n {if !empty($ccContribution)}\n \n \n \n \n \n \n \n \n \n \n \n \n {/if}\n\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($formValues.product_name)}\n \n \n \n \n \n \n {if $formValues.product_option}\n \n \n \n \n {/if}\n {if $formValues.product_sku}\n \n \n \n \n {/if}\n {if !empty($fulfilled_date)}\n \n \n \n \n {/if}\n {/if}\n\n
\n {ts}Contribution Information{/ts}\n
\n {ts}Contributor Name{/ts}\n \n {contact.display_name}\n
\n {ts}Financial Type{/ts}\n \n {contribution.financial_type_id:label}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n \n {foreach from=$lineItems item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}
\n {$line.title}\n \n {$line.qty}\n \n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n \n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n
\n
\n {ts} Amount before Tax : {/ts}\n \n {contribution.tax_exclusive_amount}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Contribution Date{/ts}\n \n {contribution.receive_date|crmDate:\"shortdate\"}\n
\n {ts}Receipt Date{/ts}\n \n {contribution.receipt_date|crmDate:\"shortdate\"}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {contribution.check_number}\n
\n {ts}Transaction ID{/ts}\n \n {contribution.trxn_id}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {$softCreditType}\n
\n {$label}\n \n {$value}\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n {ts}Premium Information{/ts}\n
\n {$formValues.product_name}\n
\n {ts}Option{/ts}\n \n {$formValues.product_option}\n
\n {ts}SKU{/ts}\n \n {$formValues.product_sku}\n
\n {ts}Sent{/ts}\n \n {$fulfilled_date|truncate:10:\'\'|crmDate}\n
\n
\n\n\n\n',1,816,'contribution_offline_receipt',1,0,0,NULL), - (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{else}{ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

\n {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n {else}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n

\n
\n \n \n \n \n \n \n \n \n \n {if \'{contribution.financial_type_id}\'}\n \n \n {/if}\n \n\n {if $isShowLineItems}\n \n \n \n\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n\n {if $isShowTax}\n \n \n \n \n {/if}\n\n \n \n \n \n\n {if \'{contribution.receive_date}\'}\n \n \n \n \n {/if}\n\n {if \'{contribution.receipt_date}\'}\n \n \n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean}}\n \n \n \n \n {if \'{contribution.check_number}\'}\n \n \n \n \n {/if}\n {/if}\n\n {if \'{contribution.trxn_id}\'}\n \n \n \n \n {/if}\n\n {if !empty($ccContribution)}\n \n \n \n \n \n \n \n \n \n \n \n \n {/if}\n\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($formValues.product_name)}\n \n \n \n \n \n \n {if $formValues.product_option}\n \n \n \n \n {/if}\n {if $formValues.product_sku}\n \n \n \n \n {/if}\n {if !empty($fulfilled_date)}\n \n \n \n \n {/if}\n {/if}\n\n
\n {ts}Contribution Information{/ts}\n
\n {ts}Contributor Name{/ts}\n \n {contact.display_name}\n
\n {ts}Financial Type{/ts}\n \n {contribution.financial_type_id:label}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n \n {foreach from=$lineItems item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}
\n {$line.title}\n \n {$line.qty}\n \n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n \n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n
\n
\n {ts} Amount before Tax : {/ts}\n \n {contribution.tax_exclusive_amount}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Contribution Date{/ts}\n \n {contribution.receive_date|crmDate:\"shortdate\"}\n
\n {ts}Receipt Date{/ts}\n \n {contribution.receipt_date|crmDate:\"shortdate\"}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {contribution.check_number}\n
\n {ts}Transaction ID{/ts}\n \n {contribution.trxn_id}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {$softCreditType}\n
\n {$label}\n \n {$value}\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n {ts}Premium Information{/ts}\n
\n {$formValues.product_name}\n
\n {ts}Option{/ts}\n \n {$formValues.product_option}\n
\n {ts}SKU{/ts}\n \n {$formValues.product_sku}\n
\n {ts}Sent{/ts}\n \n {$fulfilled_date|truncate:10:\'\'|crmDate}\n
\n
\n\n\n\n',1,816,'contribution_offline_receipt',0,1,0,NULL), - (7,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n {/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if !empty($receipt_text)}\n

{$receipt_text|htmlize}

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n\n {if {contribution.total_amount|boolean}}\n \n \n \n\n {if $isShowLineItems}\n \n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n\n {/if}\n {if $isShowTax}\n \n \n \n \n {/if}\n \n \n \n \n {else}\n {if {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n \n\n {/if}\n\n {/if}\n\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n \n \n {/if}\n\n {if !empty($is_recur)}\n \n \n \n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n \n \n {/foreach}\n {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n \n \n \n \n \n {if $pcp_roll_nickname}\n \n \n \n \n {/if}\n {if $pcp_personal_note}\n \n \n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($isShare)}\n \n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {elseif !empty($email)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n \n \n \n \n {if $option}\n \n \n \n \n {/if}\n {if $sku}\n \n \n \n \n {/if}\n {if $start_date}\n \n \n \n \n {/if}\n {if $end_date}\n \n \n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n
\n {ts}Contribution Information{/ts}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n \n {foreach from=$lineItems item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}
{$line.title}{$line.qty}{$line.unit_price|crmMoney:$currency}{$line.unit_price*$line.qty|crmMoney:$currency}{$line.tax_rate|string_format:\"%.2f\"}%{$line.tax_amount|crmMoney:$currency}\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n
\n
\n {ts} Amount before Tax : {/ts}\n \n {$amount-$totalTaxAmount|crmMoney:$currency}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Amount{/ts}\n \n {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n
\n {ts}Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {contribution.trxn_id}\n
\n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by visiting this web page.{/ts}\n {/if}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page.{/ts}\n
\n {$soft_credit_type}\n
\n {$label}\n \n {$value}\n
\n {$softCreditType}\n
\n {$label}\n \n {$value}\n
\n {ts}Personal Campaign Page{/ts}\n
\n {ts}Display In Honor Roll{/ts}\n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n
\n {ts}Nickname{/ts}\n \n {$pcp_roll_nickname}\n
\n {ts}Personal Note{/ts}\n \n {$pcp_personal_note}\n
\n {$onBehalfProfile_grouptitle}\n
\n {$onBehalfName}\n \n {$onBehalfValue}\n
\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Registered Email{/ts}\n
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts}Premium Information{/ts}\n
\n {$product_name}\n
\n {ts}Option{/ts}\n \n {$option}\n
\n {ts}SKU{/ts}\n \n {$sku}\n
\n {ts}Start Date{/ts}\n \n {$start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$end_date|crmDate}\n
\n

{ts}For information about this premium, contact:{/ts}

\n {if !empty($contact_email)}\n

{$contact_email}

\n {/if}\n {if !empty($contact_phone)}\n

{$contact_phone}

\n {/if}\n
\n

{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}

\n
\n {$customPre_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n {$customPost_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n\n\n\n',1,817,'contribution_online_receipt',1,0,0,NULL), - (8,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n {/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if !empty($receipt_text)}\n

{$receipt_text|htmlize}

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n\n {if {contribution.total_amount|boolean}}\n \n \n \n\n {if $isShowLineItems}\n \n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n\n {/if}\n {if $isShowTax}\n \n \n \n \n {/if}\n \n \n \n \n {else}\n {if {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n \n\n {/if}\n\n {/if}\n\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n \n \n {/if}\n\n {if !empty($is_recur)}\n \n \n \n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n \n \n {/foreach}\n {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n \n \n \n \n \n {if $pcp_roll_nickname}\n \n \n \n \n {/if}\n {if $pcp_personal_note}\n \n \n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($isShare)}\n \n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {elseif !empty($email)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n \n \n \n \n {if $option}\n \n \n \n \n {/if}\n {if $sku}\n \n \n \n \n {/if}\n {if $start_date}\n \n \n \n \n {/if}\n {if $end_date}\n \n \n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n
\n {ts}Contribution Information{/ts}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n \n {foreach from=$lineItems item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}
{$line.title}{$line.qty}{$line.unit_price|crmMoney:$currency}{$line.unit_price*$line.qty|crmMoney:$currency}{$line.tax_rate|string_format:\"%.2f\"}%{$line.tax_amount|crmMoney:$currency}\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n
\n
\n {ts} Amount before Tax : {/ts}\n \n {$amount-$totalTaxAmount|crmMoney:$currency}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Amount{/ts}\n \n {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n
\n {ts}Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {contribution.trxn_id}\n
\n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by visiting this web page.{/ts}\n {/if}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page.{/ts}\n
\n {$soft_credit_type}\n
\n {$label}\n \n {$value}\n
\n {$softCreditType}\n
\n {$label}\n \n {$value}\n
\n {ts}Personal Campaign Page{/ts}\n
\n {ts}Display In Honor Roll{/ts}\n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n
\n {ts}Nickname{/ts}\n \n {$pcp_roll_nickname}\n
\n {ts}Personal Note{/ts}\n \n {$pcp_personal_note}\n
\n {$onBehalfProfile_grouptitle}\n
\n {$onBehalfName}\n \n {$onBehalfValue}\n
\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Registered Email{/ts}\n
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts}Premium Information{/ts}\n
\n {$product_name}\n
\n {ts}Option{/ts}\n \n {$option}\n
\n {ts}SKU{/ts}\n \n {$sku}\n
\n {ts}Start Date{/ts}\n \n {$start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$end_date|crmDate}\n
\n

{ts}For information about this premium, contact:{/ts}

\n {if !empty($contact_email)}\n

{$contact_email}

\n {/if}\n {if !empty($contact_phone)}\n

{$contact_phone}

\n {/if}\n
\n

{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}

\n
\n {$customPre_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n {$customPost_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n\n\n\n',1,817,'contribution_online_receipt',0,1,0,NULL), + (1,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n \n \n \n \n {if !empty($isCaseActivity)}\n \n \n \n \n {if !empty($manageCaseURL)}\n \n \n \n {/if}\n {/if}\n {if !empty($editActURL)}\n \n \n \n {/if}\n {if !empty($viewActURL)}\n \n \n \n {/if}\n {foreach from=$activity.fields item=field}\n \n \n \n \n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n \n \n \n {foreach from=$customGroup item=field}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n
\n {ts}Activity Summary{/ts} - {$activityTypeName}\n
\n {ts}Your Case Role(s){/ts}\n \n {$contact.role|default:\'\'}\n
\n {ts}Manage Case{/ts}\n
\n {ts}Edit activity{/ts}\n
\n {ts}View activity{/ts}\n
\n {$field.label}\n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n
\n {$customGroupName}\n
\n {$field.label}\n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n
\n
\n\n\n',1,814,'case_activity',1,0,0,NULL), + (2,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n \n \n \n \n {if !empty($isCaseActivity)}\n \n \n \n \n {if !empty($manageCaseURL)}\n \n \n \n {/if}\n {/if}\n {if !empty($editActURL)}\n \n \n \n {/if}\n {if !empty($viewActURL)}\n \n \n \n {/if}\n {foreach from=$activity.fields item=field}\n \n \n \n \n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n \n \n \n {foreach from=$customGroup item=field}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n
\n {ts}Activity Summary{/ts} - {$activityTypeName}\n
\n {ts}Your Case Role(s){/ts}\n \n {$contact.role|default:\'\'}\n
\n {ts}Manage Case{/ts}\n
\n {ts}Edit activity{/ts}\n
\n {ts}View activity{/ts}\n
\n {$field.label}\n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n
\n {$customGroupName}\n
\n {$field.label}\n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n
\n
\n\n\n',1,814,'case_activity',0,1,0,NULL), + (3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n {if $receiptMessage}\n \n \n \n {/if}\n
\n

{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}

\n

{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Organization Name{/ts}\n \n {$onBehalfName}\n
\n {ts}Organization Email{/ts}\n \n {$onBehalfEmail}\n
\n {ts}Organization Contact ID{/ts}\n \n {$onBehalfID}\n
\n
\n

{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}

\n
\n \n \n \n \n \n \n \n
\n {ts}Copy of Contribution Receipt{/ts}\n
\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n
\n
\n\n\n',1,815,'contribution_dupalert',1,0,0,NULL), + (4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n {if $receiptMessage}\n \n \n \n {/if}\n
\n

{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}

\n

{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Organization Name{/ts}\n \n {$onBehalfName}\n
\n {ts}Organization Email{/ts}\n \n {$onBehalfEmail}\n
\n {ts}Organization Contact ID{/ts}\n \n {$onBehalfID}\n
\n
\n

{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}

\n
\n \n \n \n \n \n \n \n
\n {ts}Copy of Contribution Receipt{/ts}\n
\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n
\n
\n\n\n',1,815,'contribution_dupalert',0,1,0,NULL), + (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

\n {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n

\n
\n \n \n \n \n \n \n \n \n \n {if \'{contribution.financial_type_id}\'}\n \n \n {/if}\n \n\n {if $isShowLineItems}\n \n \n \n\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n\n {if $isShowTax}\n \n \n \n \n {/if}\n\n \n \n \n \n\n {if \'{contribution.receive_date}\'}\n \n \n \n \n {/if}\n\n {if \'{contribution.receipt_date}\'}\n \n \n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n \n \n {if \'{contribution.check_number}\'}\n \n \n \n \n {/if}\n {/if}\n\n {if \'{contribution.trxn_id}\'}\n \n \n \n \n {/if}\n\n {if !empty($ccContribution)}\n \n \n \n \n \n \n \n \n \n \n \n \n {/if}\n\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($formValues.product_name)}\n \n \n \n \n \n \n {if $formValues.product_option}\n \n \n \n \n {/if}\n {if $formValues.product_sku}\n \n \n \n \n {/if}\n {if !empty($fulfilled_date)}\n \n \n \n \n {/if}\n {/if}\n\n
\n {ts}Contribution Information{/ts}\n
\n {ts}Contributor Name{/ts}\n \n {contact.display_name}\n
\n {ts}Financial Type{/ts}\n \n {contribution.financial_type_id:label}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n \n {foreach from=$lineItems item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}
\n {$line.title}\n \n {$line.qty}\n \n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n \n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n
\n
\n {ts} Amount before Tax : {/ts}\n \n {contribution.tax_exclusive_amount}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Contribution Date{/ts}\n \n {contribution.receive_date|crmDate:\"shortdate\"}\n
\n {ts}Receipt Date{/ts}\n \n {contribution.receipt_date|crmDate:\"shortdate\"}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {contribution.check_number}\n
\n {ts}Transaction ID{/ts}\n \n {contribution.trxn_id}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {$softCreditType}\n
\n {$label}\n \n {$value}\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n {ts}Premium Information{/ts}\n
\n {$formValues.product_name}\n
\n {ts}Option{/ts}\n \n {$formValues.product_option}\n
\n {ts}SKU{/ts}\n \n {$formValues.product_sku}\n
\n {ts}Sent{/ts}\n \n {$fulfilled_date|truncate:10:\'\'|crmDate}\n
\n
\n\n\n\n',1,816,'contribution_offline_receipt',1,0,0,NULL), + (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

\n {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n

\n
\n \n \n \n \n \n \n \n \n \n {if \'{contribution.financial_type_id}\'}\n \n \n {/if}\n \n\n {if $isShowLineItems}\n \n \n \n\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n\n {if $isShowTax}\n \n \n \n \n {/if}\n\n \n \n \n \n\n {if \'{contribution.receive_date}\'}\n \n \n \n \n {/if}\n\n {if \'{contribution.receipt_date}\'}\n \n \n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n \n \n {if \'{contribution.check_number}\'}\n \n \n \n \n {/if}\n {/if}\n\n {if \'{contribution.trxn_id}\'}\n \n \n \n \n {/if}\n\n {if !empty($ccContribution)}\n \n \n \n \n \n \n \n \n \n \n \n \n {/if}\n\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($formValues.product_name)}\n \n \n \n \n \n \n {if $formValues.product_option}\n \n \n \n \n {/if}\n {if $formValues.product_sku}\n \n \n \n \n {/if}\n {if !empty($fulfilled_date)}\n \n \n \n \n {/if}\n {/if}\n\n
\n {ts}Contribution Information{/ts}\n
\n {ts}Contributor Name{/ts}\n \n {contact.display_name}\n
\n {ts}Financial Type{/ts}\n \n {contribution.financial_type_id:label}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n \n {foreach from=$lineItems item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}
\n {$line.title}\n \n {$line.qty}\n \n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n \n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n
\n
\n {ts} Amount before Tax : {/ts}\n \n {contribution.tax_exclusive_amount}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Contribution Date{/ts}\n \n {contribution.receive_date|crmDate:\"shortdate\"}\n
\n {ts}Receipt Date{/ts}\n \n {contribution.receipt_date|crmDate:\"shortdate\"}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {contribution.check_number}\n
\n {ts}Transaction ID{/ts}\n \n {contribution.trxn_id}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {$softCreditType}\n
\n {$label}\n \n {$value}\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n {ts}Premium Information{/ts}\n
\n {$formValues.product_name}\n
\n {ts}Option{/ts}\n \n {$formValues.product_option}\n
\n {ts}SKU{/ts}\n \n {$formValues.product_sku}\n
\n {ts}Sent{/ts}\n \n {$fulfilled_date|truncate:10:\'\'|crmDate}\n
\n
\n\n\n\n',1,816,'contribution_offline_receipt',0,1,0,NULL), + (7,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n {/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if !empty($receipt_text)}\n

{$receipt_text|htmlize}

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n\n {if {contribution.total_amount|boolean}}\n \n \n \n\n {if $isShowLineItems}\n \n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n\n {/if}\n {if $isShowTax}\n \n \n \n \n {/if}\n \n \n \n \n {else}\n {if {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n \n\n {/if}\n\n {/if}\n\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n \n \n {/if}\n\n {if !empty($is_recur)}\n \n \n \n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n \n \n {/foreach}\n {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n \n \n \n \n \n {if $pcp_roll_nickname}\n \n \n \n \n {/if}\n {if $pcp_personal_note}\n \n \n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if {contribution.contribution_page_id.is_share|boolean}}\n \n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {elseif !empty($email)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n \n \n \n \n {if $option}\n \n \n \n \n {/if}\n {if $sku}\n \n \n \n \n {/if}\n {if $start_date}\n \n \n \n \n {/if}\n {if $end_date}\n \n \n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n
\n {ts}Contribution Information{/ts}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n \n {foreach from=$lineItems item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}
{$line.title}{$line.qty}{$line.unit_price|crmMoney:$currency}{$line.unit_price*$line.qty|crmMoney:$currency}{$line.tax_rate|string_format:\"%.2f\"}%{$line.tax_amount|crmMoney:$currency}\n {$line.line_total_inclusive|crmMoney:$currency}\n
\n
\n {ts} Amount before Tax : {/ts}\n \n {$amount-$totalTaxAmount|crmMoney:$currency}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Amount{/ts}\n \n {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n
\n {ts}Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {contribution.trxn_id}\n
\n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by visiting this web page.{/ts}\n {/if}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page.{/ts}\n
\n {$soft_credit_type}\n
\n {$label}\n \n {$value}\n
\n {$softCreditType}\n
\n {$label}\n \n {$value}\n
\n {ts}Personal Campaign Page{/ts}\n
\n {ts}Display In Honor Roll{/ts}\n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n
\n {ts}Nickname{/ts}\n \n {$pcp_roll_nickname}\n
\n {ts}Personal Note{/ts}\n \n {$pcp_personal_note}\n
\n {$onBehalfProfile_grouptitle}\n
\n {$onBehalfName}\n \n {$onBehalfValue}\n
\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Registered Email{/ts}\n
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts}Premium Information{/ts}\n
\n {$product_name}\n
\n {ts}Option{/ts}\n \n {$option}\n
\n {ts}SKU{/ts}\n \n {$sku}\n
\n {ts}Start Date{/ts}\n \n {$start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$end_date|crmDate}\n
\n

{ts}For information about this premium, contact:{/ts}

\n {if !empty($contact_email)}\n

{$contact_email}

\n {/if}\n {if !empty($contact_phone)}\n

{$contact_phone}

\n {/if}\n
\n

{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}

\n
\n {$customPre_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n {$customPost_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n\n\n\n',1,817,'contribution_online_receipt',1,0,0,NULL), + (8,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total_inclusive|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n {/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if !empty($receipt_text)}\n

{$receipt_text|htmlize}

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n\n {if {contribution.total_amount|boolean}}\n \n \n \n\n {if $isShowLineItems}\n \n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n\n {/if}\n {if $isShowTax}\n \n \n \n \n {/if}\n \n \n \n \n {else}\n {if {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n \n\n {/if}\n\n {/if}\n\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n \n \n {/if}\n\n {if !empty($is_recur)}\n \n \n \n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n \n \n {/foreach}\n {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n \n \n \n \n \n {if $pcp_roll_nickname}\n \n \n \n \n {/if}\n {if $pcp_personal_note}\n \n \n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if {contribution.contribution_page_id.is_share|boolean}}\n \n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {elseif !empty($email)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n \n \n \n \n {if $option}\n \n \n \n \n {/if}\n {if $sku}\n \n \n \n \n {/if}\n {if $start_date}\n \n \n \n \n {/if}\n {if $end_date}\n \n \n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n
\n {ts}Contribution Information{/ts}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n \n {foreach from=$lineItems item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}
{$line.title}{$line.qty}{$line.unit_price|crmMoney:$currency}{$line.unit_price*$line.qty|crmMoney:$currency}{$line.tax_rate|string_format:\"%.2f\"}%{$line.tax_amount|crmMoney:$currency}\n {$line.line_total_inclusive|crmMoney:$currency}\n
\n
\n {ts} Amount before Tax : {/ts}\n \n {$amount-$totalTaxAmount|crmMoney:$currency}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Amount{/ts}\n \n {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n
\n {ts}Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {contribution.trxn_id}\n
\n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by visiting this web page.{/ts}\n {/if}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page.{/ts}\n
\n {$soft_credit_type}\n
\n {$label}\n \n {$value}\n
\n {$softCreditType}\n
\n {$label}\n \n {$value}\n
\n {ts}Personal Campaign Page{/ts}\n
\n {ts}Display In Honor Roll{/ts}\n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n
\n {ts}Nickname{/ts}\n \n {$pcp_roll_nickname}\n
\n {ts}Personal Note{/ts}\n \n {$pcp_personal_note}\n
\n {$onBehalfProfile_grouptitle}\n
\n {$onBehalfName}\n \n {$onBehalfValue}\n
\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Registered Email{/ts}\n
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts}Premium Information{/ts}\n
\n {$product_name}\n
\n {ts}Option{/ts}\n \n {$option}\n
\n {ts}SKU{/ts}\n \n {$sku}\n
\n {ts}Start Date{/ts}\n \n {$start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$end_date|crmDate}\n
\n

{ts}For information about this premium, contact:{/ts}

\n {if !empty($contact_email)}\n

{$contact_email}

\n {/if}\n {if !empty($contact_phone)}\n

{$contact_phone}

\n {/if}\n
\n

{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}

\n
\n {$customPre_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n {$customPost_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n\n\n\n',1,817,'contribution_online_receipt',0,1,0,NULL), (9,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','\n\n \n \n \n \n \n
\n {if $config->empoweredBy}\n \n \n \n \n
\n {/if}\n \n {if $email_comment}\n \n \n \n {/if}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{$email_comment}
{ts}INVOICE{/ts}{ts}Invoice Date:{/ts}{domain.name}
{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}{$invoice_date}\n {domain.street_address}\n {domain.supplemental_address_1}\n
{$street_address} {$supplemental_address_1}{ts}Invoice Number:{/ts}\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n
{$supplemental_address_2} {$stateProvinceAbbreviation}{contribution.invoice_number}\n {domain.city}\n {domain.postal_code}\n
{$city} {$postal_code}{ts}Reference:{/ts}{domain.country_id:label}
{$country}{contribution.source}{domain.email}
{domain.phone}
\n\n \n \n \n \n \n \n \n \n {foreach from=$lineItems item=line}\n \n \n \n \n {if $line.tax_amount != \'\'}\n \n {else}\n \n {/if}\n \n \n {/foreach}\n \n \n \n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n \n \n \n {/if}\n {/foreach}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n \n \n \n \n {/if}\n
{ts}Description{/ts}{ts}Quantity{/ts}{ts}Unit Price{/ts}{domain.tax_term}{ts 1=$currency}Amount %1{/ts}
\n {$line.title}\n {$line.qty}{$line.unit_price|crmMoney:$currency}{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}{$line.line_total|crmMoney:\'{contribution.currency}\'}
{ts}Sub Total{/ts}{$subTotal|crmMoney:$currency}
{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
{ts 1=$currency}TOTAL %1{/ts}{$amount|crmMoney:$currency}
\n {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n {ts}Amount Credited{/ts}\n {else}\n {ts}Amount Paid{/ts}\n {/if}\n {$amountPaid|crmMoney:$currency}

{ts}AMOUNT DUE:{/ts}{$amountDue|crmMoney:$currency}
{ts 1=$dueDate}DUE DATE: %1{/ts}
\n\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n \n \n \n \n
\n\n \n \n \n \n \n
{ts}PAYMENT ADVICE{/ts}

\n {ts}To:{/ts}
\n {domain.name}
\n {domain.street_address} {domain.supplemental_address_1}
\n {domain.supplemental_address_2} {domain.state_province_id:label}
\n {domain.city} {domain.postal_code}
\n {domain.country_id:label}
\n {domain.email}
\n {domain.phone}
\n
\n

{$notes}\n
\n \n \n \n \n \n \n \n \n \n \n {if $is_pay_later == 1}\n \n \n \n \n {else}\n \n \n \n \n {/if}\n \n \n \n \n \n \n \n
{ts}Customer:{/ts}{contact.display_name}
{ts}Invoice Number:{/ts}{contribution.invoice_number}

{ts}Amount Due:{/ts}{$amount|crmMoney:$currency}
{ts}Amount Due:{/ts}{$amountDue|crmMoney:$currency}
{ts}Due Date:{/ts}{$dueDate}

\n
\n {/if}\n\n {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n {if $config->empoweredBy}\n \n \n \n \n
\n {/if}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{ts}CREDIT NOTE{/ts}{ts}Date:{/ts}{domain.name}
{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}{$invoice_date}\n {domain.street_address}\n {domain.supplemental_address_1}\n
{$street_address} {$supplemental_address_1}{ts}Credit Note Number:{/ts}\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n
{$supplemental_address_2} {$stateProvinceAbbreviation}{contribution.creditnote_id}\n {domain.city}\n {domain.postal_code}\n
{$city} {$postal_code}{ts}Reference:{/ts}\n {domain.country_id:label}\n
{contribution.source}\n {domain.email}\n
\n {domain.phone}\n
\n\n \n \n \n \n
\n \n \n \n \n \n \n \n \n {foreach from=$lineItems item=line key=index}\n \n \n \n \n \n {if $line.tax_amount != \'\'}\n \n {else}\n \n {/if}\n \n \n {/foreach}\n \n \n \n \n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n \n \n \n {/if}\n {/foreach}\n \n \n \n \n \n \n \n \n \n {if \'{contribution.is_pay_later}\' == 0}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/if}\n


\n \n \n \n \n \n \n \n
{ts}Description{/ts}{ts}Quantity{/ts}{ts}Unit Price{/ts}{domain.tax_term}{ts 1=$currency}Amount %1{/ts}

\n {$line.title}\n {$line.qty}{$line.unit_price|crmMoney:$currency}{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}{$line.line_total|crmMoney:\'{contribution.currency}\'}

{ts}Sub Total{/ts}{$subTotal|crmMoney:$currency}
{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}

{ts 1=$currency}TOTAL %1{/ts}{$amount|crmMoney:$currency}
{ts}LESS Credit to invoice(s){/ts}{$amount|crmMoney:$currency}

{ts}REMAINING CREDIT{/ts}{$amountDue|crmMoney:$currency}
\n
\n\n \n \n \n \n
\n\n \n \n \n \n \n
{ts}CREDIT ADVICE{/ts}

{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{ts}Customer:{/ts}{contact.display_name}
{ts}Credit Note#:{/ts}{contribution.creditnote_id}

{ts}Credit Amount:{/ts}{$amount|crmMoney:$currency}
\n
\n {/if}\n\n
\n \n\n',1,818,'contribution_invoice_receipt',1,0,0,NULL), (10,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','\n\n \n \n \n \n \n
\n {if $config->empoweredBy}\n \n \n \n \n
\n {/if}\n \n {if $email_comment}\n \n \n \n {/if}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{$email_comment}
{ts}INVOICE{/ts}{ts}Invoice Date:{/ts}{domain.name}
{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}{$invoice_date}\n {domain.street_address}\n {domain.supplemental_address_1}\n
{$street_address} {$supplemental_address_1}{ts}Invoice Number:{/ts}\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n
{$supplemental_address_2} {$stateProvinceAbbreviation}{contribution.invoice_number}\n {domain.city}\n {domain.postal_code}\n
{$city} {$postal_code}{ts}Reference:{/ts}{domain.country_id:label}
{$country}{contribution.source}{domain.email}
{domain.phone}
\n\n \n \n \n \n \n \n \n \n {foreach from=$lineItems item=line}\n \n \n \n \n {if $line.tax_amount != \'\'}\n \n {else}\n \n {/if}\n \n \n {/foreach}\n \n \n \n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n \n \n \n {/if}\n {/foreach}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n \n \n \n \n {/if}\n
{ts}Description{/ts}{ts}Quantity{/ts}{ts}Unit Price{/ts}{domain.tax_term}{ts 1=$currency}Amount %1{/ts}
\n {$line.title}\n {$line.qty}{$line.unit_price|crmMoney:$currency}{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}{$line.line_total|crmMoney:\'{contribution.currency}\'}
{ts}Sub Total{/ts}{$subTotal|crmMoney:$currency}
{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
{ts 1=$currency}TOTAL %1{/ts}{$amount|crmMoney:$currency}
\n {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n {ts}Amount Credited{/ts}\n {else}\n {ts}Amount Paid{/ts}\n {/if}\n {$amountPaid|crmMoney:$currency}

{ts}AMOUNT DUE:{/ts}{$amountDue|crmMoney:$currency}
{ts 1=$dueDate}DUE DATE: %1{/ts}
\n\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n \n \n \n \n
\n\n \n \n \n \n \n
{ts}PAYMENT ADVICE{/ts}

\n {ts}To:{/ts}
\n {domain.name}
\n {domain.street_address} {domain.supplemental_address_1}
\n {domain.supplemental_address_2} {domain.state_province_id:label}
\n {domain.city} {domain.postal_code}
\n {domain.country_id:label}
\n {domain.email}
\n {domain.phone}
\n
\n

{$notes}\n
\n \n \n \n \n \n \n \n \n \n \n {if $is_pay_later == 1}\n \n \n \n \n {else}\n \n \n \n \n {/if}\n \n \n \n \n \n \n \n
{ts}Customer:{/ts}{contact.display_name}
{ts}Invoice Number:{/ts}{contribution.invoice_number}

{ts}Amount Due:{/ts}{$amount|crmMoney:$currency}
{ts}Amount Due:{/ts}{$amountDue|crmMoney:$currency}
{ts}Due Date:{/ts}{$dueDate}

\n
\n {/if}\n\n {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n {if $config->empoweredBy}\n \n \n \n \n
\n {/if}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{ts}CREDIT NOTE{/ts}{ts}Date:{/ts}{domain.name}
{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}{$invoice_date}\n {domain.street_address}\n {domain.supplemental_address_1}\n
{$street_address} {$supplemental_address_1}{ts}Credit Note Number:{/ts}\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n
{$supplemental_address_2} {$stateProvinceAbbreviation}{contribution.creditnote_id}\n {domain.city}\n {domain.postal_code}\n
{$city} {$postal_code}{ts}Reference:{/ts}\n {domain.country_id:label}\n
{contribution.source}\n {domain.email}\n
\n {domain.phone}\n
\n\n \n \n \n \n
\n \n \n \n \n \n \n \n \n {foreach from=$lineItems item=line key=index}\n \n \n \n \n \n {if $line.tax_amount != \'\'}\n \n {else}\n \n {/if}\n \n \n {/foreach}\n \n \n \n \n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n \n \n \n {/if}\n {/foreach}\n \n \n \n \n \n \n \n \n \n {if \'{contribution.is_pay_later}\' == 0}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/if}\n


\n \n \n \n \n \n \n \n
{ts}Description{/ts}{ts}Quantity{/ts}{ts}Unit Price{/ts}{domain.tax_term}{ts 1=$currency}Amount %1{/ts}

\n {$line.title}\n {$line.qty}{$line.unit_price|crmMoney:$currency}{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}{$line.line_total|crmMoney:\'{contribution.currency}\'}

{ts}Sub Total{/ts}{$subTotal|crmMoney:$currency}
{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}

{ts 1=$currency}TOTAL %1{/ts}{$amount|crmMoney:$currency}
{ts}LESS Credit to invoice(s){/ts}{$amount|crmMoney:$currency}

{ts}REMAINING CREDIT{/ts}{$amountDue|crmMoney:$currency}
\n
\n\n \n \n \n \n
\n\n \n \n \n \n \n
{ts}CREDIT ADVICE{/ts}

{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{ts}Customer:{/ts}{contact.display_name}
{ts}Credit Note#:{/ts}{contribution.creditnote_id}

{ts}Credit Amount:{/ts}{$amount|crmMoney:$currency}
\n
\n {/if}\n\n
\n \n\n',1,818,'contribution_invoice_receipt',0,1,0,NULL), - (11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n \n \n \n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n \n \n \n {if $cancelSubscriptionUrl}\n \n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {else}\n \n \n \n {if $cancelSubscriptionUrl}\n \n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n \n {/if}\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n \n \n \n {else}\n \n \n \n \n \n \n\n {/if}\n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n
 
\n

{ts}Thanks for your auto renew membership sign-up.{/ts}

\n

{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}

\n
\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n
\n

{ts}Thanks for your recurring contribution sign-up.{/ts}

\n

{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.

\n

{ts}Start Date{/ts}: {$recur_start_date|crmDate}

\n
\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by visiting this web page.{/ts}\n
\n

{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}

\n
\n

{ts}Your recurring contribution term has ended.{/ts}

\n

{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n
\n {ts}Start Date{/ts}\n \n {$recur_start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$recur_end_date|crmDate}\n
\n
\n\n\n\n',1,819,'contribution_recurring_notify',1,0,0,NULL), - (12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n \n \n \n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n \n \n \n {if $cancelSubscriptionUrl}\n \n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {else}\n \n \n \n {if $cancelSubscriptionUrl}\n \n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n \n {/if}\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n \n \n \n {else}\n \n \n \n \n \n \n\n {/if}\n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n
 
\n

{ts}Thanks for your auto renew membership sign-up.{/ts}

\n

{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}

\n
\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n
\n

{ts}Thanks for your recurring contribution sign-up.{/ts}

\n

{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.

\n

{ts}Start Date{/ts}: {$recur_start_date|crmDate}

\n
\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by visiting this web page.{/ts}\n
\n

{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}

\n
\n

{ts}Your recurring contribution term has ended.{/ts}

\n

{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n
\n {ts}Start Date{/ts}\n \n {$recur_start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$recur_end_date|crmDate}\n
\n
\n\n\n\n',1,819,'contribution_recurring_notify',0,1,0,NULL), - (13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}

\n
\n\n\n\n',1,820,'contribution_recurring_cancelled',1,0,0,NULL), - (14,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}

\n
\n\n\n\n',1,820,'contribution_recurring_cancelled',0,1,0,NULL), - (15,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n
\n\n\n\n',1,821,'contribution_recurring_billing',1,0,0,NULL), - (16,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n
\n\n\n\n',1,821,'contribution_recurring_billing',0,1,0,NULL), - (17,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Your recurring contribution has been updated as requested:{/ts}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.

\n\n

{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}

\n
\n\n\n\n',1,822,'contribution_recurring_edit',1,0,0,NULL), - (18,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Your recurring contribution has been updated as requested:{/ts}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.

\n\n

{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}

\n
\n\n\n\n',1,822,'contribution_recurring_edit',0,1,0,NULL), - (19,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n {ts}Personal Campaign Page Notification{/ts}\n
\n {ts}Action{/ts}:\n \n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n
\n {ts}Personal Campaign Page Title{/ts}\n \n {$pcpTitle}\n
\n {ts}Current Status{/ts}\n \n {$pcpStatus}\n
\n {ts}View Page{/ts}\n
\n {ts}Supporter{/ts}\n \n {$supporterName}\n
\n {ts}Linked to Contribution Page{/ts}\n \n {$contribPageTitle}\n
\n {ts}Manage Personal Campaign Pages{/ts}\n
\n
\n\n\n\n',1,823,'pcp_notify',1,0,0,NULL), - (20,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n {ts}Personal Campaign Page Notification{/ts}\n
\n {ts}Action{/ts}:\n \n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n
\n {ts}Personal Campaign Page Title{/ts}\n \n {$pcpTitle}\n
\n {ts}Current Status{/ts}\n \n {$pcpStatus}\n
\n {ts}View Page{/ts}\n
\n {ts}Supporter{/ts}\n \n {$supporterName}\n
\n {ts}Linked to Contribution Page{/ts}\n \n {$contribPageTitle}\n
\n {ts}Manage Personal Campaign Pages{/ts}\n
\n
\n\n\n\n',1,823,'pcp_notify',0,1,0,NULL), + (11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments} {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n \n \n \n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n \n \n \n {if $cancelSubscriptionUrl}\n \n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {else}\n \n \n \n {if $cancelSubscriptionUrl}\n \n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n \n {/if}\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n \n \n \n {else}\n \n \n \n \n \n \n\n {/if}\n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n
 
\n

{ts}Thanks for your auto renew membership sign-up.{/ts}

\n

{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}

\n
\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n
\n

{ts}Thanks for your recurring contribution sign-up.{/ts}

\n

{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments}{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.

\n

{ts}Start Date{/ts}: {$recur_start_date|crmDate}

\n
\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by visiting this web page.{/ts}\n
\n

{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}

\n
\n

{ts}Your recurring contribution term has ended.{/ts}

\n

{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n
\n {ts}Start Date{/ts}\n \n {$recur_start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$recur_end_date|crmDate}\n
\n
\n\n\n\n',1,819,'contribution_recurring_notify',1,0,0,NULL), + (12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments} {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n \n \n \n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n \n \n \n {if $cancelSubscriptionUrl}\n \n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {else}\n \n \n \n {if $cancelSubscriptionUrl}\n \n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n \n {/if}\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n \n \n \n {else}\n \n \n \n \n \n \n\n {/if}\n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n
 
\n

{ts}Thanks for your auto renew membership sign-up.{/ts}

\n

{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}

\n
\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n
\n

{ts}Thanks for your recurring contribution sign-up.{/ts}

\n

{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments}{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.

\n

{ts}Start Date{/ts}: {$recur_start_date|crmDate}

\n
\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page.{/ts}\n
\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by visiting this web page.{/ts}\n
\n

{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}

\n
\n

{ts}Your recurring contribution term has ended.{/ts}

\n

{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n
\n {ts}Start Date{/ts}\n \n {$recur_start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$recur_end_date|crmDate}\n
\n
\n\n\n\n',1,819,'contribution_recurring_notify',0,1,0,NULL), + (13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}

\n
\n\n\n\n',1,820,'contribution_recurring_cancelled',1,0,0,NULL), + (14,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}

\n
\n\n\n\n',1,820,'contribution_recurring_cancelled',0,1,0,NULL), + (15,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n
\n\n\n\n',1,821,'contribution_recurring_billing',1,0,0,NULL), + (16,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n
\n\n\n\n',1,821,'contribution_recurring_billing',0,1,0,NULL), + (17,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Your recurring contribution has been updated as requested:{/ts}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.

\n\n

{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}

\n
\n\n\n\n',1,822,'contribution_recurring_edit',1,0,0,NULL), + (18,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Your recurring contribution has been updated as requested:{/ts}\n

{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.

\n\n

{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}

\n
\n\n\n\n',1,822,'contribution_recurring_edit',0,1,0,NULL), + (19,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n {ts}Personal Campaign Page Notification{/ts}\n
\n {ts}Action{/ts}:\n \n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n
\n {ts}Personal Campaign Page Title{/ts}\n \n {$pcpTitle}\n
\n {ts}Current Status{/ts}\n \n {$pcpStatus}\n
\n {ts}View Page{/ts}\n
\n {ts}Supporter{/ts}\n \n {$supporterName}\n
\n {ts}Linked to Contribution Page{/ts}\n \n {$contribPageTitle}\n
\n {ts}Manage Personal Campaign Pages{/ts}\n
\n
\n\n\n\n',1,823,'pcp_notify',1,0,0,NULL), + (20,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n {ts}Personal Campaign Page Notification{/ts}\n
\n {ts}Action{/ts}:\n \n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n
\n {ts}Personal Campaign Page Title{/ts}\n \n {$pcpTitle}\n
\n {ts}Current Status{/ts}\n \n {$pcpStatus}\n
\n {ts}View Page{/ts}\n
\n {ts}Supporter{/ts}\n \n {$supporterName}\n
\n {ts}Linked to Contribution Page{/ts}\n \n {$contribPageTitle}\n
\n {ts}Manage Personal Campaign Pages{/ts}\n
\n
\n\n\n\n',1,823,'pcp_notify',0,1,0,NULL), (21,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{/if}\n','\n\n\n \n \n\n\n\n \n\n \n \n \n\n \n\n \n \n \n\n
\n\n

{ts}Your Personal Campaign Page{/ts}

\n\n {if $pcpStatus eq \'Approved\'}\n\n

{ts}Your personal campaign page has been approved and is now live.{/ts}

\n

{ts}Whenever you want to preview, update or promote your page{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Go to your page{/ts}
  4. \n
\n

{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}

\n\n {if $isTellFriendEnabled}\n

{ts}After logging in, you can use this form to promote your fundraising page{/ts}

\n {/if}\n\n {if $pcpNotifyEmailAddress}\n

{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}

\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n

{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}

\n {if $pcpNotifyEmailAddress}\n

{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}

\n {/if}\n\n {/if}\n\n
\n\n\n\n',1,824,'pcp_status_change',1,0,0,NULL), (22,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{/if}\n','\n\n\n \n \n\n\n\n \n\n \n \n \n\n \n\n \n \n \n\n
\n\n

{ts}Your Personal Campaign Page{/ts}

\n\n {if $pcpStatus eq \'Approved\'}\n\n

{ts}Your personal campaign page has been approved and is now live.{/ts}

\n

{ts}Whenever you want to preview, update or promote your page{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Go to your page{/ts}
  4. \n
\n

{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}

\n\n {if $isTellFriendEnabled}\n

{ts}After logging in, you can use this form to promote your fundraising page{/ts}

\n {/if}\n\n {if $pcpNotifyEmailAddress}\n

{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}

\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n

{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}

\n {if $pcpNotifyEmailAddress}\n

{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}

\n {/if}\n\n {/if}\n\n
\n\n\n\n',1,824,'pcp_status_change',0,1,0,NULL), - (23,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n {if $pcpStatus eq \'Approved\'}\n\n \n \n \n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n \n \n \n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n \n \n \n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Promoting Your Page{/ts}\n
\n {if $isTellFriendEnabled}\n

{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Click this link and follow the prompts{/ts}
  4. \n
\n {else}\n

{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}

\n {/if}\n
\n {ts}Managing Your Page{/ts}\n
\n

{ts}Whenever you want to preview, update or promote your page{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Go to your page{/ts}
  4. \n
\n

{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}

\n
\n
\n

{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}

\n

{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}

\n

{ts}You can still preview your page prior to approval{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Click this link{/ts}
  4. \n
\n
\n

{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}

\n
\n\n\n\n',1,825,'pcp_supporter_notify',1,0,0,NULL), - (24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n {if $pcpStatus eq \'Approved\'}\n\n \n \n \n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n \n \n \n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n \n \n \n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Promoting Your Page{/ts}\n
\n {if $isTellFriendEnabled}\n

{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Click this link and follow the prompts{/ts}
  4. \n
\n {else}\n

{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}

\n {/if}\n
\n {ts}Managing Your Page{/ts}\n
\n

{ts}Whenever you want to preview, update or promote your page{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Go to your page{/ts}
  4. \n
\n

{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}

\n
\n
\n

{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}

\n

{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}

\n

{ts}You can still preview your page prior to approval{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Click this link{/ts}
  4. \n
\n
\n

{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}

\n
\n\n\n\n',1,825,'pcp_supporter_notify',0,1,0,NULL), - (25,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}You have received a donation at your personal page{/ts}: {$page_title}

\n

{ts}Your fundraising total has been updated.{/ts}
\n {ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}
\n {if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}
\n {/if}\n

\n \n \n \n \n \n
{ts}Contribution Date{/ts}: {$receive_date|crmDate}
{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}
{ts}Name{/ts}: {$donors_display_name}
{ts}Email{/ts}: {$donors_email}
\n\n\n',1,826,'pcp_owner_notify',1,0,0,NULL), - (26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}You have received a donation at your personal page{/ts}: {$page_title}

\n

{ts}Your fundraising total has been updated.{/ts}
\n {ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}
\n {if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}
\n {/if}\n

\n \n \n \n \n \n
{ts}Contribution Date{/ts}: {$receive_date|crmDate}
{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}
{ts}Name{/ts}: {$donors_display_name}
{ts}Email{/ts}: {$donors_email}
\n\n\n',1,826,'pcp_owner_notify',0,1,0,NULL), - (27,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle }style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle }style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $isRefund}\n

{ts}A refund has been issued based on changes in your registration selections.{/ts}

\n {else}\n

{ts}Below you will find a receipt for this payment.{/ts}

\n {if $paymentsComplete}\n

{ts}Thank you for completing this contribution.{/ts}

\n {/if}\n {/if}\n
\n \n {if $isRefund}\n \n \n \n \n \n \n \n {else}\n \n \n \n \n \n \n \n {/if}\n {if $receive_date}\n \n \n \n \n {/if}\n {if !empty($trxn_id)}\n \n \n \n \n {/if}\n {if !empty($paidBy)}\n \n \n \n \n {/if}\n {if !empty($checkNumber)}\n \n \n \n \n {/if}\n\n \n \n \n {if $totalAmount}\n \n \n \n \n {/if}\n {if $totalPaid}\n \n \n \n \n {/if}\n {if $amountOwed}\n \n \n {* This will be zero after final payment. *}\n \n {/if}\n
{ts}Refund Details{/ts}
\n {ts}This Refund Amount{/ts}\n \n {$refundAmount|crmMoney:$currency}\n
{ts}Payment Details{/ts}
\n {ts}This Payment Amount{/ts}\n \n {$paymentAmount|crmMoney:$currency}\n
\n {ts}Transaction Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Paid By{/ts}\n \n {$paidBy}\n
\n {ts}Check Number{/ts}\n \n {$checkNumber}\n
{ts}Contribution Details{/ts}
\n {ts}Total Fee{/ts}\n \n {$totalAmount|crmMoney:$currency}\n
\n {ts}Total Paid{/ts}\n \n {$totalPaid|crmMoney:$currency}\n
\n {ts}Balance Owed{/ts}\n \n {$amountOwed|crmMoney:$currency}\n
\n\n
\n \n {if !empty($billingName) || !empty($address)}\n \n \n \n \n \n \n {/if}\n {if !empty($credit_card_number)}\n \n \n \n \n \n \n {/if}\n {if $component eq \'event\'}\n \n \n \n \n \n \n\n {if !empty($event.participant_role)}\n \n \n \n \n {/if}\n\n {if !empty($isShowLocation)}\n \n \n \n {/if}\n\n {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n \n \n \n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if} {*phone block close*}\n {/if}\n
\n {ts}Billing Name and Address{/ts}\n
\n {if !empty($billingName)}{$billingName}{/if}
\n {if !empty($address)}{$address|nl2br}{/if}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {$event.participant_role}\n
\n {$location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n
\n\n \n\n',1,827,'payment_or_refund_notification',1,0,0,NULL), - (28,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle }style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle }style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $isRefund}\n

{ts}A refund has been issued based on changes in your registration selections.{/ts}

\n {else}\n

{ts}Below you will find a receipt for this payment.{/ts}

\n {if $paymentsComplete}\n

{ts}Thank you for completing this contribution.{/ts}

\n {/if}\n {/if}\n
\n \n {if $isRefund}\n \n \n \n \n \n \n \n {else}\n \n \n \n \n \n \n \n {/if}\n {if $receive_date}\n \n \n \n \n {/if}\n {if !empty($trxn_id)}\n \n \n \n \n {/if}\n {if !empty($paidBy)}\n \n \n \n \n {/if}\n {if !empty($checkNumber)}\n \n \n \n \n {/if}\n\n \n \n \n {if $totalAmount}\n \n \n \n \n {/if}\n {if $totalPaid}\n \n \n \n \n {/if}\n {if $amountOwed}\n \n \n {* This will be zero after final payment. *}\n \n {/if}\n
{ts}Refund Details{/ts}
\n {ts}This Refund Amount{/ts}\n \n {$refundAmount|crmMoney:$currency}\n
{ts}Payment Details{/ts}
\n {ts}This Payment Amount{/ts}\n \n {$paymentAmount|crmMoney:$currency}\n
\n {ts}Transaction Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Paid By{/ts}\n \n {$paidBy}\n
\n {ts}Check Number{/ts}\n \n {$checkNumber}\n
{ts}Contribution Details{/ts}
\n {ts}Total Fee{/ts}\n \n {$totalAmount|crmMoney:$currency}\n
\n {ts}Total Paid{/ts}\n \n {$totalPaid|crmMoney:$currency}\n
\n {ts}Balance Owed{/ts}\n \n {$amountOwed|crmMoney:$currency}\n
\n\n
\n \n {if !empty($billingName) || !empty($address)}\n \n \n \n \n \n \n {/if}\n {if !empty($credit_card_number)}\n \n \n \n \n \n \n {/if}\n {if $component eq \'event\'}\n \n \n \n \n \n \n\n {if !empty($event.participant_role)}\n \n \n \n \n {/if}\n\n {if !empty($isShowLocation)}\n \n \n \n {/if}\n\n {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n \n \n \n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if} {*phone block close*}\n {/if}\n
\n {ts}Billing Name and Address{/ts}\n
\n {if !empty($billingName)}{$billingName}{/if}
\n {if !empty($address)}{$address|nl2br}{/if}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {$event.participant_role}\n
\n {$location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n
\n\n \n\n',1,827,'payment_or_refund_notification',0,1,0,NULL), - (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{event.title}\n{event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n{ts}Event Contacts:{/ts}\n\n{if {event.loc_block_id.phone_id.phone|boolean}}\n{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.phone_2_id.phone|boolean}}\n{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n\n\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($email)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$email}\n{/if}\n{if !empty($event.is_monetary)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{event.fee_label}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if {event.is_monetary|boolean}}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts}\n{/if}\n{/if}\n---------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount) }{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n{/if}\n{/foreach}\n\n{if !empty($dataArray)}\n{if $totalAmount and $totalTaxAmount}\n{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amount) && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n{if {event.is_monetary|boolean}}\n\n{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{ts}Balance{/ts}: {contribution.balance_amount}\n{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{/if}\n\n{if !empty($pricesetFieldsCount) }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n

{$event.confirm_email_text}

\n {/if}\n\n {if !empty($isOnWaitlist)}\n

{ts}You have been added to the WAIT LIST for this event.{/ts}

\n

{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}

\n {elseif !empty($isRequireApproval)}\n

{ts}Your registration has been submitted.{/ts}

\n

{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}

\n {elseif $is_pay_later}\n

{$pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n \n \n \n \n \n \n \n\n {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n \n \n \n \n {/if}\n\n {if !empty($isShowLocation)}\n \n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n \n \n {/if}\n\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n \n \n {/if}\n\n {/if}\n\n {if {event.is_public|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if $email}\n \n \n \n \n \n \n {/if}\n\n\n {if {event.is_monetary|boolean}}\n\n \n \n \n\n {if !empty($lineItem)}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n \n \n \n {/if}\n\n \n \n \n {/if}\n {/foreach}\n {if !empty($dataArray)}\n {if $totalAmount and $totalTaxAmount}\n \n \n \n \n {/if}\n {foreach from=$dataArray item=value key=priceset}\n \n {if $priceset || $priceset == 0}\n \n \n {/if}\n \n {/foreach}\n {/if}\n {/if}\n\n {if !empty($amount) && !$lineItem}\n {foreach from=$amount item=amnt key=level}\n \n \n \n {/foreach}\n {/if}\n {if {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n {if {event.is_monetary|boolean}}\n {if {contribution.balance_amount|boolean}}\n \n \n \n \n \n \n \n \n {else}\n \n \n \n \n {/if}\n {if !empty($pricesetFieldsCount) }\n \n \n \n \n {/if}\n {if $is_pay_later}\n \n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n \n \n {/if}\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if !empty($financialTypeName)}\n \n \n \n \n {/if}\n\n {if !empty($trxn_id)}\n \n \n \n \n {/if}\n\n {if !empty($paidBy)}\n \n \n \n \n {/if}\n\n {if !empty($checkNumber)}\n \n \n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {event.title}
\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {$event.participant_role}\n
\n {$location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n
\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_id.email}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_2_id.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {ts}Registered Email{/ts}\n
\n {$email}\n
\n {event.fee_label}\n
\n {ts 1=$priceset+1}Participant %1{/ts}\n
\n \n \n \n \n \n {if !empty($dataArray)}\n \n \n \n {/if}\n \n {if !empty($pricesetFieldsCount) }{/if}\n \n {foreach from=$value item=line}\n \n \n \n \n {if !empty($dataArray)}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n {if !empty($pricesetFieldsCount) }\n \n {/if}\n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}SubTotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Total Participants{/ts}
\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}
{$line.description|truncate:30:\"...\"}
{/if}\n
\n {$line.qty}\n \n {$line.unit_price|crmMoney}\n \n {$line.unit_price*$line.qty|crmMoney}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney}\n \n {$line.line_total+$line.tax_amount|crmMoney}\n \n {$line.participant_count}\n
\n
\n {ts}Amount Before Tax:{/ts}\n \n {$totalAmount-$totalTaxAmount|crmMoney}\n
 {$taxTerm} {$priceset|string_format:\"%.2f\"}% {$value|crmMoney:$currency}
\n {$amnt.amount|crmMoney} {$amnt.label}\n
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
{ts}Total Paid{/ts}\n {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n
{ts}Balance{/ts}{contribution.balance_amount}
{ts}Total Amount{/ts}\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n
\n {ts}Total Participants{/ts}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n
\n {$pay_later_receipt}\n
\n {ts}Registration Date{/ts}\n \n {participant.register_date}\n
\n {ts}Transaction Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Financial Type{/ts}\n \n {$financialTypeName}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Paid By{/ts}\n \n {$paidBy}\n
\n {ts}Check Number{/ts}\n \n {$checkNumber}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n
\n\n\n\n',1,828,'event_offline_receipt',1,0,0,NULL), - (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{event.title}\n{event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n{ts}Event Contacts:{/ts}\n\n{if {event.loc_block_id.phone_id.phone|boolean}}\n{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.phone_2_id.phone|boolean}}\n{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n\n\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($email)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$email}\n{/if}\n{if !empty($event.is_monetary)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{event.fee_label}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if {event.is_monetary|boolean}}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts}\n{/if}\n{/if}\n---------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount) }{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n{/if}\n{/foreach}\n\n{if !empty($dataArray)}\n{if $totalAmount and $totalTaxAmount}\n{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amount) && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n{if {event.is_monetary|boolean}}\n\n{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{ts}Balance{/ts}: {contribution.balance_amount}\n{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{/if}\n\n{if !empty($pricesetFieldsCount) }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n

{$event.confirm_email_text}

\n {/if}\n\n {if !empty($isOnWaitlist)}\n

{ts}You have been added to the WAIT LIST for this event.{/ts}

\n

{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}

\n {elseif !empty($isRequireApproval)}\n

{ts}Your registration has been submitted.{/ts}

\n

{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}

\n {elseif $is_pay_later}\n

{$pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n \n \n \n \n \n \n \n\n {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n \n \n \n \n {/if}\n\n {if !empty($isShowLocation)}\n \n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n \n \n {/if}\n\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n \n \n {/if}\n\n {/if}\n\n {if {event.is_public|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if $email}\n \n \n \n \n \n \n {/if}\n\n\n {if {event.is_monetary|boolean}}\n\n \n \n \n\n {if !empty($lineItem)}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n \n \n \n {/if}\n\n \n \n \n {/if}\n {/foreach}\n {if !empty($dataArray)}\n {if $totalAmount and $totalTaxAmount}\n \n \n \n \n {/if}\n {foreach from=$dataArray item=value key=priceset}\n \n {if $priceset || $priceset == 0}\n \n \n {/if}\n \n {/foreach}\n {/if}\n {/if}\n\n {if !empty($amount) && !$lineItem}\n {foreach from=$amount item=amnt key=level}\n \n \n \n {/foreach}\n {/if}\n {if {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n {if {event.is_monetary|boolean}}\n {if {contribution.balance_amount|boolean}}\n \n \n \n \n \n \n \n \n {else}\n \n \n \n \n {/if}\n {if !empty($pricesetFieldsCount) }\n \n \n \n \n {/if}\n {if $is_pay_later}\n \n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n \n \n {/if}\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if !empty($financialTypeName)}\n \n \n \n \n {/if}\n\n {if !empty($trxn_id)}\n \n \n \n \n {/if}\n\n {if !empty($paidBy)}\n \n \n \n \n {/if}\n\n {if !empty($checkNumber)}\n \n \n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {event.title}
\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {$event.participant_role}\n
\n {$location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n
\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_id.email}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_2_id.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {ts}Registered Email{/ts}\n
\n {$email}\n
\n {event.fee_label}\n
\n {ts 1=$priceset+1}Participant %1{/ts}\n
\n \n \n \n \n \n {if !empty($dataArray)}\n \n \n \n {/if}\n \n {if !empty($pricesetFieldsCount) }{/if}\n \n {foreach from=$value item=line}\n \n \n \n \n {if !empty($dataArray)}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n {if !empty($pricesetFieldsCount) }\n \n {/if}\n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}SubTotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Total Participants{/ts}
\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}
{$line.description|truncate:30:\"...\"}
{/if}\n
\n {$line.qty}\n \n {$line.unit_price|crmMoney}\n \n {$line.unit_price*$line.qty|crmMoney}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney}\n \n {$line.line_total+$line.tax_amount|crmMoney}\n \n {$line.participant_count}\n
\n
\n {ts}Amount Before Tax:{/ts}\n \n {$totalAmount-$totalTaxAmount|crmMoney}\n
 {$taxTerm} {$priceset|string_format:\"%.2f\"}% {$value|crmMoney:$currency}
\n {$amnt.amount|crmMoney} {$amnt.label}\n
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
{ts}Total Paid{/ts}\n {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n
{ts}Balance{/ts}{contribution.balance_amount}
{ts}Total Amount{/ts}\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n
\n {ts}Total Participants{/ts}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n
\n {$pay_later_receipt}\n
\n {ts}Registration Date{/ts}\n \n {participant.register_date}\n
\n {ts}Transaction Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Financial Type{/ts}\n \n {$financialTypeName}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Paid By{/ts}\n \n {$paidBy}\n
\n {ts}Check Number{/ts}\n \n {$checkNumber}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n
\n\n\n\n',1,828,'event_offline_receipt',0,1,0,NULL), - (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if !empty($event.is_monetary) and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{event.fee_label}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amounts) && empty($lineItem)}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount) }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if !empty($receive_date)}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer) }\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n \n \n \n \n \n \n \n {/if}\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n

{event.confirm_email_text}

\n {else}\n

{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated towaitlisted.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}\n {/if}\n {/if}\n

\n {/if}\n\n {if !empty($isOnWaitlist)}\n

{ts}You have been added to the WAIT LIST for this event.{/ts}

\n {if $isPrimary}\n

{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}

\n {/if}\n {elseif !empty($isRequireApproval)}\n

{ts}Your registration has been submitted.{/ts}

\n {if $isPrimary}\n

{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}

\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n

{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}

\n {/if}\n
\n \n \n \n \n \n \n \n\n {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n \n \n \n \n {/if}\n\n {if !empty($isShowLocation)}\n \n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if $event.is_share}\n \n \n \n {/if}\n {if !empty($payer.name)}\n \n \n \n \n \n \n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n \n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *}\n \n \n \n {/if}\n \n \n \n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($amounts) && empty($lineItem)}\n {foreach from=$amounts item=amnt key=level}\n \n \n \n {/foreach}\n {/if}\n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n {if $isPrimary}\n \n \n \n \n {if !empty($pricesetFieldsCount) }\n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if !empty($financialTypeName)}\n \n \n \n \n {/if}\n\n {if !empty($trxn_id)}\n \n \n \n \n {/if}\n\n {if !empty($paidBy)}\n \n \n \n \n {/if}\n\n {if !empty($checkNumber)}\n \n \n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n \n \n \n {foreach from=$customPr item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n \n \n \n {foreach from=$customPos item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n \n \n \n {foreach from=$eachParticipant item=eachProfile key=pid}\n \n \n \n {foreach from=$eachProfile item=val key=field}\n \n {foreach from=$val item=v key=f}\n \n \n {/foreach}\n \n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {event.title}
\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {$event.participant_role}\n
\n {$location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n
\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_id.email}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_2_id.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n
\n {ts}You were registered by:{/ts}\n
\n {$payer.name}\n
\n {event.fee_label}\n
\n {ts 1=$currentParticipant.index}Participant %1{/ts} {$currentParticipant.contact.display_name}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n {if !empty($pricesetFieldsCount)}\n \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n \n \n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n \n {if !empty($pricesetFieldsCount)}\n \n {/if}\n \n {/foreach}\n {if $isShowTax}\n \n \n \n \n \n \n {/if}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Total Participants{/ts}
{$line.title}{$line.qty}{$line.unit_price|crmMoney:$currency}{$line.tax_rate|string_format:\"%.2f\"}%{$line.tax_amount|crmMoney:$currency}\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n {$line.participant_count}
{ts}Participant Total{/ts}{$currentParticipant.totals.total_amount_exclusive|crmMoney}{$currentParticipant.totals.tax_amount|crmMoney}{$currentParticipant.totals.total_amount_inclusive|crmMoney}
\n
\n {ts}Amount Before Tax:{/ts}\n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {$amnt.amount|crmMoney:$currency} {$amnt.label}\n
\n {ts}Total Tax Amount{/ts}\n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n
\n {ts}Total Participants{/ts}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n
\n {ts}Registration Date{/ts}\n \n {$register_date|crmDate}\n
\n {ts}Transaction Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Financial Type{/ts}\n \n {$financialTypeName}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Paid By{/ts}\n \n {$paidBy}\n
\n {ts}Check Number{/ts}\n \n {$checkNumber}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
{$customPre_grouptitle.$i}
{$customName}{$customValue}
{$customPost_grouptitle.$j}
{$customName}{$customValue}
{ts 1=$participantID+2}Participant %1{/ts}
{$customProfile.title.$pid}
{$field}{$v}
\n {if !empty($event.allow_selfcancelxfer) }\n
\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}
\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`{participant.id}`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts}\n
\n\n\n\n',1,829,'event_online_receipt',1,0,0,NULL), - (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if !empty($event.is_monetary) and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{event.fee_label}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amounts) && empty($lineItem)}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount) }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if !empty($receive_date)}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer) }\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n \n \n \n \n \n \n \n {/if}\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n

{event.confirm_email_text}

\n {else}\n

{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated towaitlisted.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}\n {/if}\n {/if}\n

\n {/if}\n\n {if !empty($isOnWaitlist)}\n

{ts}You have been added to the WAIT LIST for this event.{/ts}

\n {if $isPrimary}\n

{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}

\n {/if}\n {elseif !empty($isRequireApproval)}\n

{ts}Your registration has been submitted.{/ts}

\n {if $isPrimary}\n

{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}

\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n

{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}

\n {/if}\n
\n \n \n \n \n \n \n \n\n {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n \n \n \n \n {/if}\n\n {if !empty($isShowLocation)}\n \n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if $event.is_share}\n \n \n \n {/if}\n {if !empty($payer.name)}\n \n \n \n \n \n \n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n \n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *}\n \n \n \n {/if}\n \n \n \n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($amounts) && empty($lineItem)}\n {foreach from=$amounts item=amnt key=level}\n \n \n \n {/foreach}\n {/if}\n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n {if $isPrimary}\n \n \n \n \n {if !empty($pricesetFieldsCount) }\n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if !empty($financialTypeName)}\n \n \n \n \n {/if}\n\n {if !empty($trxn_id)}\n \n \n \n \n {/if}\n\n {if !empty($paidBy)}\n \n \n \n \n {/if}\n\n {if !empty($checkNumber)}\n \n \n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n \n \n \n {foreach from=$customPr item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n \n \n \n {foreach from=$customPos item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n \n \n \n {foreach from=$eachParticipant item=eachProfile key=pid}\n \n \n \n {foreach from=$eachProfile item=val key=field}\n \n {foreach from=$val item=v key=f}\n \n \n {/foreach}\n \n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {event.title}
\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {$event.participant_role}\n
\n {$location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n
\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_id.email}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_2_id.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n
\n {ts}You were registered by:{/ts}\n
\n {$payer.name}\n
\n {event.fee_label}\n
\n {ts 1=$currentParticipant.index}Participant %1{/ts} {$currentParticipant.contact.display_name}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n {if !empty($pricesetFieldsCount)}\n \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n \n \n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n \n {if !empty($pricesetFieldsCount)}\n \n {/if}\n \n {/foreach}\n {if $isShowTax}\n \n \n \n \n \n \n {/if}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Total Participants{/ts}
{$line.title}{$line.qty}{$line.unit_price|crmMoney:$currency}{$line.tax_rate|string_format:\"%.2f\"}%{$line.tax_amount|crmMoney:$currency}\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n {$line.participant_count}
{ts}Participant Total{/ts}{$currentParticipant.totals.total_amount_exclusive|crmMoney}{$currentParticipant.totals.tax_amount|crmMoney}{$currentParticipant.totals.total_amount_inclusive|crmMoney}
\n
\n {ts}Amount Before Tax:{/ts}\n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {$amnt.amount|crmMoney:$currency} {$amnt.label}\n
\n {ts}Total Tax Amount{/ts}\n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n
\n {ts}Total Participants{/ts}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n
\n {ts}Registration Date{/ts}\n \n {$register_date|crmDate}\n
\n {ts}Transaction Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Financial Type{/ts}\n \n {$financialTypeName}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Paid By{/ts}\n \n {$paidBy}\n
\n {ts}Check Number{/ts}\n \n {$checkNumber}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
{$customPre_grouptitle.$i}
{$customName}{$customValue}
{$customPost_grouptitle.$j}
{$customName}{$customValue}
{ts 1=$participantID+2}Participant %1{/ts}
{$customProfile.title.$pid}
{$field}{$v}
\n {if !empty($event.allow_selfcancelxfer) }\n
\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}
\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`{participant.id}`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts}\n
\n\n\n\n',1,829,'event_online_receipt',0,1,0,NULL), - (33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n {$pay_later_receipt}\n{/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n Waitlisted:\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n','\n\n \n \n \n \n \n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $is_pay_later}\n

\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n

\n {else}\n

\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

\n {/if}\n\n

Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:

\n\n{if $billing_name}\n \n \n \n \n \n \n \n
\n {ts}Billing Name and Address{/ts}\n
\n {$billing_name}
\n {$billing_street_address}
\n {$billing_city}, {$billing_state} {$billing_postal_code}
\n
\n {$email}\n
\n{/if}\n{if $credit_card_type}\n

 

\n \n \n \n \n \n \n \n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n
\n{/if}\n{if !empty($source)}\n

 

\n {$source}\n{/if}\n

 

\n \n \n \n{if $line_items}\n \n \n{/if}\n \n \n \n \n \n {foreach from=$line_items item=line_item}\n \n \n \n \n \n \n {/foreach}\n \n \n {if $discounts}\n \n \n \n \n \n \n {foreach from=$discounts key=myId item=i}\n \n \n \n \n \n \n {/foreach}\n {/if}\n \n{if $line_items}\n \n \n{/if}\n \n \n \n \n
\n Event\n \n Participants\n \n Price\n \n Total\n
\n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})
\n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*}

\n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n
\n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n
\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}
\n {/foreach}\n
\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted:
\n
\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}
\n {/foreach}\n
\n {/if}\n
\n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n \n  {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n
\n \n \n Subtotal:\n \n  {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n
\n {$i.title}\n \n \n \n -{$i.amount}\n
\n \n \n Total:\n \n  {$total|crmMoney:$currency|string_format:\"%10s\"}\n
\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n \n\n',1,830,'event_registration_receipt',1,0,0,NULL), - (34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n {$pay_later_receipt}\n{/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n Waitlisted:\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n','\n\n \n \n \n \n \n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $is_pay_later}\n

\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n

\n {else}\n

\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

\n {/if}\n\n

Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:

\n\n{if $billing_name}\n \n \n \n \n \n \n \n
\n {ts}Billing Name and Address{/ts}\n
\n {$billing_name}
\n {$billing_street_address}
\n {$billing_city}, {$billing_state} {$billing_postal_code}
\n
\n {$email}\n
\n{/if}\n{if $credit_card_type}\n

 

\n \n \n \n \n \n \n \n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n
\n{/if}\n{if !empty($source)}\n

 

\n {$source}\n{/if}\n

 

\n \n \n \n{if $line_items}\n \n \n{/if}\n \n \n \n \n \n {foreach from=$line_items item=line_item}\n \n \n \n \n \n \n {/foreach}\n \n \n {if $discounts}\n \n \n \n \n \n \n {foreach from=$discounts key=myId item=i}\n \n \n \n \n \n \n {/foreach}\n {/if}\n \n{if $line_items}\n \n \n{/if}\n \n \n \n \n
\n Event\n \n Participants\n \n Price\n \n Total\n
\n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})
\n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*}

\n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n
\n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n
\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}
\n {/foreach}\n
\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted:
\n
\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}
\n {/foreach}\n
\n {/if}\n
\n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n \n  {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n
\n \n \n Subtotal:\n \n  {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n
\n {$i.title}\n \n \n \n -{$i.amount}\n
\n \n \n Total:\n \n  {$total|crmMoney:$currency|string_format:\"%10s\"}\n
\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n \n\n',1,830,'event_registration_receipt',0,1,0,NULL), - (35,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Your Event Registration has been cancelled.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {participant.role_id:label}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {participant.register_date}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,831,'participant_cancelled',1,0,0,NULL), - (36,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Your Event Registration has been cancelled.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {participant.role_id:label}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {participant.register_date}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,831,'participant_cancelled',0,1,0,NULL), - (37,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}\n\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $event.allow_selfcancelxfer }\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n \n \n \n\n \n\n \n \n \n {if !$isAdditional and $participant.id}\n \n \n \n \n \n \n {/if}\n {if $event.allow_selfcancelxfer }\n {ts}This event allows for{/ts}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}self service cancel or transfer{/ts}\n {/if}\n\n \n \n \n {if $event.allow_selfcancelxfer }\n \n \n \n {/if}\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}

\n
\n {ts}Confirm Your Registration{/ts}\n
\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n {ts}Click here to confirm and complete your registration{/ts}\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\n \n \n \n \n \n \n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}
\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts}\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,832,'participant_confirm',1,0,0,NULL), - (38,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}\n\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $event.allow_selfcancelxfer }\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n \n \n \n\n \n\n \n \n \n {if !$isAdditional and $participant.id}\n \n \n \n \n \n \n {/if}\n {if $event.allow_selfcancelxfer }\n {ts}This event allows for{/ts}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}self service cancel or transfer{/ts}\n {/if}\n\n \n \n \n {if $event.allow_selfcancelxfer }\n \n \n \n {/if}\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}

\n
\n {ts}Confirm Your Registration{/ts}\n
\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n {ts}Click here to confirm and complete your registration{/ts}\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\n \n \n \n \n \n \n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}
\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts}\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,832,'participant_confirm',0,1,0,NULL), - (39,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}

\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,833,'participant_expired',1,0,0,NULL), - (40,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}

\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,833,'participant_expired',0,1,0,NULL), - (41,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,834,'participant_transferred',1,0,0,NULL), - (42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,834,'participant_transferred',0,1,0,NULL), - (43,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n

{$senderMessage}

\n {if $generalLink}\n

{ts}More information{/ts}

\n {/if}\n {if $contribute}\n

{ts}Make a contribution{/ts}

\n {/if}\n {if $event}\n

{ts}Find out more about this event{/ts}

\n {/if}\n
\n\n\n\n',1,835,'friend',1,0,0,NULL), - (44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n

{$senderMessage}

\n {if $generalLink}\n

{ts}More information{/ts}

\n {/if}\n {if $contribute}\n

{ts}Make a contribution{/ts}

\n {/if}\n {if $event}\n

{ts}Find out more about this event{/ts}

\n {/if}\n
\n\n\n\n',1,835,'friend',0,1,0,NULL), - (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary) }\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n {if !empty($isPrimary)}\n \n \n \n {/if}\n\n {if !empty($customValues)}\n \n \n \n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $receipt_text}\n

{$receipt_text|htmlize}

\n {else}\n

{ts}Thank you for this contribution.{/ts}

\n {/if}\n
\n \n {if !$isShowLineItems}\n \n \n \n \n \n \n \n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n \n \n \n \n \n \n \n \n {/if}\n {if {contribution.total_amount|boolean}}\n \n \n \n {if {contribution.financial_type_id|boolean}}\n \n \n \n \n {/if}\n\n {if $isShowLineItems}\n \n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n \n {if {contribution.receive_date|boolean}}\n \n \n \n \n {/if}\n {if {contribution.payment_instrument_id|boolean}}\n \n \n \n \n {if {contribution.check_number|boolean}}\n \n \n \n \n {/if}\n {/if}\n {/if}\n {/if}\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Type{/ts}\n \n {membership.membership_type_id:name}\n
\n {ts}Membership Start Date{/ts}\n \n {membership.start_date|crmDate:\"Full\"}\n
\n {ts}Membership Expiration Date{/ts}\n \n {membership.end_date|crmDate:\"Full\"}\n
\n {ts}Membership Fee{/ts}\n
\n {ts}Financial Type{/ts}\n \n {contribution.financial_type_id:label}\n
\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n {foreach from=$lineItems item=line}\n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n \n {/if}\n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Fee{/ts}{ts}SubTotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Membership Start Date{/ts}{ts}Membership Expiration Date{/ts}
{$line.title}\n {$line.line_total|crmMoney}\n \n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n {$line.membership.end_date|crmDate:\"Full\"}\n
\n
\n {ts}Amount Before Tax:{/ts}\n \n {contribution.tax_exclusive_amount}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Contribution Date{/ts}\n \n {contribution.receive_date}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {contribution.check_number}\n
\n
\n \n\n {if !empty($billingName)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n \n \n \n \n {/if}\n\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}\n
\n {ts}Expires{/ts}\n \n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n
\n \n \n \n \n {foreach from=$customValues item=value key=customName}\n \n \n \n \n {/foreach}\n
\n {ts}Membership Options{/ts}\n
\n {$customName}\n \n {$value}\n
\n
\n\n\n\n',1,836,'membership_offline_receipt',1,0,0,NULL), - (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary) }\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n {if !empty($isPrimary)}\n \n \n \n {/if}\n\n {if !empty($customValues)}\n \n \n \n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $receipt_text}\n

{$receipt_text|htmlize}

\n {else}\n

{ts}Thank you for this contribution.{/ts}

\n {/if}\n
\n \n {if !$isShowLineItems}\n \n \n \n \n \n \n \n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n \n \n \n \n \n \n \n \n {/if}\n {if {contribution.total_amount|boolean}}\n \n \n \n {if {contribution.financial_type_id|boolean}}\n \n \n \n \n {/if}\n\n {if $isShowLineItems}\n \n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n \n {if {contribution.receive_date|boolean}}\n \n \n \n \n {/if}\n {if {contribution.payment_instrument_id|boolean}}\n \n \n \n \n {if {contribution.check_number|boolean}}\n \n \n \n \n {/if}\n {/if}\n {/if}\n {/if}\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Type{/ts}\n \n {membership.membership_type_id:name}\n
\n {ts}Membership Start Date{/ts}\n \n {membership.start_date|crmDate:\"Full\"}\n
\n {ts}Membership Expiration Date{/ts}\n \n {membership.end_date|crmDate:\"Full\"}\n
\n {ts}Membership Fee{/ts}\n
\n {ts}Financial Type{/ts}\n \n {contribution.financial_type_id:label}\n
\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n {foreach from=$lineItems item=line}\n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n \n {/if}\n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Fee{/ts}{ts}SubTotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Membership Start Date{/ts}{ts}Membership Expiration Date{/ts}
{$line.title}\n {$line.line_total|crmMoney}\n \n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n {$line.membership.end_date|crmDate:\"Full\"}\n
\n
\n {ts}Amount Before Tax:{/ts}\n \n {contribution.tax_exclusive_amount}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Contribution Date{/ts}\n \n {contribution.receive_date}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {contribution.check_number}\n
\n
\n \n\n {if !empty($billingName)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n \n \n \n \n {/if}\n\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}\n
\n {ts}Expires{/ts}\n \n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n
\n \n \n \n \n {foreach from=$customValues item=value key=customName}\n \n \n \n \n {/foreach}\n
\n {ts}Membership Options{/ts}\n
\n {$customName}\n \n {$value}\n
\n
\n\n\n\n',1,836,'membership_offline_receipt',0,1,0,NULL), - (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment }\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level) } - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active }\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if !empty($receipt_text)}\n

{$receipt_text|htmlize}

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n \n\n {if $membership_assign && !$useForMember}\n \n \n \n \n \n \n \n {if $mem_start_date}\n \n \n \n \n {/if}\n {if $mem_end_date}\n \n \n \n \n {/if}\n {/if}\n\n\n {if $amount}\n \n \n \n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n \n \n \n \n {if $amount && !$is_separate_payment }\n \n \n \n \n \n \n \n \n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n \n \n \n {/foreach}\n \n \n \n \n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n \n \n \n {/foreach}\n {if !empty($dataArray)}\n \n \n \n \n {foreach from=$dataArray item=value key=priceset}\n \n {if $priceset || $priceset == 0}\n \n \n {else}\n \n \n {/if}\n \n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n \n \n \n \n {/if}\n \n \n \n \n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n \n \n \n \n \n \n \n\n\n {/if}\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n \n \n \n \n {/if}\n\n {if !empty($membership_trx_id)}\n \n \n \n \n {/if}\n {if !empty($is_recur)}\n \n \n \n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n \n \n \n \n \n {if $pcp_roll_nickname}\n \n \n \n \n {/if}\n {if $pcp_personal_note}\n \n \n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {elseif !empty($email)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n \n \n \n \n {if $option}\n \n \n \n \n {/if}\n {if $sku}\n \n \n \n \n {/if}\n {if $start_date}\n \n \n \n \n {/if}\n {if $end_date}\n \n \n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n \n {foreach from=$customPost item=customValue key=customName}\n {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Type{/ts}\n \n {$membership_name}\n
\n {ts}Membership Start Date{/ts}\n \n {$mem_start_date|crmDate}\n
\n {ts}Membership Expiration Date{/ts}\n \n {$mem_end_date|crmDate}\n
\n {ts}Membership Fee{/ts}\n
\n {ts 1=$membership_name}%1 Membership{/ts}\n \n {$membership_amount|crmMoney}\n
\n {ts}Contribution Amount{/ts}\n \n {$amount|crmMoney}\n
\n {ts}Total{/ts}\n \n {$amount+$membership_amount|crmMoney}\n
\n \n \n \n \n \n \n \n {foreach from=$value item=line}\n \n \n \n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Total{/ts}
\n {$line.description|truncate:30:\"...\"}\n \n {$line.qty}\n \n {$line.unit_price|crmMoney}\n \n {$line.line_total|crmMoney}\n
\n
\n {ts}Total Amount{/ts}\n \n {$amount|crmMoney}\n
\n \n \n \n \n {if !empty($dataArray)}\n \n \n \n \n {/if}\n \n \n \n {foreach from=$value item=line}\n \n \n \n {if !empty($dataArray)}\n \n {if ($line.tax_rate || $line.tax_amount != \"\")}\n \n \n {else}\n \n \n {/if}\n \n {/if}\n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Fee{/ts}{ts}SubTotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Membership Start Date{/ts}{ts}Membership Expiration Date{/ts}
\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}
{$line.description|truncate:30:\"...\"}
{/if}\n
\n {$line.line_total|crmMoney}\n \n {$line.unit_price*$line.qty|crmMoney}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney}\n \n {$line.line_total+$line.tax_amount|crmMoney}\n \n {$line.start_date}\n \n {$line.end_date}\n
\n
\n {ts}Amount Before Tax:{/ts}\n \n {$amount-$totalTaxAmount|crmMoney}\n
 {$taxTerm} {$priceset|string_format:\"%.2f\"}% {$value|crmMoney:$currency} {ts}NO{/ts} {$taxTerm} {$value|crmMoney:$currency}
\n {ts}Total Tax Amount{/ts}\n \n {$totalTaxAmount|crmMoney:$currency}\n
\n {ts}Amount{/ts}\n \n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n
\n {ts}Membership Fee{/ts}\n
\n {ts 1=$membership_name}%1 Membership{/ts}\n \n {$membership_amount|crmMoney}\n
\n {ts}Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Membership Transaction #{/ts}\n \n {$membership_trx_id}\n
\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n {/if}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n
\n {$soft_credit_type}\n
\n {$label}\n \n {$value}\n
\n {ts}Personal Campaign Page{/ts}\n
\n {ts}Display In Honor Roll{/ts}\n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n
\n {ts}Nickname{/ts}\n \n {$pcp_roll_nickname}\n
\n {ts}Personal Note{/ts}\n \n {$pcp_personal_note}\n
\n {$onBehalfProfile_grouptitle}\n
\n {$onBehalfName}\n \n {$onBehalfValue}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Registered Email{/ts}\n
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts}Premium Information{/ts}\n
\n {$product_name}\n
\n {ts}Option{/ts}\n \n {$option}\n
\n {ts}SKU{/ts}\n \n {$sku}\n
\n {ts}Start Date{/ts}\n \n {$start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$end_date|crmDate}\n
\n

{ts}For information about this premium, contact:{/ts}

\n {if !empty($contact_email)}\n

{$contact_email}

\n {/if}\n {if !empty($contact_phone)}\n

{$contact_phone}

\n {/if}\n
\n

{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}

\n
\n {$customPre_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n {$customPost_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n\n\n\n',1,837,'membership_online_receipt',1,0,0,NULL), - (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment }\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level) } - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active }\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if !empty($receipt_text)}\n

{$receipt_text|htmlize}

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n \n\n {if $membership_assign && !$useForMember}\n \n \n \n \n \n \n \n {if $mem_start_date}\n \n \n \n \n {/if}\n {if $mem_end_date}\n \n \n \n \n {/if}\n {/if}\n\n\n {if $amount}\n \n \n \n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n \n \n \n \n {if $amount && !$is_separate_payment }\n \n \n \n \n \n \n \n \n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n \n \n \n {/foreach}\n \n \n \n \n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n \n \n \n {/foreach}\n {if !empty($dataArray)}\n \n \n \n \n {foreach from=$dataArray item=value key=priceset}\n \n {if $priceset || $priceset == 0}\n \n \n {else}\n \n \n {/if}\n \n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n \n \n \n \n {/if}\n \n \n \n \n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n \n \n \n \n \n \n \n\n\n {/if}\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n \n \n \n \n {/if}\n\n {if !empty($membership_trx_id)}\n \n \n \n \n {/if}\n {if !empty($is_recur)}\n \n \n \n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n \n \n \n \n \n {if $pcp_roll_nickname}\n \n \n \n \n {/if}\n {if $pcp_personal_note}\n \n \n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {elseif !empty($email)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n \n \n \n \n {if $option}\n \n \n \n \n {/if}\n {if $sku}\n \n \n \n \n {/if}\n {if $start_date}\n \n \n \n \n {/if}\n {if $end_date}\n \n \n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n \n {foreach from=$customPost item=customValue key=customName}\n {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Type{/ts}\n \n {$membership_name}\n
\n {ts}Membership Start Date{/ts}\n \n {$mem_start_date|crmDate}\n
\n {ts}Membership Expiration Date{/ts}\n \n {$mem_end_date|crmDate}\n
\n {ts}Membership Fee{/ts}\n
\n {ts 1=$membership_name}%1 Membership{/ts}\n \n {$membership_amount|crmMoney}\n
\n {ts}Contribution Amount{/ts}\n \n {$amount|crmMoney}\n
\n {ts}Total{/ts}\n \n {$amount+$membership_amount|crmMoney}\n
\n \n \n \n \n \n \n \n {foreach from=$value item=line}\n \n \n \n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Total{/ts}
\n {$line.description|truncate:30:\"...\"}\n \n {$line.qty}\n \n {$line.unit_price|crmMoney}\n \n {$line.line_total|crmMoney}\n
\n
\n {ts}Total Amount{/ts}\n \n {$amount|crmMoney}\n
\n \n \n \n \n {if !empty($dataArray)}\n \n \n \n \n {/if}\n \n \n \n {foreach from=$value item=line}\n \n \n \n {if !empty($dataArray)}\n \n {if ($line.tax_rate || $line.tax_amount != \"\")}\n \n \n {else}\n \n \n {/if}\n \n {/if}\n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Fee{/ts}{ts}SubTotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Membership Start Date{/ts}{ts}Membership Expiration Date{/ts}
\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}
{$line.description|truncate:30:\"...\"}
{/if}\n
\n {$line.line_total|crmMoney}\n \n {$line.unit_price*$line.qty|crmMoney}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney}\n \n {$line.line_total+$line.tax_amount|crmMoney}\n \n {$line.start_date}\n \n {$line.end_date}\n
\n
\n {ts}Amount Before Tax:{/ts}\n \n {$amount-$totalTaxAmount|crmMoney}\n
 {$taxTerm} {$priceset|string_format:\"%.2f\"}% {$value|crmMoney:$currency} {ts}NO{/ts} {$taxTerm} {$value|crmMoney:$currency}
\n {ts}Total Tax Amount{/ts}\n \n {$totalTaxAmount|crmMoney:$currency}\n
\n {ts}Amount{/ts}\n \n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n
\n {ts}Membership Fee{/ts}\n
\n {ts 1=$membership_name}%1 Membership{/ts}\n \n {$membership_amount|crmMoney}\n
\n {ts}Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Membership Transaction #{/ts}\n \n {$membership_trx_id}\n
\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n {/if}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n
\n {$soft_credit_type}\n
\n {$label}\n \n {$value}\n
\n {ts}Personal Campaign Page{/ts}\n
\n {ts}Display In Honor Roll{/ts}\n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n
\n {ts}Nickname{/ts}\n \n {$pcp_roll_nickname}\n
\n {ts}Personal Note{/ts}\n \n {$pcp_personal_note}\n
\n {$onBehalfProfile_grouptitle}\n
\n {$onBehalfName}\n \n {$onBehalfValue}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Registered Email{/ts}\n
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts}Premium Information{/ts}\n
\n {$product_name}\n
\n {ts}Option{/ts}\n \n {$option}\n
\n {ts}SKU{/ts}\n \n {$sku}\n
\n {ts}Start Date{/ts}\n \n {$start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$end_date|crmDate}\n
\n

{ts}For information about this premium, contact:{/ts}

\n {if !empty($contact_email)}\n

{$contact_email}

\n {/if}\n {if !empty($contact_phone)}\n

{$contact_phone}

\n {/if}\n
\n

{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}

\n
\n {$customPre_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n {$customPost_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n\n\n\n',1,837,'membership_online_receipt',0,1,0,NULL), - (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}

\n\n
\n \n\n \n \n \n \n \n \n \n {if $mem_start_date}\n \n \n \n \n {/if}\n {if $mem_end_date}\n \n \n \n \n {/if}\n\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Status{/ts}\n \n {$membership_status}\n
\n {ts}Membership Start Date{/ts}\n \n {$mem_start_date|crmDate}\n
\n {ts}Membership Expiration Date{/ts}\n \n {$mem_end_date|crmDate}\n
\n\n\n\n',1,838,'membership_autorenew_cancelled',1,0,0,NULL), - (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}

\n\n
\n \n\n \n \n \n \n \n \n \n {if $mem_start_date}\n \n \n \n \n {/if}\n {if $mem_end_date}\n \n \n \n \n {/if}\n\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Status{/ts}\n \n {$membership_status}\n
\n {ts}Membership Start Date{/ts}\n \n {$mem_start_date|crmDate}\n
\n {ts}Membership Expiration Date{/ts}\n \n {$mem_end_date|crmDate}\n
\n\n\n\n',1,838,'membership_autorenew_cancelled',0,1,0,NULL), - (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n
\n\n\n\n',1,839,'membership_autorenew_billing',1,0,0,NULL), - (52,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n
\n\n\n\n',1,839,'membership_autorenew_billing',0,1,0,NULL), + (23,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n {if $pcpStatus eq \'Approved\'}\n\n \n \n \n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n \n \n \n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n \n \n \n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Promoting Your Page{/ts}\n
\n {if $isTellFriendEnabled}\n

{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Click this link and follow the prompts{/ts}
  4. \n
\n {else}\n

{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}

\n {/if}\n
\n {ts}Managing Your Page{/ts}\n
\n

{ts}Whenever you want to preview, update or promote your page{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Go to your page{/ts}
  4. \n
\n

{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}

\n
\n
\n

{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}

\n

{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}

\n

{ts}You can still preview your page prior to approval{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Click this link{/ts}
  4. \n
\n
\n

{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}

\n
\n\n\n\n',1,825,'pcp_supporter_notify',1,0,0,NULL), + (24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n {if $pcpStatus eq \'Approved\'}\n\n \n \n \n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n \n \n \n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n \n \n \n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Promoting Your Page{/ts}\n
\n {if $isTellFriendEnabled}\n

{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Click this link and follow the prompts{/ts}
  4. \n
\n {else}\n

{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}

\n {/if}\n
\n {ts}Managing Your Page{/ts}\n
\n

{ts}Whenever you want to preview, update or promote your page{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Go to your page{/ts}
  4. \n
\n

{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}

\n
\n
\n

{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}

\n

{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}

\n

{ts}You can still preview your page prior to approval{/ts}:

\n
    \n
  1. {ts}Login to your account{/ts}
  2. \n
  3. {ts}Click this link{/ts}
  4. \n
\n
\n

{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}

\n
\n\n\n\n',1,825,'pcp_supporter_notify',0,1,0,NULL), + (25,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}You have received a donation at your personal page{/ts}: {$page_title}

\n

{ts}Your fundraising total has been updated.{/ts}
\n {ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}
\n {if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}
\n {/if}\n

\n \n \n \n \n \n
{ts}Contribution Date{/ts}: {$receive_date|crmDate}
{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}
{ts}Name{/ts}: {$donors_display_name}
{ts}Email{/ts}: {$donors_email}
\n\n\n',1,826,'pcp_owner_notify',1,0,0,NULL), + (26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}You have received a donation at your personal page{/ts}: {$page_title}

\n

{ts}Your fundraising total has been updated.{/ts}
\n {ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}
\n {if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}
\n {/if}\n

\n \n \n \n \n \n
{ts}Contribution Date{/ts}: {$receive_date|crmDate}
{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}
{ts}Name{/ts}: {$donors_display_name}
{ts}Email{/ts}: {$donors_email}
\n\n\n',1,826,'pcp_owner_notify',0,1,0,NULL), + (27,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $isRefund}\n

{ts}A refund has been issued based on changes in your registration selections.{/ts}

\n {else}\n

{ts}Below you will find a receipt for this payment.{/ts}

\n {if $paymentsComplete}\n

{ts}Thank you for completing this contribution.{/ts}

\n {/if}\n {/if}\n
\n \n {if $isRefund}\n \n \n \n \n \n \n \n {else}\n \n \n \n \n \n \n \n {/if}\n {if $receive_date}\n \n \n \n \n {/if}\n {if !empty($trxn_id)}\n \n \n \n \n {/if}\n {if !empty($paidBy)}\n \n \n \n \n {/if}\n {if !empty($checkNumber)}\n \n \n \n \n {/if}\n\n \n \n \n {if $totalAmount}\n \n \n \n \n {/if}\n {if $totalPaid}\n \n \n \n \n {/if}\n {if $amountOwed}\n \n \n {* This will be zero after final payment. *}\n \n {/if}\n
{ts}Refund Details{/ts}
\n {ts}This Refund Amount{/ts}\n \n {$refundAmount|crmMoney:$currency}\n
{ts}Payment Details{/ts}
\n {ts}This Payment Amount{/ts}\n \n {$paymentAmount|crmMoney:$currency}\n
\n {ts}Transaction Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Paid By{/ts}\n \n {$paidBy}\n
\n {ts}Check Number{/ts}\n \n {$checkNumber}\n
{ts}Contribution Details{/ts}
\n {ts}Total Fee{/ts}\n \n {$totalAmount|crmMoney:$currency}\n
\n {ts}Total Paid{/ts}\n \n {$totalPaid|crmMoney:$currency}\n
\n {ts}Balance Owed{/ts}\n \n {$amountOwed|crmMoney:$currency}\n
\n\n
\n \n {if !empty($billingName) || !empty($address)}\n \n \n \n \n \n \n {/if}\n {if !empty($credit_card_number)}\n \n \n \n \n \n \n {/if}\n {if $component eq \'event\'}\n \n \n \n \n \n \n\n {if !empty($event.participant_role)}\n \n \n \n \n {/if}\n\n {if !empty($isShowLocation)}\n \n \n \n {/if}\n\n {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n \n \n \n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if} {*phone block close*}\n {/if}\n
\n {ts}Billing Name and Address{/ts}\n
\n {if !empty($billingName)}{$billingName}{/if}
\n {if !empty($address)}{$address|nl2br}{/if}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {$event.participant_role}\n
\n {$location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n
\n\n \n\n',1,827,'payment_or_refund_notification',1,0,0,NULL), + (28,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $isRefund}\n

{ts}A refund has been issued based on changes in your registration selections.{/ts}

\n {else}\n

{ts}Below you will find a receipt for this payment.{/ts}

\n {if $paymentsComplete}\n

{ts}Thank you for completing this contribution.{/ts}

\n {/if}\n {/if}\n
\n \n {if $isRefund}\n \n \n \n \n \n \n \n {else}\n \n \n \n \n \n \n \n {/if}\n {if $receive_date}\n \n \n \n \n {/if}\n {if !empty($trxn_id)}\n \n \n \n \n {/if}\n {if !empty($paidBy)}\n \n \n \n \n {/if}\n {if !empty($checkNumber)}\n \n \n \n \n {/if}\n\n \n \n \n {if $totalAmount}\n \n \n \n \n {/if}\n {if $totalPaid}\n \n \n \n \n {/if}\n {if $amountOwed}\n \n \n {* This will be zero after final payment. *}\n \n {/if}\n
{ts}Refund Details{/ts}
\n {ts}This Refund Amount{/ts}\n \n {$refundAmount|crmMoney:$currency}\n
{ts}Payment Details{/ts}
\n {ts}This Payment Amount{/ts}\n \n {$paymentAmount|crmMoney:$currency}\n
\n {ts}Transaction Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Paid By{/ts}\n \n {$paidBy}\n
\n {ts}Check Number{/ts}\n \n {$checkNumber}\n
{ts}Contribution Details{/ts}
\n {ts}Total Fee{/ts}\n \n {$totalAmount|crmMoney:$currency}\n
\n {ts}Total Paid{/ts}\n \n {$totalPaid|crmMoney:$currency}\n
\n {ts}Balance Owed{/ts}\n \n {$amountOwed|crmMoney:$currency}\n
\n\n
\n \n {if !empty($billingName) || !empty($address)}\n \n \n \n \n \n \n {/if}\n {if !empty($credit_card_number)}\n \n \n \n \n \n \n {/if}\n {if $component eq \'event\'}\n \n \n \n \n \n \n\n {if !empty($event.participant_role)}\n \n \n \n \n {/if}\n\n {if !empty($isShowLocation)}\n \n \n \n {/if}\n\n {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n \n \n \n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if} {*phone block close*}\n {/if}\n
\n {ts}Billing Name and Address{/ts}\n
\n {if !empty($billingName)}{$billingName}{/if}
\n {if !empty($address)}{$address|nl2br}{/if}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {$event.participant_role}\n
\n {$location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n
\n\n \n\n',1,827,'payment_or_refund_notification',0,1,0,NULL), + (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n

{$event.confirm_email_text}

\n {/if}\n\n {if !empty($isOnWaitlist)}\n

{ts}You have been added to the WAIT LIST for this event.{/ts}

\n

{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}

\n {elseif !empty($isRequireApproval)}\n

{ts}Your registration has been submitted.{/ts}

\n

{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}

\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n

{event.pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n \n \n \n \n \n \n \n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n \n \n \n \n {/if}\n\n {if {event.is_show_location|boolean}}\n \n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if {contact.email_primary.email|boolean}}\n \n \n \n \n \n \n {/if}\n\n\n {if {event.is_monetary|boolean}}\n \n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n \n \n \n {/if}\n \n \n \n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n \n \n \n \n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n {if $isPrimary}\n \n \n \n \n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n \n \n \n \n \n \n \n \n {/if}\n {if $isShowParticipantCount}\n \n \n \n \n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n \n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.check_number|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {event.title}
\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {participant.role_id:label}\n
\n {event.location}\n
\n {ts}Event Contacts:{/ts}\n
\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n
\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_id.email}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_2_id.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email_primary.email}\n
\n {event.fee_label}\n
\n {$currentParticipant.contact.display_name}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n {if $isShowParticipantCount}\n \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n {if $isShowParticipantCount}\n \n {/if}\n \n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n \n \n \n \n \n \n {/if}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Total Participants{/ts}
{$line.title}{$line.qty}{$line.unit_price|crmMoney:$currency}{$line.line_total|crmMoney:$currency}{$line.tax_rate|string_format:\"%.2f\"}%{$line.tax_amount|crmMoney:$currency}\n {$line.line_total_inclusive|crmMoney:$currency}\n {$line.participant_count}
{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}{$currentParticipant.totals.total_amount_exclusive|crmMoney}{$currentParticipant.totals.tax_amount|crmMoney}{$currentParticipant.totals.total_amount_inclusive|crmMoney}
\n
\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n \n {$currentLineItem.line_total|crmMoney:$currency}\n
\n {ts}Amount Before Tax:{/ts}\n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount}\n
{ts}Total Paid{/ts}\n {contribution.paid_amount|crmMoney}\n
{ts}Balance{/ts}{contribution.balance_amount}
{ts}Total Participants{/ts}{$line.participant_count}
\n {event.pay_later_receipt}\n
\n {ts}Registration Date{/ts}\n \n {participant.register_date}\n
\n {ts}Transaction Date{/ts}\n \n {contribution.receive_date}\n
\n {ts}Financial Type{/ts}\n \n {contribution.financial_type_id:label}\n
\n {ts}Transaction #{/ts}\n \n {contribution.trxn_id}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {contribution.check_number}\n
\n {ts}Billing Name and Address{/ts}\n
\n {contribution.address_id.name}
\n {contribution.address_id.display}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n
\n\n\n\n',1,828,'event_offline_receipt',1,0,0,NULL), + (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n

{$event.confirm_email_text}

\n {/if}\n\n {if !empty($isOnWaitlist)}\n

{ts}You have been added to the WAIT LIST for this event.{/ts}

\n

{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}

\n {elseif !empty($isRequireApproval)}\n

{ts}Your registration has been submitted.{/ts}

\n

{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}

\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n

{event.pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n \n \n \n \n \n \n \n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n \n \n \n \n {/if}\n\n {if {event.is_show_location|boolean}}\n \n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if {contact.email_primary.email|boolean}}\n \n \n \n \n \n \n {/if}\n\n\n {if {event.is_monetary|boolean}}\n \n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n \n \n \n {/if}\n \n \n \n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n \n \n \n \n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n {if $isPrimary}\n \n \n \n \n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n \n \n \n \n \n \n \n \n {/if}\n {if $isShowParticipantCount}\n \n \n \n \n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n \n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.check_number|boolean}}\n \n \n \n \n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {event.title}
\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {participant.role_id:label}\n
\n {event.location}\n
\n {ts}Event Contacts:{/ts}\n
\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n
\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_id.email}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_2_id.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email_primary.email}\n
\n {event.fee_label}\n
\n {$currentParticipant.contact.display_name}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n {if $isShowParticipantCount}\n \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n {if $isShowParticipantCount}\n \n {/if}\n \n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n \n \n \n \n \n \n {/if}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Total Participants{/ts}
{$line.title}{$line.qty}{$line.unit_price|crmMoney:$currency}{$line.line_total|crmMoney:$currency}{$line.tax_rate|string_format:\"%.2f\"}%{$line.tax_amount|crmMoney:$currency}\n {$line.line_total_inclusive|crmMoney:$currency}\n {$line.participant_count}
{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}{$currentParticipant.totals.total_amount_exclusive|crmMoney}{$currentParticipant.totals.tax_amount|crmMoney}{$currentParticipant.totals.total_amount_inclusive|crmMoney}
\n
\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n \n {$currentLineItem.line_total|crmMoney:$currency}\n
\n {ts}Amount Before Tax:{/ts}\n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount}\n
{ts}Total Paid{/ts}\n {contribution.paid_amount|crmMoney}\n
{ts}Balance{/ts}{contribution.balance_amount}
{ts}Total Participants{/ts}{$line.participant_count}
\n {event.pay_later_receipt}\n
\n {ts}Registration Date{/ts}\n \n {participant.register_date}\n
\n {ts}Transaction Date{/ts}\n \n {contribution.receive_date}\n
\n {ts}Financial Type{/ts}\n \n {contribution.financial_type_id:label}\n
\n {ts}Transaction #{/ts}\n \n {contribution.trxn_id}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {contribution.check_number}\n
\n {ts}Billing Name and Address{/ts}\n
\n {contribution.address_id.name}
\n {contribution.address_id.display}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n
\n\n\n\n',1,828,'event_offline_receipt',0,1,0,NULL), + (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n \n \n \n \n \n \n \n {/if}\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n

{event.confirm_email_text}

\n {else}\n

{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated towaitlisted.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}\n {/if}\n {/if}\n

\n {/if}\n\n {if !empty($isOnWaitlist)}\n

{ts}You have been added to the WAIT LIST for this event.{/ts}

\n {if $isPrimary}\n

{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}

\n {/if}\n {elseif !empty($isRequireApproval)}\n

{ts}Your registration has been submitted.{/ts}

\n {if $isPrimary}\n

{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}

\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n

{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}

\n {/if}\n
\n \n \n \n \n \n \n \n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n \n \n \n \n {/if}\n\n {if !empty($isShowLocation)}\n \n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if {event.is_share|boolean}}\n \n \n \n {/if}\n {if !empty($payer.name)}\n \n \n \n \n \n \n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n \n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n \n \n \n {/if}\n \n \n \n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n \n \n \n \n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n \n \n \n \n {/if}\n {if $isPrimary}\n \n \n \n \n {if !empty($pricesetFieldsCount)}\n \n \n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n \n \n {/if}\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if !empty($financialTypeName)}\n \n \n \n \n {/if}\n\n {if !empty($trxn_id)}\n \n \n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n \n \n {/if}\n\n {if !empty($checkNumber)}\n \n \n \n \n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n \n \n \n {foreach from=$customPr item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n \n \n \n {foreach from=$customPos item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n \n \n \n {foreach from=$eachParticipant item=eachProfile key=pid}\n \n \n \n {foreach from=$eachProfile item=val key=field}\n \n {foreach from=$val item=v key=f}\n \n \n {/foreach}\n \n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {event.title}
\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {participant.role_id:label}\n
\n {event.location}\n
\n {ts}Event Contacts:{/ts}\n
\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n
\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_id.email}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_2_id.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n
\n {ts}You were registered by:{/ts}\n
\n {$payer.name}\n
\n {event.fee_label}\n
\n {$currentParticipant.contact.display_name}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n {if !empty($pricesetFieldsCount)}\n \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n {if !empty($pricesetFieldsCount)}\n \n {/if}\n \n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n \n \n \n \n \n \n {/if}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Total Participants{/ts}
{$line.title}{$line.qty}{$line.unit_price|crmMoney:$currency}{$line.line_total|crmMoney:$currency}{$line.tax_rate|string_format:\"%.2f\"}%{$line.tax_amount|crmMoney:$currency}\n {$line.line_total_inclusive|crmMoney:$currency}\n {$line.participant_count}
{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}{$currentParticipant.totals.total_amount_exclusive|crmMoney}{$currentParticipant.totals.tax_amount|crmMoney}{$currentParticipant.totals.total_amount_inclusive|crmMoney}
\n
\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n \n {$currentLineItem.line_total|crmMoney:$currency}\n
\n {ts}Amount Before Tax:{/ts}\n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n
\n {ts}Total Participants{/ts}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n
\n {ts}Registration Date{/ts}\n \n {participant.register_date}\n
\n {ts}Transaction Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Financial Type{/ts}\n \n {$financialTypeName}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {$checkNumber}\n
\n {ts}Billing Name and Address{/ts}\n
\n {contribution.address_id.name}
\n {contribution.address_id.display}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
{$customPre_grouptitle.$i}
{$customName}{$customValue}
{$customPost_grouptitle.$j}
{$customName}{$customValue}
{ts 1=$participantID+2}Participant %1{/ts}
{$customProfile.title.$pid}
{$field}{$v}
\n {if !empty($event.allow_selfcancelxfer)}\n
\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}
\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts}\n
\n\n\n\n',1,829,'event_online_receipt',1,0,0,NULL), + (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n \n \n \n \n \n \n \n {/if}\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n

{event.confirm_email_text}

\n {else}\n

{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated towaitlisted.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}\n {/if}\n {/if}\n

\n {/if}\n\n {if !empty($isOnWaitlist)}\n

{ts}You have been added to the WAIT LIST for this event.{/ts}

\n {if $isPrimary}\n

{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}

\n {/if}\n {elseif !empty($isRequireApproval)}\n

{ts}Your registration has been submitted.{/ts}

\n {if $isPrimary}\n

{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}

\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n

{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}

\n {/if}\n
\n \n \n \n \n \n \n \n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n \n \n \n \n {/if}\n\n {if !empty($isShowLocation)}\n \n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n \n \n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if {event.is_share|boolean}}\n \n \n \n {/if}\n {if !empty($payer.name)}\n \n \n \n \n \n \n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n \n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n \n \n \n {/if}\n \n \n \n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n \n \n \n \n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n \n \n \n \n {/if}\n {if $isPrimary}\n \n \n \n \n {if !empty($pricesetFieldsCount)}\n \n \n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n \n \n {/if}\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if !empty($financialTypeName)}\n \n \n \n \n {/if}\n\n {if !empty($trxn_id)}\n \n \n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n \n \n {/if}\n\n {if !empty($checkNumber)}\n \n \n \n \n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n \n \n \n {foreach from=$customPr item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n \n \n \n {foreach from=$customPos item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n \n \n \n {foreach from=$eachParticipant item=eachProfile key=pid}\n \n \n \n {foreach from=$eachProfile item=val key=field}\n \n {foreach from=$val item=v key=f}\n \n \n {/foreach}\n \n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {event.title}
\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}\n \n {participant.role_id:label}\n
\n {event.location}\n
\n {ts}Event Contacts:{/ts}\n
\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n
\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_id.email}\n
\n {ts}Email{/ts}\n \n {event.loc_block_id.email_2_id.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n
\n {ts}You were registered by:{/ts}\n
\n {$payer.name}\n
\n {event.fee_label}\n
\n {$currentParticipant.contact.display_name}\n
\n \n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n {/if}\n \n {if !empty($pricesetFieldsCount)}\n \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n {/if}\n \n {if !empty($pricesetFieldsCount)}\n \n {/if}\n \n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n \n \n \n \n \n \n {/if}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Subtotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Total Participants{/ts}
{$line.title}{$line.qty}{$line.unit_price|crmMoney:$currency}{$line.line_total|crmMoney:$currency}{$line.tax_rate|string_format:\"%.2f\"}%{$line.tax_amount|crmMoney:$currency}\n {$line.line_total_inclusive|crmMoney:$currency}\n {$line.participant_count}
{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}{$currentParticipant.totals.total_amount_exclusive|crmMoney}{$currentParticipant.totals.tax_amount|crmMoney}{$currentParticipant.totals.total_amount_inclusive|crmMoney}
\n
\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n \n {$currentLineItem.line_total|crmMoney:$currency}\n
\n {ts}Amount Before Tax:{/ts}\n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n
\n {ts}Total Amount{/ts}\n \n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n
\n {ts}Total Participants{/ts}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n
\n {ts}Registration Date{/ts}\n \n {participant.register_date}\n
\n {ts}Transaction Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Financial Type{/ts}\n \n {$financialTypeName}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {$checkNumber}\n
\n {ts}Billing Name and Address{/ts}\n
\n {contribution.address_id.name}
\n {contribution.address_id.display}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
{$customPre_grouptitle.$i}
{$customName}{$customValue}
{$customPost_grouptitle.$j}
{$customName}{$customValue}
{ts 1=$participantID+2}Participant %1{/ts}
{$customProfile.title.$pid}
{$field}{$v}
\n {if !empty($event.allow_selfcancelxfer)}\n
\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}
\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts}\n
\n\n\n\n',1,829,'event_online_receipt',0,1,0,NULL), + (33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n {$pay_later_receipt}\n{/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n Waitlisted:\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n','\n\n \n \n \n \n \n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $is_pay_later}\n

\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n

\n {else}\n

\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

\n {/if}\n\n

Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:

\n\n{if $billing_name}\n \n \n \n \n \n \n \n
\n {ts}Billing Name and Address{/ts}\n
\n {$billing_name}
\n {$billing_street_address}
\n {$billing_city}, {$billing_state} {$billing_postal_code}
\n
\n {$email}\n
\n{/if}\n{if $credit_card_type}\n

 

\n \n \n \n \n \n \n \n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n
\n{/if}\n{if !empty($source)}\n

 

\n {$source}\n{/if}\n

 

\n \n \n \n{if $line_items}\n \n \n{/if}\n \n \n \n \n \n {foreach from=$line_items item=line_item}\n \n \n \n \n \n \n {/foreach}\n \n \n {if $discounts}\n \n \n \n \n \n \n {foreach from=$discounts key=myId item=i}\n \n \n \n \n \n \n {/foreach}\n {/if}\n \n{if $line_items}\n \n \n{/if}\n \n \n \n \n
\n Event\n \n Participants\n \n Price\n \n Total\n
\n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})
\n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*}

\n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n
\n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n
\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}
\n {/foreach}\n
\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted:
\n
\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}
\n {/foreach}\n
\n {/if}\n
\n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n \n  {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n
\n \n \n Subtotal:\n \n  {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n
\n {$i.title}\n \n \n \n -{$i.amount}\n
\n \n \n Total:\n \n  {$total|crmMoney:$currency|string_format:\"%10s\"}\n
\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n \n\n',1,830,'event_registration_receipt',1,0,0,NULL), + (34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n {$pay_later_receipt}\n{/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n Waitlisted:\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n','\n\n \n \n \n \n \n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $is_pay_later}\n

\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n

\n {else}\n

\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

\n {/if}\n\n

Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:

\n\n{if $billing_name}\n \n \n \n \n \n \n \n
\n {ts}Billing Name and Address{/ts}\n
\n {$billing_name}
\n {$billing_street_address}
\n {$billing_city}, {$billing_state} {$billing_postal_code}
\n
\n {$email}\n
\n{/if}\n{if $credit_card_type}\n

 

\n \n \n \n \n \n \n \n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n
\n{/if}\n{if !empty($source)}\n

 

\n {$source}\n{/if}\n

 

\n \n \n \n{if $line_items}\n \n \n{/if}\n \n \n \n \n \n {foreach from=$line_items item=line_item}\n \n \n \n \n \n \n {/foreach}\n \n \n {if $discounts}\n \n \n \n \n \n \n {foreach from=$discounts key=myId item=i}\n \n \n \n \n \n \n {/foreach}\n {/if}\n \n{if $line_items}\n \n \n{/if}\n \n \n \n \n
\n Event\n \n Participants\n \n Price\n \n Total\n
\n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})
\n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*}

\n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n
\n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n
\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}
\n {/foreach}\n
\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted:
\n
\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}
\n {/foreach}\n
\n {/if}\n
\n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n \n  {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n
\n \n \n Subtotal:\n \n  {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n
\n {$i.title}\n \n \n \n -{$i.amount}\n
\n \n \n Total:\n \n  {$total|crmMoney:$currency|string_format:\"%10s\"}\n
\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n \n\n',1,830,'event_registration_receipt',0,1,0,NULL), + (35,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Your Event Registration has been cancelled.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {participant.role_id:label}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {participant.register_date}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,831,'participant_cancelled',1,0,0,NULL), + (36,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Your Event Registration has been cancelled.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {participant.role_id:label}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {participant.register_date}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,831,'participant_cancelled',0,1,0,NULL), + (37,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}\n\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $event.allow_selfcancelxfer}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n \n \n \n\n \n\n \n \n \n {if !$isAdditional and $participant.id}\n \n \n \n \n \n \n {/if}\n {if $event.allow_selfcancelxfer}\n {ts}This event allows for{/ts}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}self service cancel or transfer{/ts}\n {/if}\n\n \n \n \n {if $event.allow_selfcancelxfer}\n \n \n \n {/if}\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}

\n
\n {ts}Confirm Your Registration{/ts}\n
\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n {ts}Click here to confirm and complete your registration{/ts}\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\n \n \n \n \n \n \n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}
\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts}\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,832,'participant_confirm',1,0,0,NULL), + (38,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}\n\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $event.allow_selfcancelxfer}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n \n \n \n\n \n\n \n \n \n {if !$isAdditional and $participant.id}\n \n \n \n \n \n \n {/if}\n {if $event.allow_selfcancelxfer}\n {ts}This event allows for{/ts}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}self service cancel or transfer{/ts}\n {/if}\n\n \n \n \n {if $event.allow_selfcancelxfer}\n \n \n \n {/if}\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}

\n
\n {ts}Confirm Your Registration{/ts}\n
\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n {ts}Click here to confirm and complete your registration{/ts}\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\n \n \n \n \n \n \n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts}\n
\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}
\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts}\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,832,'participant_confirm',0,1,0,NULL), + (39,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}

\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,833,'participant_expired',1,0,0,NULL), + (40,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}

\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,833,'participant_expired',0,1,0,NULL), + (41,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,834,'participant_transferred',1,0,0,NULL), + (42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {if $isShowLocation}\n \n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n \n \n \n \n {/if}\n\n {if $register_date}\n \n \n \n \n {/if}\n\n
\n {ts}Event Information and Location{/ts}\n
\n {$event.event_title}
\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n
\n {ts}Participant Role{/ts}:\n \n {$participant.role}\n
\n {$event.location.address.1.display|nl2br}\n
\n {ts}Event Contacts:{/ts}\n
\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n {$phone.phone}\n
\n {ts}Email{/ts}\n \n {$eventEmail.email}\n
\n {ts}Registered Email{/ts}\n
\n {contact.email}\n
\n {ts}Registration Date{/ts}\n \n {$participant.register_date|crmDate}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}

\n
\n\n\n\n',1,834,'participant_transferred',0,1,0,NULL), + (43,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n

{$senderMessage}

\n {if $generalLink}\n

{ts}More information{/ts}

\n {/if}\n {if $contribute}\n

{ts}Make a contribution{/ts}

\n {/if}\n {if $event}\n

{ts}Find out more about this event{/ts}

\n {/if}\n
\n\n\n\n',1,835,'friend',1,0,0,NULL), + (44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n

{$senderMessage}

\n {if $generalLink}\n

{ts}More information{/ts}

\n {/if}\n {if $contribute}\n

{ts}Make a contribution{/ts}

\n {/if}\n {if $event}\n

{ts}Find out more about this event{/ts}

\n {/if}\n
\n\n\n\n',1,835,'friend',0,1,0,NULL), + (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n {if !empty($isPrimary)}\n \n \n \n {/if}\n\n {if !empty($customValues)}\n \n \n \n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $receipt_text}\n

{$receipt_text|htmlize}

\n {else}\n

{ts}Thank you for this contribution.{/ts}

\n {/if}\n
\n \n {if !$isShowLineItems}\n \n \n \n \n \n \n \n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n \n \n \n \n \n \n \n \n {/if}\n {if {contribution.total_amount|boolean}}\n \n \n \n {if {contribution.financial_type_id|boolean}}\n \n \n \n \n {/if}\n\n {if $isShowLineItems}\n \n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n \n {if {contribution.receive_date|boolean}}\n \n \n \n \n {/if}\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n \n \n {if {contribution.check_number|boolean}}\n \n \n \n \n {/if}\n {/if}\n {/if}\n {/if}\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Type{/ts}\n \n {membership.membership_type_id:name}\n
\n {ts}Membership Start Date{/ts}\n \n {membership.start_date|crmDate:\"Full\"}\n
\n {ts}Membership Expiration Date{/ts}\n \n {membership.end_date|crmDate:\"Full\"}\n
\n {ts}Membership Fee{/ts}\n
\n {ts}Financial Type{/ts}\n \n {contribution.financial_type_id:label}\n
\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n {foreach from=$lineItems item=line}\n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n \n {/if}\n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Fee{/ts}{ts}SubTotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Membership Start Date{/ts}{ts}Membership Expiration Date{/ts}
{$line.title}\n {$line.line_total|crmMoney}\n \n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n {$line.membership.end_date|crmDate:\"Full\"}\n
\n
\n {ts}Amount Before Tax:{/ts}\n \n {contribution.tax_exclusive_amount}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Contribution Date{/ts}\n \n {contribution.receive_date}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {contribution.check_number}\n
\n
\n \n\n {if !empty($billingName)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n \n \n \n \n {/if}\n\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}\n
\n {ts}Expires{/ts}\n \n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n
\n \n \n \n \n {foreach from=$customValues item=value key=customName}\n \n \n \n \n {/foreach}\n
\n {ts}Membership Options{/ts}\n
\n {$customName}\n \n {$value}\n
\n
\n\n\n\n',1,836,'membership_offline_receipt',1,0,0,NULL), + (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n {if !empty($isPrimary)}\n \n \n \n {/if}\n\n {if !empty($customValues)}\n \n \n \n {/if}\n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if $receipt_text}\n

{$receipt_text|htmlize}

\n {else}\n

{ts}Thank you for this contribution.{/ts}

\n {/if}\n
\n \n {if !$isShowLineItems}\n \n \n \n \n \n \n \n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n \n \n \n \n \n \n \n \n {/if}\n {if {contribution.total_amount|boolean}}\n \n \n \n {if {contribution.financial_type_id|boolean}}\n \n \n \n \n {/if}\n\n {if $isShowLineItems}\n \n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n \n \n \n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n \n {if {contribution.receive_date|boolean}}\n \n \n \n \n {/if}\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n \n \n {if {contribution.check_number|boolean}}\n \n \n \n \n {/if}\n {/if}\n {/if}\n {/if}\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Type{/ts}\n \n {membership.membership_type_id:name}\n
\n {ts}Membership Start Date{/ts}\n \n {membership.start_date|crmDate:\"Full\"}\n
\n {ts}Membership Expiration Date{/ts}\n \n {membership.end_date|crmDate:\"Full\"}\n
\n {ts}Membership Fee{/ts}\n
\n {ts}Financial Type{/ts}\n \n {contribution.financial_type_id:label}\n
\n \n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n \n \n {/if}\n \n \n \n {foreach from=$lineItems item=line}\n \n \n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n \n {else}\n \n \n {/if}\n \n {/if}\n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Fee{/ts}{ts}SubTotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Membership Start Date{/ts}{ts}Membership Expiration Date{/ts}
{$line.title}\n {$line.line_total|crmMoney}\n \n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n {$line.membership.end_date|crmDate:\"Full\"}\n
\n
\n {ts}Amount Before Tax:{/ts}\n \n {contribution.tax_exclusive_amount}\n
{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
\n {ts}Total Tax Amount{/ts}\n \n {contribution.tax_amount}\n
\n {ts}Amount{/ts}\n \n {contribution.total_amount}\n
\n {ts}Contribution Date{/ts}\n \n {contribution.receive_date}\n
\n {ts}Paid By{/ts}\n \n {contribution.payment_instrument_id:label}\n
\n {ts}Check Number{/ts}\n \n {contribution.check_number}\n
\n
\n \n\n {if !empty($billingName)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n \n \n \n \n {/if}\n\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}\n
\n {ts}Expires{/ts}\n \n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n
\n
\n \n \n \n \n {foreach from=$customValues item=value key=customName}\n \n \n \n \n {/foreach}\n
\n {ts}Membership Options{/ts}\n
\n {$customName}\n \n {$value}\n
\n
\n\n\n\n',1,836,'membership_offline_receipt',0,1,0,NULL), + (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if !empty($receipt_text)}\n

{$receipt_text|htmlize}

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n \n\n {if $membership_assign && !$useForMember}\n \n \n \n \n \n \n \n {if $mem_start_date}\n \n \n \n \n {/if}\n {if $mem_end_date}\n \n \n \n \n {/if}\n {/if}\n\n\n {if $amount}\n \n \n \n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n \n \n \n \n {if $amount && !$is_separate_payment}\n \n \n \n \n \n \n \n \n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n \n \n \n {/foreach}\n \n \n \n \n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n \n \n \n {/foreach}\n {if !empty($dataArray)}\n \n \n \n \n {foreach from=$dataArray item=value key=priceset}\n \n {if $priceset || $priceset == 0}\n \n \n {else}\n \n \n {/if}\n \n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n \n \n \n \n {/if}\n \n \n \n \n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n \n \n \n \n \n \n \n\n\n {/if}\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n \n \n \n \n {/if}\n\n {if !empty($membership_trx_id)}\n \n \n \n \n {/if}\n {if !empty($is_recur)}\n \n \n \n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n \n \n \n \n \n {if $pcp_roll_nickname}\n \n \n \n \n {/if}\n {if $pcp_personal_note}\n \n \n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {elseif !empty($email)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n \n \n \n \n {if $option}\n \n \n \n \n {/if}\n {if $sku}\n \n \n \n \n {/if}\n {if $start_date}\n \n \n \n \n {/if}\n {if $end_date}\n \n \n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Type{/ts}\n \n {$membership_name}\n
\n {ts}Membership Start Date{/ts}\n \n {$mem_start_date|crmDate}\n
\n {ts}Membership Expiration Date{/ts}\n \n {$mem_end_date|crmDate}\n
\n {ts}Membership Fee{/ts}\n
\n {ts 1=$membership_name}%1 Membership{/ts}\n \n {$membership_amount|crmMoney}\n
\n {ts}Contribution Amount{/ts}\n \n {$amount|crmMoney}\n
\n {ts}Total{/ts}\n \n {$amount+$membership_amount|crmMoney}\n
\n \n \n \n \n \n \n \n {foreach from=$value item=line}\n \n \n \n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Total{/ts}
\n {$line.description|truncate:30:\"...\"}\n \n {$line.qty}\n \n {$line.unit_price|crmMoney}\n \n {$line.line_total|crmMoney}\n
\n
\n {ts}Total Amount{/ts}\n \n {$amount|crmMoney}\n
\n \n \n \n \n {if !empty($dataArray)}\n \n \n \n \n {/if}\n \n \n \n {foreach from=$value item=line}\n \n \n \n {if !empty($dataArray)}\n \n {if ($line.tax_rate || $line.tax_amount != \"\")}\n \n \n {else}\n \n \n {/if}\n \n {/if}\n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Fee{/ts}{ts}SubTotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Membership Start Date{/ts}{ts}Membership Expiration Date{/ts}
\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}
{$line.description|truncate:30:\"...\"}
{/if}\n
\n {$line.line_total|crmMoney}\n \n {$line.unit_price*$line.qty|crmMoney}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney}\n \n {$line.line_total+$line.tax_amount|crmMoney}\n \n {$line.start_date}\n \n {$line.end_date}\n
\n
\n {ts}Amount Before Tax:{/ts}\n \n {$amount-$totalTaxAmount|crmMoney}\n
 {$taxTerm} {$priceset|string_format:\"%.2f\"}% {$value|crmMoney:$currency} {ts}NO{/ts} {$taxTerm} {$value|crmMoney:$currency}
\n {ts}Total Tax Amount{/ts}\n \n {$totalTaxAmount|crmMoney:$currency}\n
\n {ts}Amount{/ts}\n \n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n
\n {ts}Membership Fee{/ts}\n
\n {ts 1=$membership_name}%1 Membership{/ts}\n \n {$membership_amount|crmMoney}\n
\n {ts}Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Membership Transaction #{/ts}\n \n {$membership_trx_id}\n
\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n {/if}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n
\n {$soft_credit_type}\n
\n {$label}\n \n {$value}\n
\n {ts}Personal Campaign Page{/ts}\n
\n {ts}Display In Honor Roll{/ts}\n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n
\n {ts}Nickname{/ts}\n \n {$pcp_roll_nickname}\n
\n {ts}Personal Note{/ts}\n \n {$pcp_personal_note}\n
\n {$onBehalfProfile_grouptitle}\n
\n {$onBehalfName}\n \n {$onBehalfValue}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Registered Email{/ts}\n
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts}Premium Information{/ts}\n
\n {$product_name}\n
\n {ts}Option{/ts}\n \n {$option}\n
\n {ts}SKU{/ts}\n \n {$sku}\n
\n {ts}Start Date{/ts}\n \n {$start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$end_date|crmDate}\n
\n

{ts}For information about this premium, contact:{/ts}

\n {if !empty($contact_email)}\n

{$contact_email}

\n {/if}\n {if !empty($contact_phone)}\n

{$contact_phone}

\n {/if}\n
\n

{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}

\n
\n {$customPre_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n {$customPost_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n\n\n\n',1,837,'membership_online_receipt',1,0,0,NULL), + (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n {if !empty($receipt_text)}\n

{$receipt_text|htmlize}

\n {/if}\n\n {if $is_pay_later}\n

{$pay_later_receipt}

{* FIXME: this might be text rather than HTML *}\n {/if}\n\n
\n \n\n {if $membership_assign && !$useForMember}\n \n \n \n \n \n \n \n {if $mem_start_date}\n \n \n \n \n {/if}\n {if $mem_end_date}\n \n \n \n \n {/if}\n {/if}\n\n\n {if $amount}\n \n \n \n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n \n \n \n \n {if $amount && !$is_separate_payment}\n \n \n \n \n \n \n \n \n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n \n \n \n {/foreach}\n \n \n \n \n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n \n \n \n {/foreach}\n {if !empty($dataArray)}\n \n \n \n \n {foreach from=$dataArray item=value key=priceset}\n \n {if $priceset || $priceset == 0}\n \n \n {else}\n \n \n {/if}\n \n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n \n \n \n \n {/if}\n \n \n \n \n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n \n \n \n \n \n \n \n\n\n {/if}\n\n {if !empty($receive_date)}\n \n \n \n \n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n \n \n \n \n {/if}\n\n {if !empty($membership_trx_id)}\n \n \n \n \n {/if}\n {if !empty($is_recur)}\n \n \n \n {if $updateSubscriptionBillingUrl}\n \n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n \n \n \n \n \n {if $pcp_roll_nickname}\n \n \n \n \n {/if}\n {if $pcp_personal_note}\n \n \n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n \n \n \n \n \n \n {elseif !empty($email)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n \n \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n \n \n \n \n {if $option}\n \n \n \n \n {/if}\n {if $sku}\n \n \n \n \n {/if}\n {if $start_date}\n \n \n \n \n {/if}\n {if $end_date}\n \n \n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n \n \n {/foreach}\n {/if}\n\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Type{/ts}\n \n {$membership_name}\n
\n {ts}Membership Start Date{/ts}\n \n {$mem_start_date|crmDate}\n
\n {ts}Membership Expiration Date{/ts}\n \n {$mem_end_date|crmDate}\n
\n {ts}Membership Fee{/ts}\n
\n {ts 1=$membership_name}%1 Membership{/ts}\n \n {$membership_amount|crmMoney}\n
\n {ts}Contribution Amount{/ts}\n \n {$amount|crmMoney}\n
\n {ts}Total{/ts}\n \n {$amount+$membership_amount|crmMoney}\n
\n \n \n \n \n \n \n \n {foreach from=$value item=line}\n \n \n \n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Qty{/ts}{ts}Each{/ts}{ts}Total{/ts}
\n {$line.description|truncate:30:\"...\"}\n \n {$line.qty}\n \n {$line.unit_price|crmMoney}\n \n {$line.line_total|crmMoney}\n
\n
\n {ts}Total Amount{/ts}\n \n {$amount|crmMoney}\n
\n \n \n \n \n {if !empty($dataArray)}\n \n \n \n \n {/if}\n \n \n \n {foreach from=$value item=line}\n \n \n \n {if !empty($dataArray)}\n \n {if ($line.tax_rate || $line.tax_amount != \"\")}\n \n \n {else}\n \n \n {/if}\n \n {/if}\n \n \n \n {/foreach}\n
{ts}Item{/ts}{ts}Fee{/ts}{ts}SubTotal{/ts}{ts}Tax Rate{/ts}{ts}Tax Amount{/ts}{ts}Total{/ts}{ts}Membership Start Date{/ts}{ts}Membership Expiration Date{/ts}
\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}
{$line.description|truncate:30:\"...\"}
{/if}\n
\n {$line.line_total|crmMoney}\n \n {$line.unit_price*$line.qty|crmMoney}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n {$line.tax_amount|crmMoney}\n \n {$line.line_total+$line.tax_amount|crmMoney}\n \n {$line.start_date}\n \n {$line.end_date}\n
\n
\n {ts}Amount Before Tax:{/ts}\n \n {$amount-$totalTaxAmount|crmMoney}\n
 {$taxTerm} {$priceset|string_format:\"%.2f\"}% {$value|crmMoney:$currency} {ts}NO{/ts} {$taxTerm} {$value|crmMoney:$currency}
\n {ts}Total Tax Amount{/ts}\n \n {$totalTaxAmount|crmMoney:$currency}\n
\n {ts}Amount{/ts}\n \n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n
\n {ts}Membership Fee{/ts}\n
\n {ts 1=$membership_name}%1 Membership{/ts}\n \n {$membership_amount|crmMoney}\n
\n {ts}Date{/ts}\n \n {$receive_date|crmDate}\n
\n {ts}Transaction #{/ts}\n \n {$trxn_id}\n
\n {ts}Membership Transaction #{/ts}\n \n {$membership_trx_id}\n
\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page.{/ts}\n {/if}\n
\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page.{/ts}\n
\n {$soft_credit_type}\n
\n {$label}\n \n {$value}\n
\n {ts}Personal Campaign Page{/ts}\n
\n {ts}Display In Honor Roll{/ts}\n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n
\n {ts}Nickname{/ts}\n \n {$pcp_roll_nickname}\n
\n {ts}Personal Note{/ts}\n \n {$pcp_personal_note}\n
\n {$onBehalfProfile_grouptitle}\n
\n {$onBehalfName}\n \n {$onBehalfValue}\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Registered Email{/ts}\n
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts}Premium Information{/ts}\n
\n {$product_name}\n
\n {ts}Option{/ts}\n \n {$option}\n
\n {ts}SKU{/ts}\n \n {$sku}\n
\n {ts}Start Date{/ts}\n \n {$start_date|crmDate}\n
\n {ts}End Date{/ts}\n \n {$end_date|crmDate}\n
\n

{ts}For information about this premium, contact:{/ts}

\n {if !empty($contact_email)}\n

{$contact_email}

\n {/if}\n {if !empty($contact_phone)}\n

{$contact_phone}

\n {/if}\n
\n

{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}

\n
\n {$customPre_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n {$customPost_grouptitle}\n
\n {$customName}\n \n {$customValue}\n
\n\n\n\n',1,837,'membership_online_receipt',0,1,0,NULL), + (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}

\n\n
\n \n\n \n \n \n \n \n \n \n {if $mem_start_date}\n \n \n \n \n {/if}\n {if $mem_end_date}\n \n \n \n \n {/if}\n\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Status{/ts}\n \n {$membership_status}\n
\n {ts}Membership Start Date{/ts}\n \n {$mem_start_date|crmDate}\n
\n {ts}Membership Expiration Date{/ts}\n \n {$mem_end_date|crmDate}\n
\n\n\n\n',1,838,'membership_autorenew_cancelled',1,0,0,NULL), + (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}

\n\n
\n \n\n \n \n \n \n \n \n \n {if $mem_start_date}\n \n \n \n \n {/if}\n {if $mem_end_date}\n \n \n \n \n {/if}\n\n
\n {ts}Membership Information{/ts}\n
\n {ts}Membership Status{/ts}\n \n {$membership_status}\n
\n {ts}Membership Start Date{/ts}\n \n {$mem_start_date|crmDate}\n
\n {ts}Membership Expiration Date{/ts}\n \n {$mem_end_date|crmDate}\n
\n\n\n\n',1,838,'membership_autorenew_cancelled',0,1,0,NULL), + (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n
\n\n\n\n',1,839,'membership_autorenew_billing',1,0,0,NULL), + (52,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n {ts}Billing Name and Address{/ts}\n
\n {$billingName}
\n {$address|nl2br}
\n {$email}\n
\n {ts}Credit Card Information{/ts}\n
\n {$credit_card_type}
\n {$credit_card_number}
\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
\n
\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n
\n\n\n\n',1,839,'membership_autorenew_billing',0,1,0,NULL), (53,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n',' \n \n \n \n
\n

{ts}Test-drive Email / Receipt{/ts}

\n

{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}

\n
\n',1,840,'test_preview',1,0,0,NULL), (54,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n',' \n \n \n \n
\n

{ts}Test-drive Email / Receipt{/ts}

\n

{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}

\n
\n',1,840,'test_preview',0,1,0,NULL), - (55,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Thank you for your generous pledge.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Thank you for your generous pledge.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {if $payments}\n {assign var=\"count\" value=\"1\"}\n {foreach from=$payments item=payment}\n \n \n \n \n {assign var=\"count\" value=`$count+1`}\n {/foreach}\n {/if}\n\n \n \n \n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Pledge Information{/ts}\n
\n {ts}Pledge Received{/ts}\n \n {$create_date|truncate:10:\'\'|crmDate}\n
\n {ts}Total Pledge Amount{/ts}\n \n {$total_pledge_amount|crmMoney:$currency}\n
\n {ts}Payment Schedule{/ts}\n
\n

{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}

\n\n {if $frequency_day}\n

{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}

\n {/if}\n
\n {ts 1=$count}Payment %1{/ts}\n \n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}

\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n
\n\n\n\n',1,841,'pledge_acknowledge',1,0,0,NULL), - (56,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Thank you for your generous pledge.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Thank you for your generous pledge.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {if $payments}\n {assign var=\"count\" value=\"1\"}\n {foreach from=$payments item=payment}\n \n \n \n \n {assign var=\"count\" value=`$count+1`}\n {/foreach}\n {/if}\n\n \n \n \n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Pledge Information{/ts}\n
\n {ts}Pledge Received{/ts}\n \n {$create_date|truncate:10:\'\'|crmDate}\n
\n {ts}Total Pledge Amount{/ts}\n \n {$total_pledge_amount|crmMoney:$currency}\n
\n {ts}Payment Schedule{/ts}\n
\n

{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}

\n\n {if $frequency_day}\n

{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}

\n {/if}\n
\n {ts 1=$count}Payment %1{/ts}\n \n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}

\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n
\n\n\n\n',1,841,'pledge_acknowledge',0,1,0,NULL), - (57,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'} Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank you for your generous support.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n
\n {ts}Payment Due{/ts}\n
\n {ts}Amount Due{/ts}\n \n {$amount_due|crmMoney:$currency}\n
\n
\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n

{ts}Go to a web page where you can make your payment online{/ts}

\n {else}\n

{ts}Please mail your payment to{/ts}: {domain.address}

\n {/if}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Pledge Information{/ts}\n
\n {ts}Pledge Received{/ts}\n \n {$create_date|truncate:10:\'\'|crmDate}\n
\n {ts}Total Pledge Amount{/ts}\n \n {$amount|crmMoney:$currency}\n
\n {ts}Total Paid{/ts}\n \n {$amount_paid|crmMoney:$currency}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}

\n

{ts}Thank you for your generous support.{/ts}

\n
\n\n\n\n',1,842,'pledge_reminder',1,0,0,NULL), - (58,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'} Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank you for your generous support.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n
\n {ts}Payment Due{/ts}\n
\n {ts}Amount Due{/ts}\n \n {$amount_due|crmMoney:$currency}\n
\n
\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n

{ts}Go to a web page where you can make your payment online{/ts}

\n {else}\n

{ts}Please mail your payment to{/ts}: {domain.address}

\n {/if}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Pledge Information{/ts}\n
\n {ts}Pledge Received{/ts}\n \n {$create_date|truncate:10:\'\'|crmDate}\n
\n {ts}Total Pledge Amount{/ts}\n \n {$amount|crmMoney:$currency}\n
\n {ts}Total Paid{/ts}\n \n {$amount_paid|crmMoney:$currency}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}

\n

{ts}Thank you for your generous support.{/ts}

\n
\n\n\n\n',1,842,'pledge_reminder',0,1,0,NULL), - (59,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n {foreach from=$values item=value key=valueName}\n \n \n \n \n {/foreach}\n
\n {ts}Submitted For{/ts}\n \n {$displayName}\n
\n {ts}Date{/ts}\n \n {$currentDate}\n
\n {ts}Contact Summary{/ts}\n \n {$contactLink}\n
\n {$grouptitle}\n
\n {$valueName}\n \n {$value}\n
\n
\n\n\n\n',1,843,'uf_notify',1,0,0,NULL), - (60,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n {foreach from=$values item=value key=valueName}\n \n \n \n \n {/foreach}\n
\n {ts}Submitted For{/ts}\n \n {$displayName}\n
\n {ts}Date{/ts}\n \n {$currentDate}\n
\n {ts}Contact Summary{/ts}\n \n {$contactLink}\n
\n {$grouptitle}\n
\n {$valueName}\n \n {$value}\n
\n
\n\n\n\n',1,843,'uf_notify',0,1,0,NULL), + (55,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Thank you for your generous pledge.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=1}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=$count+1}\n{/foreach}\n{/if}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Thank you for your generous pledge.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {if $payments}\n {assign var=\"count\" value=1}\n {foreach from=$payments item=payment}\n \n \n \n \n {assign var=\"count\" value=$count+1}\n {/foreach}\n {/if}\n\n \n \n \n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Pledge Information{/ts}\n
\n {ts}Pledge Received{/ts}\n \n {$create_date|truncate:10:\'\'|crmDate}\n
\n {ts}Total Pledge Amount{/ts}\n \n {$total_pledge_amount|crmMoney:$currency}\n
\n {ts}Payment Schedule{/ts}\n
\n

{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}

\n\n {if $frequency_day}\n

{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}

\n {/if}\n
\n {ts 1=$count}Payment %1{/ts}\n \n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}

\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n
\n\n\n\n',1,841,'pledge_acknowledge',1,0,0,NULL), + (56,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Thank you for your generous pledge.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=1}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=$count+1}\n{/foreach}\n{/if}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts}Thank you for your generous pledge.{/ts}

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {if $payments}\n {assign var=\"count\" value=1}\n {foreach from=$payments item=payment}\n \n \n \n \n {assign var=\"count\" value=$count+1}\n {/foreach}\n {/if}\n\n \n \n \n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n \n \n \n {foreach from=$value item=v key=n}\n \n \n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n {ts}Pledge Information{/ts}\n
\n {ts}Pledge Received{/ts}\n \n {$create_date|truncate:10:\'\'|crmDate}\n
\n {ts}Total Pledge Amount{/ts}\n \n {$total_pledge_amount|crmMoney:$currency}\n
\n {ts}Payment Schedule{/ts}\n
\n

{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}

\n\n {if $frequency_day}\n

{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}

\n {/if}\n
\n {ts 1=$count}Payment %1{/ts}\n \n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}

\n
\n {$customName}\n
\n {$n}\n \n {$v}\n
\n
\n\n\n\n',1,841,'pledge_acknowledge',0,1,0,NULL), + (57,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'} Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank you for your generous support.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n
\n {ts}Payment Due{/ts}\n
\n {ts}Amount Due{/ts}\n \n {$amount_due|crmMoney:$currency}\n
\n
\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n

{ts}Go to a web page where you can make your payment online{/ts}

\n {else}\n

{ts}Please mail your payment to{/ts}: {domain.address}

\n {/if}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Pledge Information{/ts}\n
\n {ts}Pledge Received{/ts}\n \n {$create_date|truncate:10:\'\'|crmDate}\n
\n {ts}Total Pledge Amount{/ts}\n \n {$amount|crmMoney:$currency}\n
\n {ts}Total Paid{/ts}\n \n {$amount_paid|crmMoney:$currency}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}

\n

{ts}Thank you for your generous support.{/ts}

\n
\n\n\n\n',1,842,'pledge_reminder',1,0,0,NULL), + (58,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'} Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank you for your generous support.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n
\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n

{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}

\n
\n \n \n \n \n \n \n \n \n
\n {ts}Payment Due{/ts}\n
\n {ts}Amount Due{/ts}\n \n {$amount_due|crmMoney:$currency}\n
\n
\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n

{ts}Go to a web page where you can make your payment online{/ts}

\n {else}\n

{ts}Please mail your payment to{/ts}: {domain.address}

\n {/if}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {ts}Pledge Information{/ts}\n
\n {ts}Pledge Received{/ts}\n \n {$create_date|truncate:10:\'\'|crmDate}\n
\n {ts}Total Pledge Amount{/ts}\n \n {$amount|crmMoney:$currency}\n
\n {ts}Total Paid{/ts}\n \n {$amount_paid|crmMoney:$currency}\n
\n
\n

{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}

\n

{ts}Thank you for your generous support.{/ts}

\n
\n\n\n\n',1,842,'pledge_reminder',0,1,0,NULL), + (59,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n {foreach from=$values item=value key=valueName}\n \n \n \n \n {/foreach}\n
\n {ts}Submitted For{/ts}\n \n {$displayName}\n
\n {ts}Date{/ts}\n \n {$currentDate}\n
\n {ts}Contact Summary{/ts}\n \n {$contactLink}\n
\n {$grouptitle}\n
\n {$valueName}\n \n {$value}\n
\n
\n\n\n\n',1,843,'uf_notify',1,0,0,NULL), + (60,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n {foreach from=$values item=value key=valueName}\n \n \n \n \n {/foreach}\n
\n {ts}Submitted For{/ts}\n \n {$displayName}\n
\n {ts}Date{/ts}\n \n {$currentDate}\n
\n {ts}Contact Summary{/ts}\n \n {$contactLink}\n
\n {$grouptitle}\n
\n {$valueName}\n \n {$value}\n
\n
\n\n\n\n',1,843,'uf_notify',0,1,0,NULL), (61,'Petition - signature added','Thank you for signing {survey.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {survey.title}.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n\n

Thank you for signing {survey.title}.

\n\n{capture assign=petitionURL}{crmURL p=\'civicrm/petition/sign\' q=\"sid={survey.id}\" a=1 fe=1 h=1}{/capture}\n{include file=\"CRM/common/SocialNetwork.tpl\" url=$petitionURL title=\'{survey.title}\' pageURL=$petitionURL petition_id=\'{survey.id}\' noscript=true emailMode=true}\n',1,844,'petition_sign',1,0,0,NULL), (62,'Petition - signature added','Thank you for signing {survey.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {survey.title}.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n\n

Thank you for signing {survey.title}.

\n\n{capture assign=petitionURL}{crmURL p=\'civicrm/petition/sign\' q=\"sid={survey.id}\" a=1 fe=1 h=1}{/capture}\n{include file=\"CRM/common/SocialNetwork.tpl\" url=$petitionURL title=\'{survey.title}\' pageURL=$petitionURL petition_id=\'{survey.id}\' noscript=true emailMode=true}\n',1,844,'petition_sign',0,1,0,NULL), (63,'Petition - need verification','Confirmation of signature needed for {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}

{$greeting},

{/if}\n\n

Thank you for signing {$petition.title}.

\n\n

In order to complete your signature, we must confirm your e-mail.\n
\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n

\nEmail confirmation page: {$petition.confirmUrl}

\n\n

If you did not sign this petition, please ignore this message.

\n',1,845,'petition_confirmation_needed',1,0,0,NULL), @@ -5449,171 +5480,167 @@ INSERT INTO `civicrm_navigation` (`id`, `domain_id`, `label`, `name`, `url`, `ic (82,1,'New Price Set','New Price Set','civicrm/admin/price/edit?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',75,0,NULL,7), (83,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',75,1,NULL,8), (84,1,'Campaigns','Campaigns',NULL,'crm-i fa-bullhorn','interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',NULL,1,NULL,70), - (85,1,'Dashboard','Dashboard','civicrm/campaign?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,1), - (86,1,'Surveys','Survey Dashboard','civicrm/campaign?reset=1&subPage=survey',NULL,'manage campaign,administer CiviCampaign','OR',85,1,NULL,1), - (87,1,'Petitions','Petition Dashboard','civicrm/campaign?reset=1&subPage=petition',NULL,'manage campaign,administer CiviCampaign','OR',85,1,NULL,2), - (88,1,'Campaigns','Campaign Dashboard','civicrm/campaign?reset=1&subPage=campaign',NULL,'manage campaign,administer CiviCampaign','OR',85,1,NULL,3), - (89,1,'New Campaign','New Campaign','civicrm/campaign/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,2), - (90,1,'New Survey','New Survey','civicrm/survey/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,3), - (91,1,'New Petition','New Petition','civicrm/petition/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,4), - (92,1,'Reserve Respondents','Reserve Respondents','civicrm/survey/search?reset=1&op=reserve',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts','OR',84,1,NULL,5), - (93,1,'Interview Respondents','Interview Respondents','civicrm/survey/search?reset=1&op=interview',NULL,'administer CiviCampaign,manage campaign,interview campaign contacts','OR',84,1,NULL,6), - (94,1,'Release Respondents','Release Respondents','civicrm/survey/search?reset=1&op=release',NULL,'administer CiviCampaign,manage campaign,release campaign contacts','OR',84,1,NULL,7), - (95,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',84,1,1,8), - (96,1,'Conduct Survey','Conduct Survey','civicrm/campaign/vote?reset=1',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts,interview campaign contacts','OR',84,1,NULL,9), - (97,1,'GOTV (Voter Tracking)','Voter Listing','civicrm/campaign/gotv?reset=1',NULL,'administer CiviCampaign,manage campaign,release campaign contacts,gotv campaign contacts','OR',84,1,NULL,10), - (98,1,'Cases','Cases',NULL,'crm-i fa-folder-open-o','access my cases and activities,access all cases and activities','OR',NULL,1,NULL,80), - (99,1,'Dashboard','Dashboard','civicrm/case?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',98,1,NULL,1), - (100,1,'New Case','New Case','civicrm/case/add?reset=1&action=add&atype=13&context=standalone',NULL,'add cases,access all cases and activities','OR',98,1,NULL,2), - (101,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',98,1,1,3), - (102,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',98,1,0,4), - (103,1,'Administer','Administer',NULL,'crm-i fa-gears','administer CiviCRM','',NULL,1,NULL,100), - (104,1,'Administration Console','Administration Console','civicrm/admin?reset=1',NULL,'administer CiviCRM','',103,1,NULL,1), - (105,1,'System Status','System Status','civicrm/a/#/status',NULL,'administer CiviCRM','',104,1,NULL,0), - (106,1,'Configuration Checklist','Configuration Checklist','civicrm/admin/configtask?reset=1',NULL,'administer CiviCRM','',104,1,NULL,1), - (107,1,'Customize Data and Screens','Customize Data and Screens',NULL,NULL,'administer CiviCRM','',103,1,NULL,3), - (108,1,'Custom Fields','Custom Fields','civicrm/admin/custom/group?reset=1',NULL,'administer CiviCRM','',107,1,NULL,1), - (109,1,'Profiles','Profiles','civicrm/admin/uf/group?reset=1',NULL,'administer CiviCRM','',107,1,NULL,2), - (110,1,'Tags','Tags (Categories)','civicrm/tag?reset=1',NULL,'administer CiviCRM','',107,1,NULL,3), - (111,1,'Activity Types','Activity Types','civicrm/admin/options/activity_type?reset=1',NULL,'administer CiviCRM','',107,1,NULL,4), - (112,1,'Relationship Types','Relationship Types','civicrm/admin/reltype?reset=1',NULL,'administer CiviCRM','',107,1,NULL,5), - (113,1,'Contact Types','Contact Types','civicrm/admin/options/subtype?reset=1',NULL,'administer CiviCRM','',107,1,NULL,6), - (114,1,'Display Preferences','Display Preferences','civicrm/admin/setting/preferences/display?reset=1',NULL,'administer CiviCRM','',107,1,NULL,9), - (115,1,'Search Preferences','Search Preferences','civicrm/admin/setting/search?reset=1',NULL,'administer CiviCRM','',107,1,NULL,10), - (116,1,'Date Preferences','Date Preferences','civicrm/admin/setting/preferences/date?reset=1',NULL,'administer CiviCRM','',107,1,NULL,11), - (117,1,'Navigation Menu','Navigation Menu','civicrm/admin/menu?reset=1',NULL,'administer CiviCRM','',107,1,NULL,12), - (118,1,'Word Replacements','Word Replacements','civicrm/admin/options/wordreplacements?reset=1',NULL,'administer CiviCRM','',107,1,NULL,13), - (119,1,'Dropdown Options','Dropdown Options','civicrm/admin/options?action=browse&reset=1',NULL,'administer CiviCRM','',107,1,NULL,8), - (120,1,'Gender Options','Gender Options','civicrm/admin/options/gender?reset=1',NULL,'administer CiviCRM','',119,1,NULL,1), - (121,1,'Individual Prefixes (Ms, Mr...)','Individual Prefixes (Ms, Mr...)','civicrm/admin/options/individual_prefix?reset=1',NULL,'administer CiviCRM','',119,1,NULL,2), - (122,1,'Individual Suffixes (Jr, Sr...)','Individual Suffixes (Jr, Sr...)','civicrm/admin/options/individual_suffix?reset=1',NULL,'administer CiviCRM','',119,1,NULL,3), - (123,1,'Instant Messenger Services','Instant Messenger Services','civicrm/admin/options/instant_messenger_service?reset=1',NULL,'administer CiviCRM','',119,1,NULL,4), - (124,1,'Location Types (Home, Work...)','Location Types (Home, Work...)','civicrm/admin/locationType?reset=1',NULL,'administer CiviCRM','',119,1,NULL,5), - (125,1,'Mobile Phone Providers','Mobile Phone Providers','civicrm/admin/options/mobile_provider?reset=1',NULL,'administer CiviCRM','',119,1,NULL,6), - (126,1,'Phone Types','Phone Types','civicrm/admin/options/phone_type?reset=1',NULL,'administer CiviCRM','',119,1,NULL,7), - (127,1,'Website Types','Website Types','civicrm/admin/options/website_type?reset=1',NULL,'administer CiviCRM','',119,1,NULL,8), - (128,1,'Communications','Communications',NULL,NULL,'administer CiviCRM','',103,1,NULL,4), - (129,1,'Organization Address and Contact Info','Organization Address and Contact Info','civicrm/admin/domain?action=update&reset=1',NULL,'administer CiviCRM','',128,1,NULL,1), - (130,1,'FROM Email Addresses','FROM Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',128,1,NULL,2), - (131,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',128,1,NULL,3), - (132,1,'Schedule Reminders','Schedule Reminders','civicrm/admin/scheduleReminders?reset=1',NULL,'administer CiviCRM','',128,1,NULL,4), - (133,1,'Preferred Communication Methods','Preferred Communication Methods','civicrm/admin/options/preferred_communication_method?reset=1',NULL,'administer CiviCRM','',128,1,NULL,5), - (134,1,'Label Formats','Label Formats','civicrm/admin/labelFormats?reset=1',NULL,'administer CiviCRM','',128,1,NULL,6), - (135,1,'Print Page (PDF) Formats','Print Page (PDF) Formats','civicrm/admin/pdfFormats?reset=1',NULL,'administer CiviCRM','',128,1,NULL,7), - (136,1,'Communication Style Options','Communication Style Options','civicrm/admin/options/communication_style?reset=1',NULL,'administer CiviCRM','',128,1,NULL,8), - (137,1,'Email Greeting Formats','Email Greeting Formats','civicrm/admin/options/email_greeting?reset=1',NULL,'administer CiviCRM','',128,1,NULL,9), - (138,1,'Postal Greeting Formats','Postal Greeting Formats','civicrm/admin/options/postal_greeting?reset=1',NULL,'administer CiviCRM','',128,1,NULL,10), - (139,1,'Addressee Formats','Addressee Formats','civicrm/admin/options/addressee?reset=1',NULL,'administer CiviCRM','',128,1,NULL,11), - (140,1,'Localization','Localization',NULL,NULL,'administer CiviCRM','',103,1,NULL,6), - (141,1,'Languages, Currency, Locations','Languages, Currency, Locations','civicrm/admin/setting/localization?reset=1',NULL,'administer CiviCRM','',140,1,NULL,1), - (142,1,'Address Settings','Address Settings','civicrm/admin/setting/preferences/address?reset=1',NULL,'administer CiviCRM','',140,1,NULL,2), - (143,1,'Date Formats','Date Formats','civicrm/admin/setting/date?reset=1',NULL,'administer CiviCRM','',140,1,NULL,3), - (144,1,'Preferred Language Options','Preferred Language Options','civicrm/admin/options/languages?reset=1',NULL,'administer CiviCRM','',140,1,NULL,4), - (145,1,'Users and Permissions','Users and Permissions',NULL,NULL,'administer CiviCRM','',103,1,NULL,7), - (146,1,'Access Control Lists','Permissions (Access Control)','civicrm/admin/access?reset=1',NULL,'administer CiviCRM','',145,1,NULL,5), - (147,1,'Synchronize Users to Contacts','Synchronize Users to Contacts','civicrm/admin/synchUser?reset=1',NULL,'administer CiviCRM','',145,1,NULL,10), - (148,1,'System Settings','System Settings',NULL,NULL,'administer CiviCRM','',103,1,NULL,8), - (149,1,'Components','Enable Components','civicrm/admin/setting/component?reset=1',NULL,'administer CiviCRM','',148,1,NULL,1), - (150,1,'Extensions','Manage Extensions','civicrm/admin/extensions?reset=1',NULL,'administer CiviCRM','',148,1,1,3), - (151,1,'Cleanup Caches and Update Paths','Cleanup Caches and Update Paths','civicrm/admin/setting/updateConfigBackend?reset=1',NULL,'administer CiviCRM','',148,1,NULL,4), - (152,1,'CMS Database Integration','CMS Integration','civicrm/admin/setting/uf?reset=1',NULL,'administer CiviCRM','',148,1,NULL,5), - (153,1,'Debugging and Error Handling','Debugging and Error Handling','civicrm/admin/setting/debug?reset=1',NULL,'administer CiviCRM','',148,1,NULL,6), - (154,1,'Directories','Directories','civicrm/admin/setting/path?reset=1',NULL,'administer CiviCRM','',148,1,NULL,7), - (155,1,'Import/Export Mappings','Import/Export Mappings','civicrm/admin/mapping?reset=1',NULL,'administer CiviCRM','',148,1,NULL,8), - (156,1,'Mapping and Geocoding','Mapping and Geocoding','civicrm/admin/setting/mapping?reset=1',NULL,'administer CiviCRM','',148,1,NULL,9), - (157,1,'Misc (Undelete, PDFs, Limits, Logging, etc.)','misc_admin_settings','civicrm/admin/setting/misc?reset=1',NULL,'administer CiviCRM','',148,1,NULL,10), - (158,1,'Multi Site Settings','Multi Site Settings','civicrm/admin/setting/preferences/multisite?reset=1',NULL,'administer CiviCRM','',148,1,NULL,11), - (159,1,'Option Groups','Option Groups','civicrm/admin/options?reset=1',NULL,'administer CiviCRM','',148,1,NULL,12), - (160,1,'Outbound Email (SMTP/Sendmail)','Outbound Email','civicrm/admin/setting/smtp?reset=1',NULL,'administer CiviCRM','',148,1,NULL,13), - (161,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',148,1,NULL,14), - (162,1,'Resource URLs','Resource URLs','civicrm/admin/setting/url?reset=1',NULL,'administer CiviCRM','',148,1,NULL,15), - (163,1,'Safe File Extensions','Safe File Extensions','civicrm/admin/options/safe_file_extension?reset=1',NULL,'administer CiviCRM','',148,1,NULL,16), - (164,1,'Scheduled Jobs','Scheduled Jobs','civicrm/admin/job?reset=1',NULL,'administer CiviCRM','',148,1,NULL,17), - (165,1,'SMS Providers','SMS Providers','civicrm/admin/sms/provider?reset=1',NULL,'administer CiviCRM','',148,1,NULL,18), - (166,1,'CiviCampaign','CiviCampaign',NULL,NULL,'administer CiviCampaign,administer CiviCRM','AND',103,1,NULL,9), - (167,1,'Survey Types','Survey Types','civicrm/admin/campaign/surveyType?reset=1',NULL,'administer CiviCampaign','',166,1,NULL,1), - (168,1,'Campaign Types','Campaign Types','civicrm/admin/options/campaign_type?reset=1',NULL,'administer CiviCampaign','',166,1,NULL,2), - (169,1,'Campaign Status','Campaign Status','civicrm/admin/options/campaign_status?reset=1',NULL,'administer CiviCampaign','',166,1,NULL,3), - (170,1,'Engagement Index','Engagement Index','civicrm/admin/options/engagement_index?reset=1',NULL,'administer CiviCampaign','',166,1,NULL,4), - (171,1,'CiviCampaign Component Settings','CiviCampaign Component Settings','civicrm/admin/setting/preferences/campaign?reset=1',NULL,'administer CiviCampaign','',166,1,NULL,5), - (172,1,'CiviCase','CiviCase',NULL,NULL,'administer CiviCase',NULL,103,1,NULL,10), - (173,1,'CiviCase Settings','CiviCase Settings','civicrm/admin/setting/case?reset=1',NULL,'administer CiviCase',NULL,172,1,NULL,1), - (174,1,'Case Types','Case Types','civicrm/a/#/caseType',NULL,'administer CiviCase',NULL,172,1,NULL,2), - (175,1,'Redaction Rules','Redaction Rules','civicrm/admin/options/redaction_rule?reset=1',NULL,'administer CiviCase',NULL,172,1,NULL,3), - (176,1,'Case Statuses','Case Statuses','civicrm/admin/options/case_status?reset=1',NULL,'administer CiviCase',NULL,172,1,NULL,4), - (177,1,'Encounter Medium','Encounter Medium','civicrm/admin/options/encounter_medium?reset=1',NULL,'administer CiviCase',NULL,172,1,NULL,5), - (178,1,'CiviContribute','CiviContribute',NULL,NULL,'access CiviContribute,administer CiviCRM','AND',103,1,NULL,11), - (179,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,6), - (180,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,1,7), - (181,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,8), - (182,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,1,9), - (183,1,'Financial Types','Financial Types','civicrm/admin/financial/financialType?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,10), - (184,1,'Financial Accounts','Financial Accounts','civicrm/admin/financial/financialAccount?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,11), - (185,1,'Payment Methods','Payment Instruments','civicrm/admin/options/payment_instrument?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,12), - (186,1,'Accepted Credit Cards','Accepted Credit Cards','civicrm/admin/options/accept_creditcard?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,13), - (187,1,'Soft Credit Types','Soft Credit Types','civicrm/admin/options/soft_credit_type?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,1,14), - (188,1,'New Price Set','New Price Set','civicrm/admin/price/edit?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',178,0,NULL,15), - (189,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,16), - (190,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',178,1,NULL,17), - (191,1,'CiviContribute Component Settings','CiviContribute Component Settings','civicrm/admin/setting/preferences/contribute?reset=1',NULL,'administer CiviCRM','',178,1,NULL,18), - (192,1,'CiviEvent','CiviEvent',NULL,NULL,'access CiviEvent,administer CiviCRM','AND',103,1,NULL,12), - (193,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,1), - (194,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,1,2), - (195,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,1,3), - (196,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,1,4), - (197,1,'New Price Set','New Price Set','civicrm/admin/price/edit?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',192,0,NULL,5), - (198,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,1,6), - (199,1,'Event Types','Event Types','civicrm/admin/options/event_type?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,7), - (200,1,'Participant Statuses','Participant Statuses','civicrm/admin/participant_status?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,8), - (201,1,'Participant Roles','Participant Roles','civicrm/admin/options/participant_role?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,9), - (202,1,'Participant Listing Options','Participant Listing Options','civicrm/admin/options/participant_listing?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,10), - (203,1,'Event Name Badge Layouts','Event Name Badge Layouts','civicrm/admin/badgelayout?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,11), - (204,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',192,1,NULL,12), - (205,1,'CiviEvent Component Settings','CiviEvent Component Settings','civicrm/admin/setting/preferences/event?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,13), - (206,1,'CiviMail','CiviMail',NULL,NULL,'access CiviMail,administer CiviCRM','AND',103,1,NULL,14), - (207,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',206,1,NULL,1), - (208,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',206,1,NULL,2), - (209,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',206,1,NULL,3), - (210,1,'Mail Accounts','Mail Accounts','civicrm/admin/mailSettings?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',206,1,NULL,4), - (211,1,'Mailer Settings','Mailer Settings','civicrm/admin/mail?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',206,1,NULL,5), - (212,1,'CiviMail Component Settings','CiviMail Component Settings','civicrm/admin/setting/preferences/mailing?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',206,1,NULL,6), - (213,1,'CiviMember','CiviMember',NULL,NULL,'access CiviMember,administer CiviCRM','AND',103,1,NULL,15), - (214,1,'Membership Types','Membership Types','civicrm/admin/member/membershipType?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',213,1,NULL,1), - (215,1,'Membership Status Rules','Membership Status Rules','civicrm/admin/member/membershipStatus?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',213,1,1,2), - (216,1,'New Price Set','New Price Set','civicrm/admin/price/edit?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',213,1,NULL,3), - (217,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',213,1,NULL,4), - (218,1,'CiviMember Component Settings','CiviMember Component Settings','civicrm/admin/setting/preferences/member?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',213,1,NULL,5), - (219,1,'CiviReport','CiviReport',NULL,NULL,'access CiviReport,administer CiviCRM','AND',103,1,NULL,16), - (220,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',219,1,NULL,1), - (221,1,'Create New Report from Template','Create New Report from Template','civicrm/admin/report/template/list?reset=1',NULL,'administer Reports','',219,1,NULL,2), - (222,1,'Manage Templates','Manage Templates','civicrm/admin/report/options/report_template?reset=1',NULL,'administer Reports','',219,1,NULL,3), - (223,1,'Register Report','Register Report','civicrm/admin/report/register?reset=1',NULL,'administer Reports','',219,1,NULL,4), - (224,1,'Support','Support',NULL,'crm-i fa-life-ring',NULL,'',NULL,1,NULL,110), - (225,1,'User Guide','User Guide','https://docs.civicrm.org/user/?src=iam',NULL,NULL,'AND',224,1,NULL,1), - (226,1,'Get Help','Get Help','https://civicrm.org/help?src=iam',NULL,NULL,'AND',224,1,NULL,2), - (227,1,'About CiviCRM','About CiviCRM','https://civicrm.org/about?src=iam',NULL,NULL,'AND',224,1,1,3), - (228,1,'Register Your Site','Register Your Site','https://civicrm.org/register-your-site?src=iam&sid={sid}',NULL,NULL,'AND',224,1,NULL,4), - (229,1,'Join CiviCRM','Join CiviCRM','https://civicrm.org/become-a-member?src=iam&sid={sid}',NULL,NULL,'AND',224,1,NULL,5), - (230,1,'Developer','Developer',NULL,NULL,'administer CiviCRM','',224,1,1,6), - (231,1,'Api Explorer v3','API Explorer','civicrm/api3',NULL,'administer CiviCRM','',230,1,NULL,1), - (232,1,'Api Explorer v4','Api Explorer v4','civicrm/api4#/explorer',NULL,'administer CiviCRM','',230,1,NULL,2), - (233,1,'Developer Docs','Developer Docs','https://civicrm.org/developer-documentation?src=iam',NULL,'administer CiviCRM','',230,1,NULL,3), - (234,1,'Reports','Reports',NULL,'crm-i fa-bar-chart','access CiviReport','',NULL,1,NULL,95), - (235,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'administer CiviCRM','',234,1,0,1), - (236,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',234,1,0,2), - (237,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',234,1,0,3), - (238,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',234,1,0,4), - (239,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',234,1,0,5), - (240,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',234,1,0,6), - (241,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',234,1,0,7), - (242,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',234,1,0,8), - (243,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',234,1,1,10), - (244,1,'My Reports','My Reports','civicrm/report/list?myreports=1&reset=1',NULL,'access CiviReport','',234,1,1,11), - (245,1,'New Student','New Student','civicrm/contact/add?ct=Individual&cst=Student&reset=1',NULL,'add contacts','',14,1,NULL,1), - (246,1,'New Parent','New Parent','civicrm/contact/add?ct=Individual&cst=Parent&reset=1',NULL,'add contacts','',14,1,NULL,2), - (247,1,'New Staff','New Staff','civicrm/contact/add?ct=Individual&cst=Staff&reset=1',NULL,'add contacts','',14,1,NULL,3), - (248,1,'New Team','New Team','civicrm/contact/add?ct=Organization&cst=Team&reset=1',NULL,'add contacts','',16,1,NULL,1), - (249,1,'New Sponsor','New Sponsor','civicrm/contact/add?ct=Organization&cst=Sponsor&reset=1',NULL,'add contacts','',16,1,NULL,2); + (85,1,'New Campaign','New Campaign','civicrm/campaign/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,2), + (86,1,'New Survey','New Survey','civicrm/survey/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,3), + (87,1,'New Petition','New Petition','civicrm/petition/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,4), + (88,1,'Reserve Respondents','Reserve Respondents','civicrm/survey/search?reset=1&op=reserve',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts','OR',84,1,NULL,5), + (89,1,'Interview Respondents','Interview Respondents','civicrm/survey/search?reset=1&op=interview',NULL,'administer CiviCampaign,manage campaign,interview campaign contacts','OR',84,1,NULL,6), + (90,1,'Release Respondents','Release Respondents','civicrm/survey/search?reset=1&op=release',NULL,'administer CiviCampaign,manage campaign,release campaign contacts','OR',84,1,NULL,7), + (91,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',84,1,1,8), + (92,1,'Conduct Survey','Conduct Survey','civicrm/campaign/vote?reset=1',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts,interview campaign contacts','OR',84,1,NULL,9), + (93,1,'GOTV (Voter Tracking)','Voter Listing','civicrm/campaign/gotv?reset=1',NULL,'administer CiviCampaign,manage campaign,release campaign contacts,gotv campaign contacts','OR',84,1,NULL,10), + (94,1,'Cases','Cases',NULL,'crm-i fa-folder-open-o','access my cases and activities,access all cases and activities','OR',NULL,1,NULL,80), + (95,1,'Dashboard','Dashboard','civicrm/case?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',94,1,NULL,1), + (96,1,'New Case','New Case','civicrm/case/add?reset=1&action=add&atype=13&context=standalone',NULL,'add cases,access all cases and activities','OR',94,1,NULL,2), + (97,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',94,1,1,3), + (98,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',94,1,0,4), + (99,1,'Administer','Administer',NULL,'crm-i fa-gears','administer CiviCRM','',NULL,1,NULL,100), + (100,1,'Administration Console','Administration Console','civicrm/admin?reset=1',NULL,'administer CiviCRM','',99,1,NULL,1), + (101,1,'System Status','System Status','civicrm/a/#/status',NULL,'administer CiviCRM','',100,1,NULL,0), + (102,1,'Configuration Checklist','Configuration Checklist','civicrm/admin/configtask?reset=1',NULL,'administer CiviCRM','',100,1,NULL,1), + (103,1,'Customize Data and Screens','Customize Data and Screens',NULL,NULL,'administer CiviCRM','',99,1,NULL,3), + (104,1,'Custom Fields','Custom Fields','civicrm/admin/custom/group?reset=1',NULL,'administer CiviCRM','',103,1,NULL,1), + (105,1,'Profiles','Profiles','civicrm/admin/uf/group?reset=1',NULL,'administer CiviCRM','',103,1,NULL,2), + (106,1,'Tags','Tags (Categories)','civicrm/tag?reset=1',NULL,'administer CiviCRM','',103,1,NULL,3), + (107,1,'Activity Types','Activity Types','civicrm/admin/options/activity_type?reset=1',NULL,'administer CiviCRM','',103,1,NULL,4), + (108,1,'Relationship Types','Relationship Types','civicrm/admin/reltype?reset=1',NULL,'administer CiviCRM','',103,1,NULL,5), + (109,1,'Contact Types','Contact Types','civicrm/admin/options/subtype?reset=1',NULL,'administer CiviCRM','',103,1,NULL,6), + (110,1,'Display Preferences','Display Preferences','civicrm/admin/setting/preferences/display?reset=1',NULL,'administer CiviCRM','',103,1,NULL,9), + (111,1,'Search Preferences','Search Preferences','civicrm/admin/setting/search?reset=1',NULL,'administer CiviCRM','',103,1,NULL,10), + (112,1,'Date Preferences','Date Preferences','civicrm/admin/setting/preferences/date?reset=1',NULL,'administer CiviCRM','',103,1,NULL,11), + (113,1,'Navigation Menu','Navigation Menu','civicrm/admin/menu?reset=1',NULL,'administer CiviCRM','',103,1,NULL,12), + (114,1,'Word Replacements','Word Replacements','civicrm/admin/options/wordreplacements?reset=1',NULL,'administer CiviCRM','',103,1,NULL,13), + (115,1,'Dropdown Options','Dropdown Options','civicrm/admin/options?action=browse&reset=1',NULL,'administer CiviCRM','',103,1,NULL,8), + (116,1,'Gender Options','Gender Options','civicrm/admin/options/gender?reset=1',NULL,'administer CiviCRM','',115,1,NULL,1), + (117,1,'Individual Prefixes (Ms, Mr...)','Individual Prefixes (Ms, Mr...)','civicrm/admin/options/individual_prefix?reset=1',NULL,'administer CiviCRM','',115,1,NULL,2), + (118,1,'Individual Suffixes (Jr, Sr...)','Individual Suffixes (Jr, Sr...)','civicrm/admin/options/individual_suffix?reset=1',NULL,'administer CiviCRM','',115,1,NULL,3), + (119,1,'Instant Messenger Services','Instant Messenger Services','civicrm/admin/options/instant_messenger_service?reset=1',NULL,'administer CiviCRM','',115,1,NULL,4), + (120,1,'Location Types (Home, Work...)','Location Types (Home, Work...)','civicrm/admin/locationType?reset=1',NULL,'administer CiviCRM','',115,1,NULL,5), + (121,1,'Mobile Phone Providers','Mobile Phone Providers','civicrm/admin/options/mobile_provider?reset=1',NULL,'administer CiviCRM','',115,1,NULL,6), + (122,1,'Phone Types','Phone Types','civicrm/admin/options/phone_type?reset=1',NULL,'administer CiviCRM','',115,1,NULL,7), + (123,1,'Website Types','Website Types','civicrm/admin/options/website_type?reset=1',NULL,'administer CiviCRM','',115,1,NULL,8), + (124,1,'Communications','Communications',NULL,NULL,'administer CiviCRM','',99,1,NULL,4), + (125,1,'Organization Address and Contact Info','Organization Address and Contact Info','civicrm/admin/domain?action=update&reset=1',NULL,'administer CiviCRM','',124,1,NULL,1), + (126,1,'FROM Email Addresses','FROM Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',124,1,NULL,2), + (127,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',124,1,NULL,3), + (128,1,'Schedule Reminders','Schedule Reminders','civicrm/admin/scheduleReminders?reset=1',NULL,'administer CiviCRM','',124,1,NULL,4), + (129,1,'Preferred Communication Methods','Preferred Communication Methods','civicrm/admin/options/preferred_communication_method?reset=1',NULL,'administer CiviCRM','',124,1,NULL,5), + (130,1,'Label Formats','Label Formats','civicrm/admin/labelFormats?reset=1',NULL,'administer CiviCRM','',124,1,NULL,6), + (131,1,'Print Page (PDF) Formats','Print Page (PDF) Formats','civicrm/admin/pdfFormats?reset=1',NULL,'administer CiviCRM','',124,1,NULL,7), + (132,1,'Communication Style Options','Communication Style Options','civicrm/admin/options/communication_style?reset=1',NULL,'administer CiviCRM','',124,1,NULL,8), + (133,1,'Email Greeting Formats','Email Greeting Formats','civicrm/admin/options/email_greeting?reset=1',NULL,'administer CiviCRM','',124,1,NULL,9), + (134,1,'Postal Greeting Formats','Postal Greeting Formats','civicrm/admin/options/postal_greeting?reset=1',NULL,'administer CiviCRM','',124,1,NULL,10), + (135,1,'Addressee Formats','Addressee Formats','civicrm/admin/options/addressee?reset=1',NULL,'administer CiviCRM','',124,1,NULL,11), + (136,1,'Localization','Localization',NULL,NULL,'administer CiviCRM','',99,1,NULL,6), + (137,1,'Languages, Currency, Locations','Languages, Currency, Locations','civicrm/admin/setting/localization?reset=1',NULL,'administer CiviCRM','',136,1,NULL,1), + (138,1,'Address Settings','Address Settings','civicrm/admin/setting/preferences/address?reset=1',NULL,'administer CiviCRM','',136,1,NULL,2), + (139,1,'Date Formats','Date Formats','civicrm/admin/setting/date?reset=1',NULL,'administer CiviCRM','',136,1,NULL,3), + (140,1,'Preferred Language Options','Preferred Language Options','civicrm/admin/options/languages?reset=1',NULL,'administer CiviCRM','',136,1,NULL,4), + (141,1,'Users and Permissions','Users and Permissions',NULL,NULL,'administer CiviCRM','',99,1,NULL,7), + (142,1,'Access Control Lists','Permissions (Access Control)','civicrm/admin/access?reset=1',NULL,'administer CiviCRM','',141,1,NULL,5), + (143,1,'Synchronize Users to Contacts','Synchronize Users to Contacts','civicrm/admin/synchUser?reset=1',NULL,'administer CiviCRM','',141,1,NULL,10), + (144,1,'System Settings','System Settings',NULL,NULL,'administer CiviCRM','',99,1,NULL,8), + (145,1,'Components','Enable Components','civicrm/admin/setting/component?reset=1',NULL,'administer CiviCRM','',144,1,NULL,1), + (146,1,'Extensions','Manage Extensions','civicrm/admin/extensions?reset=1',NULL,'administer CiviCRM','',144,1,1,3), + (147,1,'Cleanup Caches and Update Paths','Cleanup Caches and Update Paths','civicrm/admin/setting/updateConfigBackend?reset=1',NULL,'administer CiviCRM','',144,1,NULL,4), + (148,1,'CMS Database Integration','CMS Integration','civicrm/admin/setting/uf?reset=1',NULL,'administer CiviCRM','',144,1,NULL,5), + (149,1,'Debugging and Error Handling','Debugging and Error Handling','civicrm/admin/setting/debug?reset=1',NULL,'administer CiviCRM','',144,1,NULL,6), + (150,1,'Directories','Directories','civicrm/admin/setting/path?reset=1',NULL,'administer CiviCRM','',144,1,NULL,7), + (151,1,'Import/Export Mappings','Import/Export Mappings','civicrm/admin/mapping?reset=1',NULL,'administer CiviCRM','',144,1,NULL,8), + (152,1,'Mapping and Geocoding','Mapping and Geocoding','civicrm/admin/setting/mapping?reset=1',NULL,'administer CiviCRM','',144,1,NULL,9), + (153,1,'Misc (Undelete, PDFs, Limits, Logging, etc.)','misc_admin_settings','civicrm/admin/setting/misc?reset=1',NULL,'administer CiviCRM','',144,1,NULL,10), + (154,1,'Multi Site Settings','Multi Site Settings','civicrm/admin/setting/preferences/multisite?reset=1',NULL,'administer CiviCRM','',144,1,NULL,11), + (155,1,'Option Groups','Option Groups','civicrm/admin/options?reset=1',NULL,'administer CiviCRM','',144,1,NULL,12), + (156,1,'Outbound Email (SMTP/Sendmail)','Outbound Email','civicrm/admin/setting/smtp?reset=1',NULL,'administer CiviCRM','',144,1,NULL,13), + (157,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',144,1,NULL,14), + (158,1,'Resource URLs','Resource URLs','civicrm/admin/setting/url?reset=1',NULL,'administer CiviCRM','',144,1,NULL,15), + (159,1,'Safe File Extensions','Safe File Extensions','civicrm/admin/options/safe_file_extension?reset=1',NULL,'administer CiviCRM','',144,1,NULL,16), + (160,1,'Scheduled Jobs','Scheduled Jobs','civicrm/admin/job?reset=1',NULL,'administer CiviCRM','',144,1,NULL,17), + (161,1,'SMS Providers','SMS Providers','civicrm/admin/sms/provider?reset=1',NULL,'administer CiviCRM','',144,1,NULL,18), + (162,1,'CiviCampaign','CiviCampaign',NULL,NULL,'administer CiviCampaign,administer CiviCRM','AND',99,1,NULL,9), + (163,1,'Survey Types','Survey Types','civicrm/admin/campaign/surveyType?reset=1',NULL,'administer CiviCampaign','',162,1,NULL,1), + (164,1,'Campaign Types','Campaign Types','civicrm/admin/options/campaign_type?reset=1',NULL,'administer CiviCampaign','',162,1,NULL,2), + (165,1,'Campaign Status','Campaign Status','civicrm/admin/options/campaign_status?reset=1',NULL,'administer CiviCampaign','',162,1,NULL,3), + (166,1,'Engagement Index','Engagement Index','civicrm/admin/options/engagement_index?reset=1',NULL,'administer CiviCampaign','',162,1,NULL,4), + (167,1,'CiviCampaign Component Settings','CiviCampaign Component Settings','civicrm/admin/setting/preferences/campaign?reset=1',NULL,'administer CiviCampaign','',162,1,NULL,5), + (168,1,'CiviCase','CiviCase',NULL,NULL,'administer CiviCase',NULL,99,1,NULL,10), + (169,1,'CiviCase Settings','CiviCase Settings','civicrm/admin/setting/case?reset=1',NULL,'administer CiviCase',NULL,168,1,NULL,1), + (170,1,'Case Types','Case Types','civicrm/a/#/caseType',NULL,'administer CiviCase',NULL,168,1,NULL,2), + (171,1,'Redaction Rules','Redaction Rules','civicrm/admin/options/redaction_rule?reset=1',NULL,'administer CiviCase',NULL,168,1,NULL,3), + (172,1,'Case Statuses','Case Statuses','civicrm/admin/options/case_status?reset=1',NULL,'administer CiviCase',NULL,168,1,NULL,4), + (173,1,'Encounter Medium','Encounter Medium','civicrm/admin/options/encounter_medium?reset=1',NULL,'administer CiviCase',NULL,168,1,NULL,5), + (174,1,'CiviContribute','CiviContribute',NULL,NULL,'access CiviContribute,administer CiviCRM','AND',99,1,NULL,11), + (175,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',174,1,NULL,6), + (176,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',174,1,1,7), + (177,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',174,1,NULL,8), + (178,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',174,1,1,9), + (179,1,'Financial Types','Financial Types','civicrm/admin/financial/financialType?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',174,1,NULL,10), + (180,1,'Financial Accounts','Financial Accounts','civicrm/admin/financial/financialAccount?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',174,1,NULL,11), + (181,1,'Payment Methods','Payment Instruments','civicrm/admin/options/payment_instrument?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',174,1,NULL,12), + (182,1,'Accepted Credit Cards','Accepted Credit Cards','civicrm/admin/options/accept_creditcard?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',174,1,NULL,13), + (183,1,'Soft Credit Types','Soft Credit Types','civicrm/admin/options/soft_credit_type?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',174,1,1,14), + (184,1,'New Price Set','New Price Set','civicrm/admin/price/edit?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',174,0,NULL,15), + (185,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',174,1,NULL,16), + (186,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',174,1,NULL,17), + (187,1,'CiviContribute Component Settings','CiviContribute Component Settings','civicrm/admin/setting/preferences/contribute?reset=1',NULL,'administer CiviCRM','',174,1,NULL,18), + (188,1,'CiviEvent','CiviEvent',NULL,NULL,'access CiviEvent,administer CiviCRM','AND',99,1,NULL,12), + (189,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,NULL,1), + (190,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,1,2), + (191,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,1,3), + (192,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,1,4), + (193,1,'New Price Set','New Price Set','civicrm/admin/price/edit?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',188,0,NULL,5), + (194,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,1,6), + (195,1,'Event Types','Event Types','civicrm/admin/options/event_type?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,NULL,7), + (196,1,'Participant Statuses','Participant Statuses','civicrm/admin/participant_status?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,NULL,8), + (197,1,'Participant Roles','Participant Roles','civicrm/admin/options/participant_role?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,NULL,9), + (198,1,'Participant Listing Options','Participant Listing Options','civicrm/admin/options/participant_listing?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,NULL,10), + (199,1,'Event Name Badge Layouts','Event Name Badge Layouts','civicrm/admin/badgelayout?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,NULL,11), + (200,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',188,1,NULL,12), + (201,1,'CiviEvent Component Settings','CiviEvent Component Settings','civicrm/admin/setting/preferences/event?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',188,1,NULL,13), + (202,1,'CiviMail','CiviMail',NULL,NULL,'access CiviMail,administer CiviCRM','AND',99,1,NULL,14), + (203,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',202,1,NULL,1), + (204,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',202,1,NULL,2), + (205,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',202,1,NULL,3), + (206,1,'Mail Accounts','Mail Accounts','civicrm/admin/mailSettings?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',202,1,NULL,4), + (207,1,'Mailer Settings','Mailer Settings','civicrm/admin/mail?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',202,1,NULL,5), + (208,1,'CiviMail Component Settings','CiviMail Component Settings','civicrm/admin/setting/preferences/mailing?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',202,1,NULL,6), + (209,1,'CiviMember','CiviMember',NULL,NULL,'access CiviMember,administer CiviCRM','AND',99,1,NULL,15), + (210,1,'Membership Types','Membership Types','civicrm/admin/member/membershipType?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',209,1,NULL,1), + (211,1,'Membership Status Rules','Membership Status Rules','civicrm/admin/member/membershipStatus?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',209,1,1,2), + (212,1,'New Price Set','New Price Set','civicrm/admin/price/edit?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',209,1,NULL,3), + (213,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',209,1,NULL,4), + (214,1,'CiviMember Component Settings','CiviMember Component Settings','civicrm/admin/setting/preferences/member?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',209,1,NULL,5), + (215,1,'CiviReport','CiviReport',NULL,NULL,'access CiviReport,administer CiviCRM','AND',99,1,NULL,16), + (216,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',215,1,NULL,1), + (217,1,'Create New Report from Template','Create New Report from Template','civicrm/admin/report/template/list?reset=1',NULL,'administer Reports','',215,1,NULL,2), + (218,1,'Manage Templates','Manage Templates','civicrm/admin/report/options/report_template?reset=1',NULL,'administer Reports','',215,1,NULL,3), + (219,1,'Register Report','Register Report','civicrm/admin/report/register?reset=1',NULL,'administer Reports','',215,1,NULL,4), + (220,1,'Support','Support',NULL,'crm-i fa-life-ring',NULL,'',NULL,1,NULL,110), + (221,1,'User Guide','User Guide','https://docs.civicrm.org/user/?src=iam',NULL,NULL,'AND',220,1,NULL,1), + (222,1,'Get Help','Get Help','https://civicrm.org/help?src=iam',NULL,NULL,'AND',220,1,NULL,2), + (223,1,'About CiviCRM','About CiviCRM','https://civicrm.org/about?src=iam',NULL,NULL,'AND',220,1,1,3), + (224,1,'Register Your Site','Register Your Site','https://civicrm.org/register-your-site?src=iam&sid={sid}',NULL,NULL,'AND',220,1,NULL,4), + (225,1,'Join CiviCRM','Join CiviCRM','https://civicrm.org/become-a-member?src=iam&sid={sid}',NULL,NULL,'AND',220,1,NULL,5), + (226,1,'Developer','Developer',NULL,NULL,'administer CiviCRM','',220,1,1,6), + (227,1,'Api Explorer v3','API Explorer','civicrm/api3',NULL,'administer CiviCRM','',226,1,NULL,1), + (228,1,'Api Explorer v4','Api Explorer v4','civicrm/api4#/explorer',NULL,'administer CiviCRM','',226,1,NULL,2), + (229,1,'Developer Docs','Developer Docs','https://civicrm.org/developer-documentation?src=iam',NULL,'administer CiviCRM','',226,1,NULL,3), + (230,1,'Reports','Reports',NULL,'crm-i fa-bar-chart','access CiviReport','',NULL,1,NULL,95), + (231,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'administer CiviCRM','',230,1,0,1), + (232,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',230,1,0,2), + (233,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',230,1,0,3), + (234,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',230,1,0,4), + (235,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',230,1,0,5), + (236,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',230,1,0,6), + (237,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',230,1,0,7), + (238,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',230,1,0,8), + (239,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',230,1,1,10), + (240,1,'My Reports','My Reports','civicrm/report/list?myreports=1&reset=1',NULL,'access CiviReport','',230,1,1,11), + (241,1,'New Student','New Student','civicrm/contact/add?ct=Individual&cst=Student&reset=1',NULL,'add contacts','',14,1,NULL,1), + (242,1,'New Parent','New Parent','civicrm/contact/add?ct=Individual&cst=Parent&reset=1',NULL,'add contacts','',14,1,NULL,2), + (243,1,'New Staff','New Staff','civicrm/contact/add?ct=Individual&cst=Staff&reset=1',NULL,'add contacts','',14,1,NULL,3), + (244,1,'New Team','New Team','civicrm/contact/add?ct=Organization&cst=Team&reset=1',NULL,'add contacts','',16,1,NULL,1), + (245,1,'New Sponsor','New Sponsor','civicrm/contact/add?ct=Organization&cst=Sponsor&reset=1',NULL,'add contacts','',16,1,NULL,2); /*!40000 ALTER TABLE `civicrm_navigation` ENABLE KEYS */; UNLOCK TABLES; @@ -5624,26 +5651,26 @@ UNLOCK TABLES; LOCK TABLES `civicrm_note` WRITE; /*!40000 ALTER TABLE `civicrm_note` DISABLE KEYS */; INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `note_date`, `created_date`, `modified_date`, `subject`, `privacy`) VALUES - (1,'civicrm_contact',61,'Reminder screening of \"Black\" on next Friday',1,'2023-09-19 09:27:53','2023-09-19 09:27:53','2022-12-27 23:23:21',NULL,'0'), - (2,'civicrm_contact',81,'Send newsletter for April 2005',1,'2023-09-19 09:27:53','2023-09-19 09:27:53','2023-02-06 23:43:13',NULL,'0'), - (3,'civicrm_contact',33,'Connect for presentation',1,'2023-09-19 09:27:53','2023-09-19 09:27:53','2023-01-15 08:57:02',NULL,'0'), - (4,'civicrm_contact',132,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-09-19 09:27:53','2023-09-19 09:27:53','2022-10-04 15:02:05',NULL,'0'), - (5,'civicrm_contact',88,'Arrange collection of funds from members',1,'2023-09-19 09:27:53','2023-09-19 09:27:53','2022-09-30 01:45:01',NULL,'0'), - (6,'civicrm_contact',117,'Organize the Terry Fox run',1,'2023-09-19 09:27:53','2023-09-19 09:27:53','2022-12-14 12:24:22',NULL,'0'), - (7,'civicrm_contact',191,'Reminder screening of \"Black\" on next Friday',1,'2023-09-19 09:27:53','2023-09-19 09:27:53','2022-11-04 19:45:22',NULL,'0'), - (8,'civicrm_contact',84,'Chart out route map for next 10k run',1,'2023-09-19 09:27:53','2023-09-19 09:27:53','2023-05-29 23:18:39',NULL,'0'), - (9,'civicrm_contact',18,'Reminder screening of \"Black\" on next Friday',1,'2023-09-19 09:27:53','2023-09-19 09:27:53','2022-12-18 05:20:05',NULL,'0'), - (10,'civicrm_contact',145,'Organize the Terry Fox run',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2022-12-03 03:43:22',NULL,'0'), - (11,'civicrm_contact',151,'Chart out route map for next 10k run',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2023-01-26 02:01:34',NULL,'0'), - (12,'civicrm_contact',17,'Reminder screening of \"Black\" on next Friday',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2023-03-09 23:03:29',NULL,'0'), - (13,'civicrm_contact',28,'Connect for presentation',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2023-06-20 18:28:00',NULL,'0'), - (14,'civicrm_contact',47,'Arrange for cricket match with Sunil Gavaskar',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2022-10-26 16:40:28',NULL,'0'), - (15,'civicrm_contact',88,'Send reminder for annual dinner',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2023-08-04 15:38:30',NULL,'0'), - (16,'civicrm_contact',199,'Get the registration done for NGO status',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2023-03-10 00:52:59',NULL,'0'), - (17,'civicrm_contact',60,'Get the registration done for NGO status',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2022-09-20 16:56:13',NULL,'0'), - (18,'civicrm_contact',15,'Chart out route map for next 10k run',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2022-11-02 05:59:16',NULL,'0'), - (19,'civicrm_contact',150,'Connect for presentation',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2023-06-28 13:48:48',NULL,'0'), - (20,'civicrm_contact',54,'Reminder screening of \"Black\" on next Friday',1,'2023-09-19 09:27:54','2023-09-19 09:27:54','2023-01-08 15:49:32',NULL,'0'); + (1,'civicrm_contact',114,'Organize the Terry Fox run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-01-16 11:08:46',NULL,'0'), + (2,'civicrm_contact',17,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-07-05 07:23:18',NULL,'0'), + (3,'civicrm_contact',20,'Contact the Commissioner of Charities',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-30 14:07:31',NULL,'0'), + (4,'civicrm_contact',18,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-02-02 15:25:51',NULL,'0'), + (5,'civicrm_contact',41,'Get the registration done for NGO status',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-07 11:05:21',NULL,'0'), + (6,'civicrm_contact',148,'Organize the Terry Fox run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-28 19:57:06',NULL,'0'), + (7,'civicrm_contact',53,'Reminder screening of \"Black\" on next Friday',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-10-24 13:07:48',NULL,'0'), + (8,'civicrm_contact',89,'Chart out route map for next 10k run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-09 07:36:28',NULL,'0'), + (9,'civicrm_contact',12,'Connect for presentation',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-11-11 03:25:47',NULL,'0'), + (10,'civicrm_contact',107,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-08-16 01:33:00',NULL,'0'), + (11,'civicrm_contact',38,'Reminder screening of \"Black\" on next Friday',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-04 04:20:12',NULL,'0'), + (12,'civicrm_contact',165,'Contact the Commissioner of Charities',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-12-22 04:04:51',NULL,'0'), + (13,'civicrm_contact',189,'Connect for presentation',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-02-02 21:42:27',NULL,'0'), + (14,'civicrm_contact',70,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-03-13 02:59:38',NULL,'0'), + (15,'civicrm_contact',83,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-30 02:27:16',NULL,'0'), + (16,'civicrm_contact',119,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-04 21:03:38',NULL,'0'), + (17,'civicrm_contact',157,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-12-10 22:02:49',NULL,'0'), + (18,'civicrm_contact',124,'Get the registration done for NGO status',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-14 01:33:44',NULL,'0'), + (19,'civicrm_contact',196,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-09-08 05:58:30',NULL,'0'), + (20,'civicrm_contact',49,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-26 14:48:43',NULL,'0'); /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */; UNLOCK TABLES; @@ -6031,9 +6058,9 @@ INSERT INTO `civicrm_option_value` (`id`, `option_group_id`, `label`, `value`, ` (259,33,'Fax','3','Fax',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), (260,33,'Pager','4','Pager',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), (261,33,'Voicemail','5','Voicemail',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (262,34,'Participants (Role)','1','ParticipantRole','role_id',0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (263,34,'Participants (Event Name)','2','ParticipantEventName','event_id',0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (264,34,'Participants (Event Type)','3','ParticipantEventType','event_id.event_type_id',0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (262,34,'Role','1','ParticipantRole','role_id',0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (263,34,'Event Name','2','ParticipantEventName','event_id',0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (264,34,'Event Type','3','ParticipantEventType','event_id.event_type_id',0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), (265,35,'Public','1','public',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), (266,35,'Admin','2','admin',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), (267,36,'IMAP','1','IMAP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), @@ -6650,56 +6677,56 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant` WRITE; /*!40000 ALTER TABLE `civicrm_participant` DISABLE KEYS */; INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`, `created_id`) VALUES - (1,165,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (2,142,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (3,79,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (4,106,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (5,48,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (6,138,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (7,155,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (8,115,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (9,71,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (10,90,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (11,54,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (12,201,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (13,161,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (14,41,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (15,140,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (16,16,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (17,34,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (18,39,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (19,8,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (20,55,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (21,191,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (22,158,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (23,53,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (24,181,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (25,186,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (26,139,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (27,6,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (28,10,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (29,87,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (30,66,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (31,23,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (32,56,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (33,70,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (34,137,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (35,72,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (36,68,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (37,27,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (38,20,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (39,60,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (40,25,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (41,114,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (42,148,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (43,84,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (44,64,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (45,150,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (46,111,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (47,131,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (48,14,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (49,175,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (50,172,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL); + (1,10,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (2,92,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (3,160,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (4,77,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (5,36,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (6,40,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (7,94,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (8,41,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (9,23,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (10,13,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (11,195,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (12,192,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (13,135,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (14,30,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (15,16,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (16,132,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (17,179,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (18,189,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (19,123,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (20,144,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (21,80,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (22,178,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (23,45,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (24,196,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (25,182,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (26,8,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (27,101,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (28,158,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (29,19,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (30,73,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (31,76,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (32,197,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (33,97,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (34,6,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (35,159,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (36,17,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (37,127,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (38,154,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (39,84,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (40,117,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (41,14,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (42,156,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (43,163,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (44,184,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (45,96,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (46,57,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (47,175,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (48,172,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (49,69,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (50,88,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */; UNLOCK TABLES; @@ -6710,56 +6737,56 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant_payment` WRITE; /*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */; INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES - (1,27,63), - (2,19,64), - (3,28,65), - (4,48,66), - (5,16,67), - (6,38,68), - (7,31,69), - (8,40,70), - (9,37,71), - (10,17,72), - (11,18,73), - (12,14,74), - (13,5,75), + (1,34,63), + (2,26,64), + (3,1,65), + (4,10,66), + (5,41,67), + (6,15,68), + (7,36,69), + (8,29,70), + (9,9,71), + (10,14,72), + (11,5,73), + (12,6,74), + (13,8,75), (14,23,76), - (15,11,77), - (16,20,78), - (17,32,79), - (18,39,80), - (19,44,81), - (20,30,82), - (21,36,83), - (22,33,84), - (23,9,85), - (24,35,86), - (25,3,87), - (26,43,88), - (27,29,89), - (28,10,90), - (29,4,91), - (30,46,92), - (31,41,93), - (32,8,94), - (33,47,95), - (34,34,96), - (35,6,97), - (36,26,98), - (37,15,99), - (38,2,100), - (39,42,101), - (40,45,102), - (41,7,103), + (15,46,77), + (16,49,78), + (17,30,79), + (18,31,80), + (19,4,81), + (20,21,82), + (21,39,83), + (22,50,84), + (23,2,85), + (24,7,86), + (25,45,87), + (26,33,88), + (27,27,89), + (28,40,90), + (29,19,91), + (30,37,92), + (31,16,93), + (32,13,94), + (33,20,95), + (34,38,96), + (35,42,97), + (36,28,98), + (37,35,99), + (38,3,100), + (39,43,101), + (40,48,102), + (41,47,103), (42,22,104), - (43,13,105), - (44,1,106), - (45,50,107), - (46,49,108), - (47,24,109), - (48,25,110), - (49,21,111), - (50,12,112); + (43,17,105), + (44,25,106), + (45,44,107), + (46,18,108), + (47,12,109), + (48,11,110), + (49,24,111), + (50,32,112); /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -6832,7 +6859,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_pcp` WRITE; /*!40000 ALTER TABLE `civicrm_pcp` DISABLE KEYS */; INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES - (1,141,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.','

Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!

\r\n

You can learn more about CiviCRM here.

\r\n

Then click the Contribute Now button to go to our easy-to-use online contribution form.

','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1); + (1,142,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','

Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!

\r\n

You can learn more about CiviCRM here.

\r\n

Then click the Contribute Now button to go to our easy-to-use online contribution form.

','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1); /*!40000 ALTER TABLE `civicrm_pcp` ENABLE KEYS */; UNLOCK TABLES; @@ -6854,174 +6881,183 @@ UNLOCK TABLES; LOCK TABLES `civicrm_phone` WRITE; /*!40000 ALTER TABLE `civicrm_phone` DISABLE KEYS */; INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES - (1,119,1,1,0,NULL,'(234) 567-1761',NULL,'2345671761',1), - (2,119,1,0,0,NULL,'(408) 892-8505',NULL,'4088928505',1), - (3,16,1,1,0,NULL,'(874) 306-2839',NULL,'8743062839',1), - (4,139,1,1,0,NULL,'(770) 821-8736',NULL,'7708218736',1), - (5,139,1,0,0,NULL,'549-9358',NULL,'5499358',2), - (6,156,1,1,0,NULL,'(270) 751-2363',NULL,'2707512363',2), - (7,156,1,0,0,NULL,'530-2038',NULL,'5302038',1), - (8,122,1,1,0,NULL,'(834) 299-8471',NULL,'8342998471',1), - (9,132,1,1,0,NULL,'634-7921',NULL,'6347921',2), - (10,132,1,0,0,NULL,'417-2525',NULL,'4172525',2), - (11,79,1,1,0,NULL,'731-9559',NULL,'7319559',2), - (12,79,1,0,0,NULL,'(681) 431-5009',NULL,'6814315009',1), - (13,49,1,1,0,NULL,'560-2397',NULL,'5602397',1), - (14,49,1,0,0,NULL,'(496) 574-7776',NULL,'4965747776',2), - (15,188,1,1,0,NULL,'(491) 342-9749',NULL,'4913429749',2), - (16,188,1,0,0,NULL,'(537) 452-8273',NULL,'5374528273',2), - (17,81,1,1,0,NULL,'(333) 768-5794',NULL,'3337685794',2), - (18,81,1,0,0,NULL,'248-5619',NULL,'2485619',1), - (19,80,1,1,0,NULL,'(221) 541-4092',NULL,'2215414092',1), - (20,80,1,0,0,NULL,'(836) 879-3026',NULL,'8368793026',2), - (21,150,1,1,0,NULL,'(700) 895-1769',NULL,'7008951769',2), - (22,150,1,0,0,NULL,'(790) 592-6997',NULL,'7905926997',1), - (23,53,1,1,0,NULL,'(743) 584-8703',NULL,'7435848703',1), - (24,53,1,0,0,NULL,'348-7972',NULL,'3487972',2), - (25,22,1,1,0,NULL,'(814) 321-3536',NULL,'8143213536',1), - (26,22,1,0,0,NULL,'712-8289',NULL,'7128289',1), - (27,55,1,1,0,NULL,'692-7464',NULL,'6927464',1), - (28,4,1,1,0,NULL,'(779) 610-2886',NULL,'7796102886',2), - (29,96,1,1,0,NULL,'(410) 361-7992',NULL,'4103617992',1), - (30,2,1,1,0,NULL,'(669) 703-9967',NULL,'6697039967',1), - (31,2,1,0,0,NULL,'(293) 545-2539',NULL,'2935452539',2), - (32,65,1,1,0,NULL,'(776) 658-3984',NULL,'7766583984',1), - (33,65,1,0,0,NULL,'640-6892',NULL,'6406892',2), - (34,54,1,1,0,NULL,'(843) 669-3308',NULL,'8436693308',2), - (35,8,1,1,0,NULL,'483-7359',NULL,'4837359',1), - (36,8,1,0,0,NULL,'652-7475',NULL,'6527475',1), - (37,24,1,1,0,NULL,'506-6546',NULL,'5066546',1), - (38,69,1,1,0,NULL,'(508) 524-2414',NULL,'5085242414',1), - (39,69,1,0,0,NULL,'(408) 838-7036',NULL,'4088387036',1), - (40,143,1,1,0,NULL,'(269) 561-2672',NULL,'2695612672',1), - (41,145,1,1,0,NULL,'(361) 791-8213',NULL,'3617918213',2), - (42,145,1,0,0,NULL,'(439) 283-7971',NULL,'4392837971',1), - (43,164,1,1,0,NULL,'(676) 496-5322',NULL,'6764965322',2), - (44,164,1,0,0,NULL,'677-7536',NULL,'6777536',1), - (45,162,1,1,0,NULL,'696-1221',NULL,'6961221',2), - (46,162,1,0,0,NULL,'890-9085',NULL,'8909085',1), - (47,183,1,1,0,NULL,'895-7757',NULL,'8957757',1), - (48,114,1,1,0,NULL,'(202) 677-3532',NULL,'2026773532',1), - (49,39,1,1,0,NULL,'(546) 745-6102',NULL,'5467456102',2), - (50,184,1,1,0,NULL,'(450) 399-5886',NULL,'4503995886',1), - (51,124,1,1,0,NULL,'(832) 643-6594',NULL,'8326436594',1), - (52,124,1,0,0,NULL,'237-2329',NULL,'2372329',2), - (53,160,1,1,0,NULL,'(494) 603-1080',NULL,'4946031080',2), - (54,160,1,0,0,NULL,'(885) 333-2383',NULL,'8853332383',1), - (55,47,1,1,0,NULL,'(543) 883-5457',NULL,'5438835457',2), - (56,92,1,1,0,NULL,'(340) 867-6606',NULL,'3408676606',2), - (57,82,1,1,0,NULL,'(207) 567-9463',NULL,'2075679463',2), - (58,82,1,0,0,NULL,'368-7982',NULL,'3687982',1), - (59,21,1,1,0,NULL,'(612) 666-5190',NULL,'6126665190',1), - (60,21,1,0,0,NULL,'669-5740',NULL,'6695740',1), - (61,15,1,1,0,NULL,'(375) 482-5430',NULL,'3754825430',2), - (62,15,1,0,0,NULL,'(369) 413-2338',NULL,'3694132338',2), - (63,50,1,1,0,NULL,'(447) 494-5393',NULL,'4474945393',2), - (64,25,1,1,0,NULL,'(551) 682-1262',NULL,'5516821262',1), - (65,167,1,1,0,NULL,'(320) 660-3208',NULL,'3206603208',2), - (66,167,1,0,0,NULL,'359-2312',NULL,'3592312',2), - (67,144,1,1,0,NULL,'369-4267',NULL,'3694267',1), - (68,130,1,1,0,NULL,'(554) 608-8028',NULL,'5546088028',1), - (69,138,1,1,0,NULL,'713-8626',NULL,'7138626',2), - (70,77,1,1,0,NULL,'301-4144',NULL,'3014144',2), - (71,77,1,0,0,NULL,'(439) 754-1394',NULL,'4397541394',1), - (72,196,1,1,0,NULL,'(540) 803-7061',NULL,'5408037061',2), - (73,113,1,1,0,NULL,'726-8968',NULL,'7268968',1), - (74,113,1,0,0,NULL,'(640) 822-2109',NULL,'6408222109',2), - (75,165,1,1,0,NULL,'306-2214',NULL,'3062214',2), - (76,165,1,0,0,NULL,'707-1631',NULL,'7071631',2), - (77,118,1,1,0,NULL,'(436) 682-3071',NULL,'4366823071',1), - (78,118,1,0,0,NULL,'251-5078',NULL,'2515078',1), - (79,200,1,1,0,NULL,'432-7535',NULL,'4327535',1), - (80,200,1,0,0,NULL,'603-1403',NULL,'6031403',1), - (81,30,1,1,0,NULL,'(484) 314-1561',NULL,'4843141561',1), - (82,176,1,1,0,NULL,'(711) 547-8363',NULL,'7115478363',2), - (83,111,1,1,0,NULL,'755-2310',NULL,'7552310',2), - (84,182,1,1,0,NULL,'630-8852',NULL,'6308852',1), - (85,198,1,1,0,NULL,'(843) 772-4505',NULL,'8437724505',1), - (86,198,1,0,0,NULL,'701-7868',NULL,'7017868',1), - (87,148,1,1,0,NULL,'(440) 823-4751',NULL,'4408234751',2), - (88,127,1,1,0,NULL,'(271) 692-2497',NULL,'2716922497',2), - (89,127,1,0,0,NULL,'360-5880',NULL,'3605880',1), - (90,133,1,1,0,NULL,'307-9079',NULL,'3079079',2), - (91,133,1,0,0,NULL,'(821) 586-9744',NULL,'8215869744',1), - (92,157,1,1,0,NULL,'(475) 218-5404',NULL,'4752185404',1), - (93,155,1,1,0,NULL,'226-9875',NULL,'2269875',2), - (94,83,1,1,0,NULL,'(252) 573-3738',NULL,'2525733738',2), - (95,14,1,1,0,NULL,'(421) 382-9767',NULL,'4213829767',2), - (96,14,1,0,0,NULL,'(403) 489-7998',NULL,'4034897998',2), - (97,5,1,1,0,NULL,'(609) 672-7423',NULL,'6096727423',2), - (98,189,1,1,0,NULL,'(467) 817-8985',NULL,'4678178985',2), - (99,185,1,1,0,NULL,'407-7635',NULL,'4077635',2), - (100,185,1,0,0,NULL,'(688) 331-9845',NULL,'6883319845',2), - (101,76,1,1,0,NULL,'(283) 767-9812',NULL,'2837679812',2), - (102,76,1,0,0,NULL,'574-5408',NULL,'5745408',2), - (103,107,1,1,0,NULL,'(357) 895-2350',NULL,'3578952350',2), - (104,103,1,1,0,NULL,'769-4306',NULL,'7694306',1), - (105,103,1,0,0,NULL,'(486) 680-5040',NULL,'4866805040',2), - (106,63,1,1,0,NULL,'339-5104',NULL,'3395104',1), - (107,154,1,1,0,NULL,'701-1332',NULL,'7011332',1), - (108,159,1,1,0,NULL,'250-3071',NULL,'2503071',2), - (109,159,1,0,0,NULL,'750-6959',NULL,'7506959',1), - (110,121,1,1,0,NULL,'697-8031',NULL,'6978031',2), - (111,128,1,1,0,NULL,'(702) 715-7428',NULL,'7027157428',2), - (112,128,1,0,0,NULL,'(731) 846-1477',NULL,'7318461477',1), - (113,36,1,1,0,NULL,'(261) 389-3950',NULL,'2613893950',2), - (114,37,1,1,0,NULL,'(375) 451-8392',NULL,'3754518392',2), - (115,100,1,1,0,NULL,'(395) 381-8246',NULL,'3953818246',1), - (116,13,1,1,0,NULL,'476-1924',NULL,'4761924',2), - (117,13,1,0,0,NULL,'520-4551',NULL,'5204551',1), - (118,173,1,1,0,NULL,'(267) 414-1551',NULL,'2674141551',2), - (119,173,1,0,0,NULL,'698-6828',NULL,'6986828',1), - (120,72,1,1,0,NULL,'240-9634',NULL,'2409634',1), - (121,72,1,0,0,NULL,'875-8895',NULL,'8758895',1), - (122,27,1,1,0,NULL,'(613) 354-2497',NULL,'6133542497',1), - (123,146,1,1,0,NULL,'740-1410',NULL,'7401410',1), - (124,146,1,0,0,NULL,'(423) 323-7004',NULL,'4233237004',2), - (125,67,1,1,0,NULL,'(499) 350-6852',NULL,'4993506852',2), - (126,67,1,0,0,NULL,'501-4482',NULL,'5014482',1), - (127,192,1,1,0,NULL,'628-2169',NULL,'6282169',1), - (128,158,1,1,0,NULL,'874-6274',NULL,'8746274',2), - (129,120,1,1,0,NULL,'591-3474',NULL,'5913474',2), - (130,120,1,0,0,NULL,'(809) 405-4423',NULL,'8094054423',1), - (131,44,1,1,0,NULL,'589-3481',NULL,'5893481',2), - (132,56,1,1,0,NULL,'(220) 799-5739',NULL,'2207995739',1), - (133,56,1,0,0,NULL,'746-8488',NULL,'7468488',2), - (134,105,1,1,0,NULL,'(433) 759-7851',NULL,'4337597851',1), - (135,105,1,0,0,NULL,'(315) 662-8267',NULL,'3156628267',1), - (136,9,1,1,0,NULL,'(883) 252-8671',NULL,'8832528671',1), - (137,48,1,1,0,NULL,'341-2398',NULL,'3412398',2), - (138,48,1,0,0,NULL,'279-1767',NULL,'2791767',1), - (139,41,1,1,0,NULL,'(485) 304-1910',NULL,'4853041910',1), - (140,41,1,0,0,NULL,'562-2886',NULL,'5622886',2), - (141,73,1,1,0,NULL,'(540) 440-4955',NULL,'5404404955',1), - (142,11,1,1,0,NULL,'(877) 700-5014',NULL,'8777005014',1), - (143,84,1,1,0,NULL,'448-5435',NULL,'4485435',1), - (144,93,1,1,0,NULL,'403-3996',NULL,'4033996',2), - (145,6,1,1,0,NULL,'433-6251',NULL,'4336251',2), - (146,6,1,0,0,NULL,'(426) 856-6584',NULL,'4268566584',1), - (147,28,1,1,0,NULL,'(510) 652-7328',NULL,'5106527328',2), - (148,45,1,1,0,NULL,'(381) 718-3945',NULL,'3817183945',2), - (149,59,1,1,0,NULL,'622-4838',NULL,'6224838',2), - (150,42,1,1,0,NULL,'267-9401',NULL,'2679401',1), - (151,42,1,0,0,NULL,'(781) 884-1112',NULL,'7818841112',1), - (152,179,1,1,0,NULL,'(431) 736-3246',NULL,'4317363246',2), - (153,142,1,1,0,NULL,'354-4955',NULL,'3544955',1), - (154,142,1,0,0,NULL,'837-9501',NULL,'8379501',1), - (155,187,1,1,0,NULL,'(384) 419-7525',NULL,'3844197525',2), - (156,187,1,0,0,NULL,'(306) 770-7565',NULL,'3067707565',2), - (157,106,1,1,0,NULL,'456-4895',NULL,'4564895',1), - (158,106,1,0,0,NULL,'648-8516',NULL,'6488516',1), - (159,152,1,1,0,NULL,'(417) 206-6687',NULL,'4172066687',2), - (160,62,1,1,0,NULL,'(382) 466-2813',NULL,'3824662813',2), - (161,62,1,0,0,NULL,'310-5176',NULL,'3105176',2), - (162,166,1,1,0,NULL,'671-2977',NULL,'6712977',1), - (163,171,1,1,0,NULL,'(778) 243-8682',NULL,'7782438682',1), - (164,99,1,1,0,NULL,'899-6659',NULL,'8996659',1), - (165,99,1,0,0,NULL,'352-1323',NULL,'3521323',1), - (166,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1), - (167,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1), - (168,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); + (1,31,1,1,0,NULL,'701-8326',NULL,'7018326',1), + (2,25,1,1,0,NULL,'(561) 723-5834',NULL,'5617235834',2), + (3,25,1,0,0,NULL,'(214) 874-3538',NULL,'2148743538',1), + (4,35,1,1,0,NULL,'(371) 870-9746',NULL,'3718709746',2), + (5,142,1,1,0,NULL,'(383) 878-6066',NULL,'3838786066',1), + (6,142,1,0,0,NULL,'612-7608',NULL,'6127608',1), + (7,5,1,1,0,NULL,'836-9875',NULL,'8369875',1), + (8,5,1,0,0,NULL,'(476) 579-4329',NULL,'4765794329',2), + (9,54,1,1,0,NULL,'(781) 303-5891',NULL,'7813035891',2), + (10,82,1,1,0,NULL,'(380) 311-8610',NULL,'3803118610',2), + (11,82,1,0,0,NULL,'(881) 823-9927',NULL,'8818239927',2), + (12,9,1,1,0,NULL,'823-8440',NULL,'8238440',2), + (13,9,1,0,0,NULL,'(751) 878-9340',NULL,'7518789340',2), + (14,143,1,1,0,NULL,'609-4732',NULL,'6094732',2), + (15,143,1,0,0,NULL,'(851) 855-2107',NULL,'8518552107',2), + (16,78,1,1,0,NULL,'259-3009',NULL,'2593009',2), + (17,78,1,0,0,NULL,'(489) 221-8298',NULL,'4892218298',2), + (18,173,1,1,0,NULL,'298-2873',NULL,'2982873',2), + (19,173,1,0,0,NULL,'507-5321',NULL,'5075321',2), + (20,186,1,1,0,NULL,'(692) 738-5997',NULL,'6927385997',2), + (21,127,1,1,0,NULL,'(596) 782-2345',NULL,'5967822345',2), + (22,127,1,0,0,NULL,'(793) 307-2359',NULL,'7933072359',2), + (23,101,1,1,0,NULL,'(580) 815-9336',NULL,'5808159336',2), + (24,101,1,0,0,NULL,'(425) 772-7439',NULL,'4257727439',2), + (25,30,1,1,0,NULL,'406-5173',NULL,'4065173',1), + (26,30,1,0,0,NULL,'(377) 427-8722',NULL,'3774278722',1), + (27,89,1,1,0,NULL,'889-6983',NULL,'8896983',1), + (28,89,1,0,0,NULL,'751-6212',NULL,'7516212',2), + (29,194,1,1,0,NULL,'(842) 838-3758',NULL,'8428383758',2), + (30,194,1,0,0,NULL,'(369) 362-6537',NULL,'3693626537',2), + (31,136,1,1,0,NULL,'(685) 284-2451',NULL,'6852842451',1), + (32,136,1,0,0,NULL,'830-5972',NULL,'8305972',2), + (33,129,1,1,0,NULL,'(278) 577-6073',NULL,'2785776073',1), + (34,157,1,1,0,NULL,'452-1042',NULL,'4521042',1), + (35,172,1,1,0,NULL,'430-7484',NULL,'4307484',1), + (36,197,1,1,0,NULL,'578-3660',NULL,'5783660',2), + (37,197,1,0,0,NULL,'(746) 349-8797',NULL,'7463498797',1), + (38,185,1,1,0,NULL,'(468) 598-9717',NULL,'4685989717',2), + (39,185,1,0,0,NULL,'(239) 246-8389',NULL,'2392468389',2), + (40,132,1,1,0,NULL,'752-6132',NULL,'7526132',1), + (41,132,1,0,0,NULL,'(421) 637-1571',NULL,'4216371571',2), + (42,94,1,1,0,NULL,'425-1925',NULL,'4251925',1), + (43,11,1,1,0,NULL,'439-4637',NULL,'4394637',1), + (44,11,1,0,0,NULL,'411-7439',NULL,'4117439',2), + (45,178,1,1,0,NULL,'(772) 371-1531',NULL,'7723711531',1), + (46,144,1,1,0,NULL,'481-6839',NULL,'4816839',1), + (47,201,1,1,0,NULL,'(565) 235-7766',NULL,'5652357766',2), + (48,201,1,0,0,NULL,'(593) 665-8270',NULL,'5936658270',2), + (49,8,1,1,0,NULL,'859-2182',NULL,'8592182',2), + (50,33,1,1,0,NULL,'800-2321',NULL,'8002321',1), + (51,153,1,1,0,NULL,'(784) 658-5457',NULL,'7846585457',1), + (52,153,1,0,0,NULL,'627-6722',NULL,'6276722',2), + (53,120,1,1,0,NULL,'292-2860',NULL,'2922860',1), + (54,120,1,0,0,NULL,'468-1106',NULL,'4681106',2), + (55,169,1,1,0,NULL,'363-1993',NULL,'3631993',1), + (56,130,1,1,0,NULL,'542-5373',NULL,'5425373',1), + (57,28,1,1,0,NULL,'862-4570',NULL,'8624570',2), + (58,17,1,1,0,NULL,'(245) 434-1599',NULL,'2454341599',1), + (59,38,1,1,0,NULL,'(613) 348-5759',NULL,'6133485759',2), + (60,38,1,0,0,NULL,'(712) 372-4759',NULL,'7123724759',2), + (61,174,1,1,0,NULL,'(434) 223-4524',NULL,'4342234524',1), + (62,174,1,0,0,NULL,'247-9687',NULL,'2479687',2), + (63,113,1,1,0,NULL,'857-6594',NULL,'8576594',1), + (64,71,1,1,0,NULL,'414-8952',NULL,'4148952',1), + (65,71,1,0,0,NULL,'764-9546',NULL,'7649546',2), + (66,56,1,1,0,NULL,'(296) 887-3997',NULL,'2968873997',1), + (67,171,1,1,0,NULL,'(271) 495-5559',NULL,'2714955559',1), + (68,171,1,0,0,NULL,'(733) 578-6411',NULL,'7335786411',2), + (69,29,1,1,0,NULL,'494-3776',NULL,'4943776',2), + (70,29,1,0,0,NULL,'413-1135',NULL,'4131135',1), + (71,138,1,1,0,NULL,'278-9104',NULL,'2789104',1), + (72,145,1,1,0,NULL,'334-7938',NULL,'3347938',2), + (73,107,1,1,0,NULL,'(722) 383-3115',NULL,'7223833115',1), + (74,107,1,0,0,NULL,'(535) 772-4758',NULL,'5357724758',1), + (75,105,1,1,0,NULL,'(498) 296-3018',NULL,'4982963018',1), + (76,167,1,1,0,NULL,'224-2691',NULL,'2242691',2), + (77,167,1,0,0,NULL,'(865) 340-9624',NULL,'8653409624',1), + (78,37,1,1,0,NULL,'846-3229',NULL,'8463229',2), + (79,37,1,0,0,NULL,'704-8850',NULL,'7048850',2), + (80,27,1,1,0,NULL,'(811) 430-2028',NULL,'8114302028',2), + (81,40,1,1,0,NULL,'(515) 357-5489',NULL,'5153575489',1), + (82,40,1,0,0,NULL,'692-6797',NULL,'6926797',2), + (83,184,1,1,0,NULL,'(556) 507-5924',NULL,'5565075924',1), + (84,184,1,0,0,NULL,'738-7531',NULL,'7387531',2), + (85,102,1,1,0,NULL,'(885) 386-6877',NULL,'8853866877',1), + (86,102,1,0,0,NULL,'(807) 355-3320',NULL,'8073553320',1), + (87,108,1,1,0,NULL,'479-5380',NULL,'4795380',2), + (88,188,1,1,0,NULL,'(496) 577-5005',NULL,'4965775005',2), + (89,188,1,0,0,NULL,'310-9165',NULL,'3109165',1), + (90,119,1,1,0,NULL,'(476) 320-7474',NULL,'4763207474',1), + (91,119,1,0,0,NULL,'(329) 447-8458',NULL,'3294478458',1), + (92,141,1,1,0,NULL,'880-8053',NULL,'8808053',1), + (93,141,1,0,0,NULL,'(859) 278-9294',NULL,'8592789294',1), + (94,176,1,1,0,NULL,'(560) 309-3969',NULL,'5603093969',2), + (95,151,1,1,0,NULL,'(619) 444-1535',NULL,'6194441535',2), + (96,151,1,0,0,NULL,'(482) 747-9033',NULL,'4827479033',1), + (97,20,1,1,0,NULL,'362-2214',NULL,'3622214',2), + (98,20,1,0,0,NULL,'438-4004',NULL,'4384004',1), + (99,49,1,1,0,NULL,'798-8766',NULL,'7988766',2), + (100,49,1,0,0,NULL,'775-7678',NULL,'7757678',1), + (101,200,1,1,0,NULL,'503-9866',NULL,'5039866',1), + (102,200,1,0,0,NULL,'(289) 816-8906',NULL,'2898168906',2), + (103,125,1,1,0,NULL,'387-7137',NULL,'3877137',2), + (104,55,1,1,0,NULL,'(391) 528-2746',NULL,'3915282746',2), + (105,164,1,1,0,NULL,'353-1272',NULL,'3531272',2), + (106,164,1,0,0,NULL,'470-5909',NULL,'4705909',2), + (107,193,1,1,0,NULL,'714-8765',NULL,'7148765',1), + (108,193,1,0,0,NULL,'(285) 824-3376',NULL,'2858243376',1), + (109,44,1,1,0,NULL,'(344) 649-2733',NULL,'3446492733',1), + (110,44,1,0,0,NULL,'(366) 835-9590',NULL,'3668359590',1), + (111,60,1,1,0,NULL,'363-2460',NULL,'3632460',2), + (112,60,1,0,0,NULL,'216-8190',NULL,'2168190',2), + (113,84,1,1,0,NULL,'472-6165',NULL,'4726165',1), + (114,84,1,0,0,NULL,'428-9663',NULL,'4289663',2), + (115,109,1,1,0,NULL,'510-6627',NULL,'5106627',2), + (116,109,1,0,0,NULL,'243-7513',NULL,'2437513',1), + (117,76,1,1,0,NULL,'(459) 671-5070',NULL,'4596715070',2), + (118,76,1,0,0,NULL,'(765) 787-7486',NULL,'7657877486',2), + (119,149,1,1,0,NULL,'331-1328',NULL,'3311328',2), + (120,74,1,1,0,NULL,'(374) 251-1719',NULL,'3742511719',1), + (121,140,1,1,0,NULL,'651-1898',NULL,'6511898',2), + (122,163,1,1,0,NULL,'(626) 322-3211',NULL,'6263223211',2), + (123,66,1,1,0,NULL,'(724) 450-1369',NULL,'7244501369',2), + (124,21,1,1,0,NULL,'(536) 578-2919',NULL,'5365782919',1), + (125,21,1,0,0,NULL,'(584) 872-8621',NULL,'5848728621',2), + (126,14,1,1,0,NULL,'(568) 369-5716',NULL,'5683695716',2), + (127,14,1,0,0,NULL,'(330) 403-9152',NULL,'3304039152',1), + (128,170,1,1,0,NULL,'647-9420',NULL,'6479420',2), + (129,170,1,0,0,NULL,'458-3219',NULL,'4583219',2), + (130,124,1,1,0,NULL,'(632) 454-8571',NULL,'6324548571',1), + (131,124,1,0,0,NULL,'(828) 768-4009',NULL,'8287684009',2), + (132,199,1,1,0,NULL,'708-5459',NULL,'7085459',1), + (133,112,1,1,0,NULL,'(577) 229-6716',NULL,'5772296716',1), + (134,104,1,1,0,NULL,'(785) 655-3220',NULL,'7856553220',2), + (135,110,1,1,0,NULL,'545-3656',NULL,'5453656',2), + (136,110,1,0,0,NULL,'460-7083',NULL,'4607083',2), + (137,100,1,1,0,NULL,'747-4183',NULL,'7474183',1), + (138,100,1,0,0,NULL,'(767) 535-3474',NULL,'7675353474',1), + (139,160,1,1,0,NULL,'273-8785',NULL,'2738785',1), + (140,57,1,1,0,NULL,'(807) 566-1513',NULL,'8075661513',2), + (141,6,1,1,0,NULL,'521-4662',NULL,'5214662',1), + (142,6,1,0,0,NULL,'(797) 575-5372',NULL,'7975755372',1), + (143,62,1,1,0,NULL,'851-5822',NULL,'8515822',1), + (144,62,1,0,0,NULL,'371-2426',NULL,'3712426',2), + (145,137,1,1,0,NULL,'855-6543',NULL,'8556543',1), + (146,137,1,0,0,NULL,'757-5565',NULL,'7575565',2), + (147,99,1,1,0,NULL,'(824) 300-5139',NULL,'8243005139',1), + (148,116,1,1,0,NULL,'(218) 349-9660',NULL,'2183499660',2), + (149,180,1,1,0,NULL,'683-4985',NULL,'6834985',1), + (150,180,1,0,0,NULL,'540-9753',NULL,'5409753',1), + (151,114,1,1,0,NULL,'574-9685',NULL,'5749685',1), + (152,114,1,0,0,NULL,'877-1810',NULL,'8771810',2), + (153,32,1,1,0,NULL,'(327) 275-4451',NULL,'3272754451',2), + (154,18,1,1,0,NULL,'270-8573',NULL,'2708573',1), + (155,90,1,1,0,NULL,'(732) 233-1502',NULL,'7322331502',2), + (156,39,1,1,0,NULL,'(297) 642-7386',NULL,'2976427386',1), + (157,39,1,0,0,NULL,'392-3136',NULL,'3923136',2), + (158,41,1,1,0,NULL,'732-3802',NULL,'7323802',2), + (159,121,1,1,0,NULL,'518-7925',NULL,'5187925',1), + (160,121,1,0,0,NULL,'582-8517',NULL,'5828517',2), + (161,12,1,1,0,NULL,'891-1072',NULL,'8911072',2), + (162,12,1,0,0,NULL,'(298) 460-2344',NULL,'2984602344',2), + (163,61,1,1,0,NULL,'700-2528',NULL,'7002528',2), + (164,47,1,1,0,NULL,'660-6029',NULL,'6606029',1), + (165,181,1,1,0,NULL,'(739) 875-8399',NULL,'7398758399',2), + (166,181,1,0,0,NULL,'(217) 474-7210',NULL,'2174747210',1), + (167,85,1,1,0,NULL,'767-7183',NULL,'7677183',2), + (168,85,1,0,0,NULL,'(716) 432-5188',NULL,'7164325188',2), + (169,36,1,1,0,NULL,'(359) 373-1010',NULL,'3593731010',1), + (170,36,1,0,0,NULL,'348-2045',NULL,'3482045',2), + (171,118,1,1,0,NULL,'519-9913',NULL,'5199913',1), + (172,118,1,0,0,NULL,'(566) 410-4236',NULL,'5664104236',1), + (173,152,1,1,0,NULL,'(630) 518-4681',NULL,'6305184681',2), + (174,152,1,0,0,NULL,'(480) 533-9631',NULL,'4805339631',2), + (175,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1), + (176,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1), + (177,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */; UNLOCK TABLES; @@ -7256,222 +7292,224 @@ UNLOCK TABLES; LOCK TABLES `civicrm_relationship` WRITE; /*!40000 ALTER TABLE `civicrm_relationship` DISABLE KEYS */; INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`, `created_date`, `modified_date`) VALUES - (1,157,85,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (2,155,85,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (3,157,133,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (4,155,133,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (5,155,157,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (6,133,172,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (7,157,172,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (8,155,172,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (9,85,172,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (10,133,85,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (11,14,83,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (12,5,83,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (13,14,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (14,5,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (15,5,14,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (16,181,186,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (17,14,186,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (18,5,186,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (19,83,186,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (20,181,83,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (21,185,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (22,76,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (23,185,189,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (24,76,189,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (25,76,185,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (26,189,126,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (27,185,126,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (28,76,126,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (29,140,126,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (30,189,140,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (31,63,107,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (32,154,107,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (33,63,103,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (34,154,103,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (35,154,63,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (36,103,136,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (37,63,136,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (38,154,136,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (39,107,136,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (40,103,107,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (41,191,38,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (42,201,38,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (43,191,32,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (44,201,32,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (45,201,191,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (46,32,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (47,191,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (48,201,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (49,38,58,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (50,32,38,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (51,121,159,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (52,128,159,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:48','2023-09-19 09:27:48'), - (53,121,40,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (54,128,40,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (55,128,121,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (56,40,7,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (57,121,7,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (58,128,7,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (59,159,7,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (60,40,159,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (61,37,98,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (62,17,98,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (63,37,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (64,17,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (65,17,37,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (66,36,20,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (67,37,20,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (68,17,20,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (69,98,20,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (70,36,98,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (71,173,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (72,31,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (73,173,13,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (74,31,13,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (75,31,173,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (76,13,115,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (77,173,115,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (78,31,115,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (79,100,115,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (80,13,100,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (81,27,72,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (82,146,72,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (83,27,35,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (84,146,35,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (85,146,27,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (86,35,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (87,27,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (88,146,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (89,72,3,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (90,35,72,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (91,158,67,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (92,102,67,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (93,158,192,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (94,102,192,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (95,102,158,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (96,192,61,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (97,158,61,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (98,102,61,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (99,67,61,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (100,192,67,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (101,120,33,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (102,44,33,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (103,120,95,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (104,44,95,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (105,44,120,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (106,95,101,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (107,120,101,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (108,44,101,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (109,33,101,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (110,95,33,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (111,105,56,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (112,9,56,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (113,105,151,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (114,9,151,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (115,9,105,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (116,151,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (117,105,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (118,9,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (119,56,43,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (120,151,56,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (121,41,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (122,73,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (123,41,66,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (124,73,66,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (125,73,41,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (126,66,89,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (127,41,89,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (128,73,89,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (129,48,89,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (130,66,48,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (131,93,11,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (132,6,11,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (133,93,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (134,6,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (135,6,93,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (136,84,197,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (137,93,197,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (138,6,197,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (139,11,197,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (140,84,11,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (141,45,134,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (142,51,134,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (143,45,28,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (144,51,28,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (145,51,45,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (146,28,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (147,45,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (148,51,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (149,134,52,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (150,28,134,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (151,42,59,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (152,179,59,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (153,42,195,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (154,179,195,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (155,179,42,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (156,195,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (157,42,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (158,179,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (159,59,26,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (160,195,59,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (161,46,135,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (162,187,135,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (163,46,142,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (164,187,142,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (165,187,46,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (166,142,123,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (167,46,123,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (168,187,123,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (169,135,123,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (170,142,135,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (171,152,131,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (172,94,131,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (173,152,106,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (174,94,106,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (175,94,152,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (176,106,97,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (177,152,97,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (178,94,97,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (179,131,97,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (180,106,131,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (181,166,62,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (182,171,62,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (183,166,60,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (184,171,60,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (185,171,166,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (186,60,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (187,166,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (188,171,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (189,62,149,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (190,60,62,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (191,99,174,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (192,180,174,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (193,99,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (194,180,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (195,180,99,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (196,199,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (197,99,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (198,180,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (199,174,75,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (200,199,174,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (201,17,18,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (202,175,23,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (203,30,29,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (204,151,78,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (205,40,88,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (206,143,90,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (207,86,91,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (208,110,108,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (209,50,109,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (210,191,129,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (211,201,153,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (212,164,168,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (213,159,177,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (214,11,178,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (215,147,193,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'), - (216,36,194,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-19 09:27:49','2023-09-19 09:27:49'); + (1,24,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (2,189,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (3,24,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (4,189,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (5,189,24,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (6,16,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (7,24,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (8,189,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (9,86,58,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (10,16,86,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (11,151,141,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (12,20,141,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (13,151,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (14,20,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (15,20,151,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (16,176,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (17,151,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (18,20,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (19,141,190,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (20,176,141,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (21,125,49,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (22,55,49,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (23,125,200,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (24,55,200,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (25,55,125,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (26,200,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (27,125,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (28,55,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (29,49,155,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (30,200,49,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (31,34,150,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (32,164,150,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (33,34,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (34,164,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (35,164,34,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (36,179,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (37,34,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (38,164,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (39,150,26,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (40,179,150,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (41,44,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (42,60,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (43,44,193,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (44,60,193,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (45,60,44,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (46,193,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (47,44,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (48,60,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (49,183,53,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (50,193,183,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (51,76,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (52,126,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (53,76,109,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (54,126,109,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (55,126,76,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (56,109,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (57,76,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (58,126,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (59,84,156,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (60,109,84,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (61,147,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (62,74,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (63,147,149,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (64,74,149,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (65,74,147,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (66,149,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (67,147,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (68,74,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (69,46,131,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (70,149,46,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (71,162,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (72,66,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (73,162,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (74,66,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (75,66,162,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (76,163,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (77,162,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (78,66,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (79,140,10,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (80,163,140,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (81,170,21,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (82,45,21,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (83,170,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (84,45,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (85,45,170,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (86,14,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (87,170,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (88,45,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (89,21,177,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (90,14,21,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (91,112,124,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (92,79,124,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (93,112,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (94,79,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (95,79,112,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (96,199,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (97,112,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (98,79,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (99,124,3,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (100,199,124,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (101,104,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (102,92,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (103,104,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (104,92,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (105,92,104,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (106,91,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (107,104,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (108,92,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (109,48,191,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (110,91,48,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (111,160,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (112,57,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (113,160,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (114,57,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (115,57,160,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (116,100,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (117,160,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (118,57,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (119,110,134,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (120,100,110,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (121,13,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (122,62,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (123,13,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (124,62,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (125,62,13,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (126,6,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (127,13,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (128,62,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (129,198,73,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (130,6,198,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (131,99,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (132,116,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (133,99,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (134,116,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (135,116,99,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (136,137,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (137,99,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (138,116,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (139,15,88,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (140,137,15,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (141,114,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (142,32,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (143,114,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (144,32,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (145,32,114,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (146,182,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (147,114,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (148,32,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (149,180,23,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (150,182,180,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (151,39,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (152,41,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (153,39,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (154,41,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (155,41,39,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (156,90,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (157,39,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (158,41,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (159,18,51,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (160,90,18,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (161,196,2,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (162,195,2,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (163,196,121,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (164,195,121,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (165,195,196,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (166,121,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (167,196,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (168,195,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (169,2,43,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (170,121,2,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (171,61,154,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (172,63,154,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (173,61,12,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (174,63,12,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (175,63,61,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (176,12,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (177,61,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (178,63,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (179,154,75,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (180,12,154,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (181,175,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (182,85,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (183,175,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (184,85,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (185,85,175,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (186,181,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (187,175,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (188,85,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (189,47,65,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (190,181,47,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (191,111,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (192,152,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (193,111,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (194,152,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (195,152,111,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (196,118,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (197,111,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (198,152,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (199,36,159,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (200,118,36,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (201,15,7,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (202,129,19,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (203,33,22,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (204,74,50,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (205,109,52,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (206,185,59,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (207,184,64,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (208,76,67,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (209,85,68,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (210,4,69,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (211,81,77,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (212,187,103,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (213,18,122,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (214,72,133,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (215,115,135,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (216,197,139,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (217,178,146,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (218,96,148,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'); /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */; UNLOCK TABLES; @@ -7482,438 +7520,442 @@ UNLOCK TABLES; LOCK TABLES `civicrm_relationship_cache` WRITE; /*!40000 ALTER TABLE `civicrm_relationship_cache` DISABLE KEYS */; INSERT INTO `civicrm_relationship_cache` (`id`, `relationship_id`, `relationship_type_id`, `orientation`, `near_contact_id`, `near_relation`, `far_contact_id`, `far_relation`, `is_active`, `start_date`, `end_date`, `case_id`) VALUES - (1,1,1,'a_b',157,'Child of',85,'Parent of',1,NULL,NULL,NULL), - (2,1,1,'b_a',85,'Parent of',157,'Child of',1,NULL,NULL,NULL), - (3,2,1,'a_b',155,'Child of',85,'Parent of',1,NULL,NULL,NULL), - (4,2,1,'b_a',85,'Parent of',155,'Child of',1,NULL,NULL,NULL), - (5,3,1,'a_b',157,'Child of',133,'Parent of',1,NULL,NULL,NULL), - (6,3,1,'b_a',133,'Parent of',157,'Child of',1,NULL,NULL,NULL), - (7,4,1,'a_b',155,'Child of',133,'Parent of',1,NULL,NULL,NULL), - (8,4,1,'b_a',133,'Parent of',155,'Child of',1,NULL,NULL,NULL), - (9,5,4,'a_b',155,'Sibling of',157,'Sibling of',1,NULL,NULL,NULL), - (10,5,4,'b_a',157,'Sibling of',155,'Sibling of',1,NULL,NULL,NULL), - (11,6,8,'a_b',133,'Household Member of',172,'Household Member is',1,NULL,NULL,NULL), - (12,6,8,'b_a',172,'Household Member is',133,'Household Member of',1,NULL,NULL,NULL), - (13,7,8,'a_b',157,'Household Member of',172,'Household Member is',1,NULL,NULL,NULL), - (14,7,8,'b_a',172,'Household Member is',157,'Household Member of',1,NULL,NULL,NULL), - (15,8,8,'a_b',155,'Household Member of',172,'Household Member is',1,NULL,NULL,NULL), - (16,8,8,'b_a',172,'Household Member is',155,'Household Member of',1,NULL,NULL,NULL), - (17,9,7,'a_b',85,'Head of Household for',172,'Head of Household is',1,NULL,NULL,NULL), - (18,9,7,'b_a',172,'Head of Household is',85,'Head of Household for',1,NULL,NULL,NULL), - (19,10,2,'a_b',133,'Spouse of',85,'Spouse of',1,NULL,NULL,NULL), - (20,10,2,'b_a',85,'Spouse of',133,'Spouse of',1,NULL,NULL,NULL), - (21,11,1,'a_b',14,'Child of',83,'Parent of',1,NULL,NULL,NULL), - (22,11,1,'b_a',83,'Parent of',14,'Child of',1,NULL,NULL,NULL), - (23,12,1,'a_b',5,'Child of',83,'Parent of',1,NULL,NULL,NULL), - (24,12,1,'b_a',83,'Parent of',5,'Child of',1,NULL,NULL,NULL), - (25,13,1,'a_b',14,'Child of',181,'Parent of',1,NULL,NULL,NULL), - (26,13,1,'b_a',181,'Parent of',14,'Child of',1,NULL,NULL,NULL), - (27,14,1,'a_b',5,'Child of',181,'Parent of',1,NULL,NULL,NULL), - (28,14,1,'b_a',181,'Parent of',5,'Child of',1,NULL,NULL,NULL), - (29,15,4,'a_b',5,'Sibling of',14,'Sibling of',1,NULL,NULL,NULL), - (30,15,4,'b_a',14,'Sibling of',5,'Sibling of',1,NULL,NULL,NULL), - (31,16,8,'a_b',181,'Household Member of',186,'Household Member is',1,NULL,NULL,NULL), - (32,16,8,'b_a',186,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL), - (33,17,8,'a_b',14,'Household Member of',186,'Household Member is',1,NULL,NULL,NULL), - (34,17,8,'b_a',186,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL), - (35,18,8,'a_b',5,'Household Member of',186,'Household Member is',1,NULL,NULL,NULL), - (36,18,8,'b_a',186,'Household Member is',5,'Household Member of',1,NULL,NULL,NULL), - (37,19,7,'a_b',83,'Head of Household for',186,'Head of Household is',1,NULL,NULL,NULL), - (38,19,7,'b_a',186,'Head of Household is',83,'Head of Household for',1,NULL,NULL,NULL), - (39,20,2,'a_b',181,'Spouse of',83,'Spouse of',1,NULL,NULL,NULL), - (40,20,2,'b_a',83,'Spouse of',181,'Spouse of',1,NULL,NULL,NULL), - (41,21,1,'a_b',185,'Child of',140,'Parent of',1,NULL,NULL,NULL), - (42,21,1,'b_a',140,'Parent of',185,'Child of',1,NULL,NULL,NULL), - (43,22,1,'a_b',76,'Child of',140,'Parent of',1,NULL,NULL,NULL), - (44,22,1,'b_a',140,'Parent of',76,'Child of',1,NULL,NULL,NULL), - (45,23,1,'a_b',185,'Child of',189,'Parent of',1,NULL,NULL,NULL), - (46,23,1,'b_a',189,'Parent of',185,'Child of',1,NULL,NULL,NULL), - (47,24,1,'a_b',76,'Child of',189,'Parent of',1,NULL,NULL,NULL), - (48,24,1,'b_a',189,'Parent of',76,'Child of',1,NULL,NULL,NULL), - (49,25,4,'a_b',76,'Sibling of',185,'Sibling of',1,NULL,NULL,NULL), - (50,25,4,'b_a',185,'Sibling of',76,'Sibling of',1,NULL,NULL,NULL), - (51,26,8,'a_b',189,'Household Member of',126,'Household Member is',1,NULL,NULL,NULL), - (52,26,8,'b_a',126,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL), - (53,27,8,'a_b',185,'Household Member of',126,'Household Member is',1,NULL,NULL,NULL), - (54,27,8,'b_a',126,'Household Member is',185,'Household Member of',1,NULL,NULL,NULL), - (55,28,8,'a_b',76,'Household Member of',126,'Household Member is',1,NULL,NULL,NULL), - (56,28,8,'b_a',126,'Household Member is',76,'Household Member of',1,NULL,NULL,NULL), - (57,29,7,'a_b',140,'Head of Household for',126,'Head of Household is',1,NULL,NULL,NULL), - (58,29,7,'b_a',126,'Head of Household is',140,'Head of Household for',1,NULL,NULL,NULL), - (59,30,2,'a_b',189,'Spouse of',140,'Spouse of',1,NULL,NULL,NULL), - (60,30,2,'b_a',140,'Spouse of',189,'Spouse of',1,NULL,NULL,NULL), - (61,31,1,'a_b',63,'Child of',107,'Parent of',1,NULL,NULL,NULL), - (62,31,1,'b_a',107,'Parent of',63,'Child of',1,NULL,NULL,NULL), - (63,32,1,'a_b',154,'Child of',107,'Parent of',1,NULL,NULL,NULL), - (64,32,1,'b_a',107,'Parent of',154,'Child of',1,NULL,NULL,NULL), - (65,33,1,'a_b',63,'Child of',103,'Parent of',1,NULL,NULL,NULL), - (66,33,1,'b_a',103,'Parent of',63,'Child of',1,NULL,NULL,NULL), - (67,34,1,'a_b',154,'Child of',103,'Parent of',1,NULL,NULL,NULL), - (68,34,1,'b_a',103,'Parent of',154,'Child of',1,NULL,NULL,NULL), - (69,35,4,'a_b',154,'Sibling of',63,'Sibling of',1,NULL,NULL,NULL), - (70,35,4,'b_a',63,'Sibling of',154,'Sibling of',1,NULL,NULL,NULL), - (71,36,8,'a_b',103,'Household Member of',136,'Household Member is',1,NULL,NULL,NULL), - (72,36,8,'b_a',136,'Household Member is',103,'Household Member of',1,NULL,NULL,NULL), - (73,37,8,'a_b',63,'Household Member of',136,'Household Member is',1,NULL,NULL,NULL), - (74,37,8,'b_a',136,'Household Member is',63,'Household Member of',1,NULL,NULL,NULL), - (75,38,8,'a_b',154,'Household Member of',136,'Household Member is',1,NULL,NULL,NULL), - (76,38,8,'b_a',136,'Household Member is',154,'Household Member of',1,NULL,NULL,NULL), - (77,39,7,'a_b',107,'Head of Household for',136,'Head of Household is',0,NULL,NULL,NULL), - (78,39,7,'b_a',136,'Head of Household is',107,'Head of Household for',0,NULL,NULL,NULL), - (79,40,2,'a_b',103,'Spouse of',107,'Spouse of',0,NULL,NULL,NULL), - (80,40,2,'b_a',107,'Spouse of',103,'Spouse of',0,NULL,NULL,NULL), - (81,41,1,'a_b',191,'Child of',38,'Parent of',1,NULL,NULL,NULL), - (82,41,1,'b_a',38,'Parent of',191,'Child of',1,NULL,NULL,NULL), - (83,42,1,'a_b',201,'Child of',38,'Parent of',1,NULL,NULL,NULL), - (84,42,1,'b_a',38,'Parent of',201,'Child of',1,NULL,NULL,NULL), - (85,43,1,'a_b',191,'Child of',32,'Parent of',1,NULL,NULL,NULL), - (86,43,1,'b_a',32,'Parent of',191,'Child of',1,NULL,NULL,NULL), - (87,44,1,'a_b',201,'Child of',32,'Parent of',1,NULL,NULL,NULL), - (88,44,1,'b_a',32,'Parent of',201,'Child of',1,NULL,NULL,NULL), - (89,45,4,'a_b',201,'Sibling of',191,'Sibling of',1,NULL,NULL,NULL), - (90,45,4,'b_a',191,'Sibling of',201,'Sibling of',1,NULL,NULL,NULL), - (91,46,8,'a_b',32,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), - (92,46,8,'b_a',58,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL), - (93,47,8,'a_b',191,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), - (94,47,8,'b_a',58,'Household Member is',191,'Household Member of',1,NULL,NULL,NULL), - (95,48,8,'a_b',201,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), - (96,48,8,'b_a',58,'Household Member is',201,'Household Member of',1,NULL,NULL,NULL), - (97,49,7,'a_b',38,'Head of Household for',58,'Head of Household is',0,NULL,NULL,NULL), - (98,49,7,'b_a',58,'Head of Household is',38,'Head of Household for',0,NULL,NULL,NULL), - (99,50,2,'a_b',32,'Spouse of',38,'Spouse of',0,NULL,NULL,NULL), - (100,50,2,'b_a',38,'Spouse of',32,'Spouse of',0,NULL,NULL,NULL), - (101,51,1,'a_b',121,'Child of',159,'Parent of',1,NULL,NULL,NULL), - (102,51,1,'b_a',159,'Parent of',121,'Child of',1,NULL,NULL,NULL), - (103,52,1,'a_b',128,'Child of',159,'Parent of',1,NULL,NULL,NULL), - (104,52,1,'b_a',159,'Parent of',128,'Child of',1,NULL,NULL,NULL), - (105,53,1,'a_b',121,'Child of',40,'Parent of',1,NULL,NULL,NULL), - (106,53,1,'b_a',40,'Parent of',121,'Child of',1,NULL,NULL,NULL), - (107,54,1,'a_b',128,'Child of',40,'Parent of',1,NULL,NULL,NULL), - (108,54,1,'b_a',40,'Parent of',128,'Child of',1,NULL,NULL,NULL), - (109,55,4,'a_b',128,'Sibling of',121,'Sibling of',1,NULL,NULL,NULL), - (110,55,4,'b_a',121,'Sibling of',128,'Sibling of',1,NULL,NULL,NULL), - (111,56,8,'a_b',40,'Household Member of',7,'Household Member is',1,NULL,NULL,NULL), - (112,56,8,'b_a',7,'Household Member is',40,'Household Member of',1,NULL,NULL,NULL), - (113,57,8,'a_b',121,'Household Member of',7,'Household Member is',1,NULL,NULL,NULL), - (114,57,8,'b_a',7,'Household Member is',121,'Household Member of',1,NULL,NULL,NULL), - (115,58,8,'a_b',128,'Household Member of',7,'Household Member is',1,NULL,NULL,NULL), - (116,58,8,'b_a',7,'Household Member is',128,'Household Member of',1,NULL,NULL,NULL), - (117,59,7,'a_b',159,'Head of Household for',7,'Head of Household is',1,NULL,NULL,NULL), - (118,59,7,'b_a',7,'Head of Household is',159,'Head of Household for',1,NULL,NULL,NULL), - (119,60,2,'a_b',40,'Spouse of',159,'Spouse of',1,NULL,NULL,NULL), - (120,60,2,'b_a',159,'Spouse of',40,'Spouse of',1,NULL,NULL,NULL), - (121,61,1,'a_b',37,'Child of',98,'Parent of',1,NULL,NULL,NULL), - (122,61,1,'b_a',98,'Parent of',37,'Child of',1,NULL,NULL,NULL), - (123,62,1,'a_b',17,'Child of',98,'Parent of',1,NULL,NULL,NULL), - (124,62,1,'b_a',98,'Parent of',17,'Child of',1,NULL,NULL,NULL), - (125,63,1,'a_b',37,'Child of',36,'Parent of',1,NULL,NULL,NULL), - (126,63,1,'b_a',36,'Parent of',37,'Child of',1,NULL,NULL,NULL), - (127,64,1,'a_b',17,'Child of',36,'Parent of',1,NULL,NULL,NULL), - (128,64,1,'b_a',36,'Parent of',17,'Child of',1,NULL,NULL,NULL), - (129,65,4,'a_b',17,'Sibling of',37,'Sibling of',1,NULL,NULL,NULL), - (130,65,4,'b_a',37,'Sibling of',17,'Sibling of',1,NULL,NULL,NULL), - (131,66,8,'a_b',36,'Household Member of',20,'Household Member is',1,NULL,NULL,NULL), - (132,66,8,'b_a',20,'Household Member is',36,'Household Member of',1,NULL,NULL,NULL), - (133,67,8,'a_b',37,'Household Member of',20,'Household Member is',1,NULL,NULL,NULL), - (134,67,8,'b_a',20,'Household Member is',37,'Household Member of',1,NULL,NULL,NULL), - (135,68,8,'a_b',17,'Household Member of',20,'Household Member is',1,NULL,NULL,NULL), - (136,68,8,'b_a',20,'Household Member is',17,'Household Member of',1,NULL,NULL,NULL), - (137,69,7,'a_b',98,'Head of Household for',20,'Head of Household is',0,NULL,NULL,NULL), - (138,69,7,'b_a',20,'Head of Household is',98,'Head of Household for',0,NULL,NULL,NULL), - (139,70,2,'a_b',36,'Spouse of',98,'Spouse of',0,NULL,NULL,NULL), - (140,70,2,'b_a',98,'Spouse of',36,'Spouse of',0,NULL,NULL,NULL), - (141,71,1,'a_b',173,'Child of',100,'Parent of',1,NULL,NULL,NULL), - (142,71,1,'b_a',100,'Parent of',173,'Child of',1,NULL,NULL,NULL), - (143,72,1,'a_b',31,'Child of',100,'Parent of',1,NULL,NULL,NULL), - (144,72,1,'b_a',100,'Parent of',31,'Child of',1,NULL,NULL,NULL), - (145,73,1,'a_b',173,'Child of',13,'Parent of',1,NULL,NULL,NULL), - (146,73,1,'b_a',13,'Parent of',173,'Child of',1,NULL,NULL,NULL), - (147,74,1,'a_b',31,'Child of',13,'Parent of',1,NULL,NULL,NULL), - (148,74,1,'b_a',13,'Parent of',31,'Child of',1,NULL,NULL,NULL), - (149,75,4,'a_b',31,'Sibling of',173,'Sibling of',1,NULL,NULL,NULL), - (150,75,4,'b_a',173,'Sibling of',31,'Sibling of',1,NULL,NULL,NULL), - (151,76,8,'a_b',13,'Household Member of',115,'Household Member is',1,NULL,NULL,NULL), - (152,76,8,'b_a',115,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL), - (153,77,8,'a_b',173,'Household Member of',115,'Household Member is',1,NULL,NULL,NULL), - (154,77,8,'b_a',115,'Household Member is',173,'Household Member of',1,NULL,NULL,NULL), - (155,78,8,'a_b',31,'Household Member of',115,'Household Member is',1,NULL,NULL,NULL), - (156,78,8,'b_a',115,'Household Member is',31,'Household Member of',1,NULL,NULL,NULL), - (157,79,7,'a_b',100,'Head of Household for',115,'Head of Household is',0,NULL,NULL,NULL), - (158,79,7,'b_a',115,'Head of Household is',100,'Head of Household for',0,NULL,NULL,NULL), - (159,80,2,'a_b',13,'Spouse of',100,'Spouse of',0,NULL,NULL,NULL), - (160,80,2,'b_a',100,'Spouse of',13,'Spouse of',0,NULL,NULL,NULL), - (161,81,1,'a_b',27,'Child of',72,'Parent of',1,NULL,NULL,NULL), - (162,81,1,'b_a',72,'Parent of',27,'Child of',1,NULL,NULL,NULL), - (163,82,1,'a_b',146,'Child of',72,'Parent of',1,NULL,NULL,NULL), - (164,82,1,'b_a',72,'Parent of',146,'Child of',1,NULL,NULL,NULL), - (165,83,1,'a_b',27,'Child of',35,'Parent of',1,NULL,NULL,NULL), - (166,83,1,'b_a',35,'Parent of',27,'Child of',1,NULL,NULL,NULL), - (167,84,1,'a_b',146,'Child of',35,'Parent of',1,NULL,NULL,NULL), - (168,84,1,'b_a',35,'Parent of',146,'Child of',1,NULL,NULL,NULL), - (169,85,4,'a_b',146,'Sibling of',27,'Sibling of',1,NULL,NULL,NULL), - (170,85,4,'b_a',27,'Sibling of',146,'Sibling of',1,NULL,NULL,NULL), - (171,86,8,'a_b',35,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), - (172,86,8,'b_a',3,'Household Member is',35,'Household Member of',1,NULL,NULL,NULL), - (173,87,8,'a_b',27,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), - (174,87,8,'b_a',3,'Household Member is',27,'Household Member of',1,NULL,NULL,NULL), - (175,88,8,'a_b',146,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), - (176,88,8,'b_a',3,'Household Member is',146,'Household Member of',1,NULL,NULL,NULL), - (177,89,7,'a_b',72,'Head of Household for',3,'Head of Household is',0,NULL,NULL,NULL), - (178,89,7,'b_a',3,'Head of Household is',72,'Head of Household for',0,NULL,NULL,NULL), - (179,90,2,'a_b',35,'Spouse of',72,'Spouse of',0,NULL,NULL,NULL), - (180,90,2,'b_a',72,'Spouse of',35,'Spouse of',0,NULL,NULL,NULL), - (181,91,1,'a_b',158,'Child of',67,'Parent of',1,NULL,NULL,NULL), - (182,91,1,'b_a',67,'Parent of',158,'Child of',1,NULL,NULL,NULL), - (183,92,1,'a_b',102,'Child of',67,'Parent of',1,NULL,NULL,NULL), - (184,92,1,'b_a',67,'Parent of',102,'Child of',1,NULL,NULL,NULL), - (185,93,1,'a_b',158,'Child of',192,'Parent of',1,NULL,NULL,NULL), - (186,93,1,'b_a',192,'Parent of',158,'Child of',1,NULL,NULL,NULL), - (187,94,1,'a_b',102,'Child of',192,'Parent of',1,NULL,NULL,NULL), - (188,94,1,'b_a',192,'Parent of',102,'Child of',1,NULL,NULL,NULL), - (189,95,4,'a_b',102,'Sibling of',158,'Sibling of',1,NULL,NULL,NULL), - (190,95,4,'b_a',158,'Sibling of',102,'Sibling of',1,NULL,NULL,NULL), - (191,96,8,'a_b',192,'Household Member of',61,'Household Member is',1,NULL,NULL,NULL), - (192,96,8,'b_a',61,'Household Member is',192,'Household Member of',1,NULL,NULL,NULL), - (193,97,8,'a_b',158,'Household Member of',61,'Household Member is',1,NULL,NULL,NULL), - (194,97,8,'b_a',61,'Household Member is',158,'Household Member of',1,NULL,NULL,NULL), - (195,98,8,'a_b',102,'Household Member of',61,'Household Member is',1,NULL,NULL,NULL), - (196,98,8,'b_a',61,'Household Member is',102,'Household Member of',1,NULL,NULL,NULL), - (197,99,7,'a_b',67,'Head of Household for',61,'Head of Household is',1,NULL,NULL,NULL), - (198,99,7,'b_a',61,'Head of Household is',67,'Head of Household for',1,NULL,NULL,NULL), - (199,100,2,'a_b',192,'Spouse of',67,'Spouse of',1,NULL,NULL,NULL), - (200,100,2,'b_a',67,'Spouse of',192,'Spouse of',1,NULL,NULL,NULL), - (201,101,1,'a_b',120,'Child of',33,'Parent of',1,NULL,NULL,NULL), - (202,101,1,'b_a',33,'Parent of',120,'Child of',1,NULL,NULL,NULL), - (203,102,1,'a_b',44,'Child of',33,'Parent of',1,NULL,NULL,NULL), - (204,102,1,'b_a',33,'Parent of',44,'Child of',1,NULL,NULL,NULL), - (205,103,1,'a_b',120,'Child of',95,'Parent of',1,NULL,NULL,NULL), - (206,103,1,'b_a',95,'Parent of',120,'Child of',1,NULL,NULL,NULL), - (207,104,1,'a_b',44,'Child of',95,'Parent of',1,NULL,NULL,NULL), - (208,104,1,'b_a',95,'Parent of',44,'Child of',1,NULL,NULL,NULL), - (209,105,4,'a_b',44,'Sibling of',120,'Sibling of',1,NULL,NULL,NULL), - (210,105,4,'b_a',120,'Sibling of',44,'Sibling of',1,NULL,NULL,NULL), - (211,106,8,'a_b',95,'Household Member of',101,'Household Member is',1,NULL,NULL,NULL), - (212,106,8,'b_a',101,'Household Member is',95,'Household Member of',1,NULL,NULL,NULL), - (213,107,8,'a_b',120,'Household Member of',101,'Household Member is',1,NULL,NULL,NULL), - (214,107,8,'b_a',101,'Household Member is',120,'Household Member of',1,NULL,NULL,NULL), - (215,108,8,'a_b',44,'Household Member of',101,'Household Member is',1,NULL,NULL,NULL), - (216,108,8,'b_a',101,'Household Member is',44,'Household Member of',1,NULL,NULL,NULL), - (217,109,7,'a_b',33,'Head of Household for',101,'Head of Household is',0,NULL,NULL,NULL), - (218,109,7,'b_a',101,'Head of Household is',33,'Head of Household for',0,NULL,NULL,NULL), - (219,110,2,'a_b',95,'Spouse of',33,'Spouse of',0,NULL,NULL,NULL), - (220,110,2,'b_a',33,'Spouse of',95,'Spouse of',0,NULL,NULL,NULL), - (221,111,1,'a_b',105,'Child of',56,'Parent of',1,NULL,NULL,NULL), - (222,111,1,'b_a',56,'Parent of',105,'Child of',1,NULL,NULL,NULL), - (223,112,1,'a_b',9,'Child of',56,'Parent of',1,NULL,NULL,NULL), - (224,112,1,'b_a',56,'Parent of',9,'Child of',1,NULL,NULL,NULL), - (225,113,1,'a_b',105,'Child of',151,'Parent of',1,NULL,NULL,NULL), - (226,113,1,'b_a',151,'Parent of',105,'Child of',1,NULL,NULL,NULL), - (227,114,1,'a_b',9,'Child of',151,'Parent of',1,NULL,NULL,NULL), - (228,114,1,'b_a',151,'Parent of',9,'Child of',1,NULL,NULL,NULL), - (229,115,4,'a_b',9,'Sibling of',105,'Sibling of',1,NULL,NULL,NULL), - (230,115,4,'b_a',105,'Sibling of',9,'Sibling of',1,NULL,NULL,NULL), - (231,116,8,'a_b',151,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), - (232,116,8,'b_a',43,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL), - (233,117,8,'a_b',105,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), - (234,117,8,'b_a',43,'Household Member is',105,'Household Member of',1,NULL,NULL,NULL), - (235,118,8,'a_b',9,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), - (236,118,8,'b_a',43,'Household Member is',9,'Household Member of',1,NULL,NULL,NULL), - (237,119,7,'a_b',56,'Head of Household for',43,'Head of Household is',0,NULL,NULL,NULL), - (238,119,7,'b_a',43,'Head of Household is',56,'Head of Household for',0,NULL,NULL,NULL), - (239,120,2,'a_b',151,'Spouse of',56,'Spouse of',0,NULL,NULL,NULL), - (240,120,2,'b_a',56,'Spouse of',151,'Spouse of',0,NULL,NULL,NULL), - (241,121,1,'a_b',41,'Child of',48,'Parent of',1,NULL,NULL,NULL), - (242,121,1,'b_a',48,'Parent of',41,'Child of',1,NULL,NULL,NULL), - (243,122,1,'a_b',73,'Child of',48,'Parent of',1,NULL,NULL,NULL), - (244,122,1,'b_a',48,'Parent of',73,'Child of',1,NULL,NULL,NULL), - (245,123,1,'a_b',41,'Child of',66,'Parent of',1,NULL,NULL,NULL), - (246,123,1,'b_a',66,'Parent of',41,'Child of',1,NULL,NULL,NULL), - (247,124,1,'a_b',73,'Child of',66,'Parent of',1,NULL,NULL,NULL), - (248,124,1,'b_a',66,'Parent of',73,'Child of',1,NULL,NULL,NULL), - (249,125,4,'a_b',73,'Sibling of',41,'Sibling of',1,NULL,NULL,NULL), - (250,125,4,'b_a',41,'Sibling of',73,'Sibling of',1,NULL,NULL,NULL), - (251,126,8,'a_b',66,'Household Member of',89,'Household Member is',1,NULL,NULL,NULL), - (252,126,8,'b_a',89,'Household Member is',66,'Household Member of',1,NULL,NULL,NULL), - (253,127,8,'a_b',41,'Household Member of',89,'Household Member is',1,NULL,NULL,NULL), - (254,127,8,'b_a',89,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL), - (255,128,8,'a_b',73,'Household Member of',89,'Household Member is',1,NULL,NULL,NULL), - (256,128,8,'b_a',89,'Household Member is',73,'Household Member of',1,NULL,NULL,NULL), - (257,129,7,'a_b',48,'Head of Household for',89,'Head of Household is',1,NULL,NULL,NULL), - (258,129,7,'b_a',89,'Head of Household is',48,'Head of Household for',1,NULL,NULL,NULL), - (259,130,2,'a_b',66,'Spouse of',48,'Spouse of',1,NULL,NULL,NULL), - (260,130,2,'b_a',48,'Spouse of',66,'Spouse of',1,NULL,NULL,NULL), - (261,131,1,'a_b',93,'Child of',11,'Parent of',1,NULL,NULL,NULL), - (262,131,1,'b_a',11,'Parent of',93,'Child of',1,NULL,NULL,NULL), - (263,132,1,'a_b',6,'Child of',11,'Parent of',1,NULL,NULL,NULL), - (264,132,1,'b_a',11,'Parent of',6,'Child of',1,NULL,NULL,NULL), - (265,133,1,'a_b',93,'Child of',84,'Parent of',1,NULL,NULL,NULL), - (266,133,1,'b_a',84,'Parent of',93,'Child of',1,NULL,NULL,NULL), - (267,134,1,'a_b',6,'Child of',84,'Parent of',1,NULL,NULL,NULL), - (268,134,1,'b_a',84,'Parent of',6,'Child of',1,NULL,NULL,NULL), - (269,135,4,'a_b',6,'Sibling of',93,'Sibling of',1,NULL,NULL,NULL), - (270,135,4,'b_a',93,'Sibling of',6,'Sibling of',1,NULL,NULL,NULL), - (271,136,8,'a_b',84,'Household Member of',197,'Household Member is',1,NULL,NULL,NULL), - (272,136,8,'b_a',197,'Household Member is',84,'Household Member of',1,NULL,NULL,NULL), - (273,137,8,'a_b',93,'Household Member of',197,'Household Member is',1,NULL,NULL,NULL), - (274,137,8,'b_a',197,'Household Member is',93,'Household Member of',1,NULL,NULL,NULL), - (275,138,8,'a_b',6,'Household Member of',197,'Household Member is',1,NULL,NULL,NULL), - (276,138,8,'b_a',197,'Household Member is',6,'Household Member of',1,NULL,NULL,NULL), - (277,139,7,'a_b',11,'Head of Household for',197,'Head of Household is',0,NULL,NULL,NULL), - (278,139,7,'b_a',197,'Head of Household is',11,'Head of Household for',0,NULL,NULL,NULL), - (279,140,2,'a_b',84,'Spouse of',11,'Spouse of',0,NULL,NULL,NULL), - (280,140,2,'b_a',11,'Spouse of',84,'Spouse of',0,NULL,NULL,NULL), - (281,141,1,'a_b',45,'Child of',134,'Parent of',1,NULL,NULL,NULL), - (282,141,1,'b_a',134,'Parent of',45,'Child of',1,NULL,NULL,NULL), - (283,142,1,'a_b',51,'Child of',134,'Parent of',1,NULL,NULL,NULL), - (284,142,1,'b_a',134,'Parent of',51,'Child of',1,NULL,NULL,NULL), - (285,143,1,'a_b',45,'Child of',28,'Parent of',1,NULL,NULL,NULL), - (286,143,1,'b_a',28,'Parent of',45,'Child of',1,NULL,NULL,NULL), - (287,144,1,'a_b',51,'Child of',28,'Parent of',1,NULL,NULL,NULL), - (288,144,1,'b_a',28,'Parent of',51,'Child of',1,NULL,NULL,NULL), - (289,145,4,'a_b',51,'Sibling of',45,'Sibling of',1,NULL,NULL,NULL), - (290,145,4,'b_a',45,'Sibling of',51,'Sibling of',1,NULL,NULL,NULL), - (291,146,8,'a_b',28,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (292,146,8,'b_a',52,'Household Member is',28,'Household Member of',1,NULL,NULL,NULL), - (293,147,8,'a_b',45,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (294,147,8,'b_a',52,'Household Member is',45,'Household Member of',1,NULL,NULL,NULL), - (295,148,8,'a_b',51,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (296,148,8,'b_a',52,'Household Member is',51,'Household Member of',1,NULL,NULL,NULL), - (297,149,7,'a_b',134,'Head of Household for',52,'Head of Household is',0,NULL,NULL,NULL), - (298,149,7,'b_a',52,'Head of Household is',134,'Head of Household for',0,NULL,NULL,NULL), - (299,150,2,'a_b',28,'Spouse of',134,'Spouse of',0,NULL,NULL,NULL), - (300,150,2,'b_a',134,'Spouse of',28,'Spouse of',0,NULL,NULL,NULL), - (301,151,1,'a_b',42,'Child of',59,'Parent of',1,NULL,NULL,NULL), - (302,151,1,'b_a',59,'Parent of',42,'Child of',1,NULL,NULL,NULL), - (303,152,1,'a_b',179,'Child of',59,'Parent of',1,NULL,NULL,NULL), - (304,152,1,'b_a',59,'Parent of',179,'Child of',1,NULL,NULL,NULL), - (305,153,1,'a_b',42,'Child of',195,'Parent of',1,NULL,NULL,NULL), - (306,153,1,'b_a',195,'Parent of',42,'Child of',1,NULL,NULL,NULL), - (307,154,1,'a_b',179,'Child of',195,'Parent of',1,NULL,NULL,NULL), - (308,154,1,'b_a',195,'Parent of',179,'Child of',1,NULL,NULL,NULL), - (309,155,4,'a_b',179,'Sibling of',42,'Sibling of',1,NULL,NULL,NULL), - (310,155,4,'b_a',42,'Sibling of',179,'Sibling of',1,NULL,NULL,NULL), - (311,156,8,'a_b',195,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), - (312,156,8,'b_a',26,'Household Member is',195,'Household Member of',1,NULL,NULL,NULL), - (313,157,8,'a_b',42,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), - (314,157,8,'b_a',26,'Household Member is',42,'Household Member of',1,NULL,NULL,NULL), - (315,158,8,'a_b',179,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), - (316,158,8,'b_a',26,'Household Member is',179,'Household Member of',1,NULL,NULL,NULL), - (317,159,7,'a_b',59,'Head of Household for',26,'Head of Household is',1,NULL,NULL,NULL), - (318,159,7,'b_a',26,'Head of Household is',59,'Head of Household for',1,NULL,NULL,NULL), - (319,160,2,'a_b',195,'Spouse of',59,'Spouse of',1,NULL,NULL,NULL), - (320,160,2,'b_a',59,'Spouse of',195,'Spouse of',1,NULL,NULL,NULL), - (321,161,1,'a_b',46,'Child of',135,'Parent of',1,NULL,NULL,NULL), - (322,161,1,'b_a',135,'Parent of',46,'Child of',1,NULL,NULL,NULL), - (323,162,1,'a_b',187,'Child of',135,'Parent of',1,NULL,NULL,NULL), - (324,162,1,'b_a',135,'Parent of',187,'Child of',1,NULL,NULL,NULL), - (325,163,1,'a_b',46,'Child of',142,'Parent of',1,NULL,NULL,NULL), - (326,163,1,'b_a',142,'Parent of',46,'Child of',1,NULL,NULL,NULL), - (327,164,1,'a_b',187,'Child of',142,'Parent of',1,NULL,NULL,NULL), - (328,164,1,'b_a',142,'Parent of',187,'Child of',1,NULL,NULL,NULL), - (329,165,4,'a_b',187,'Sibling of',46,'Sibling of',1,NULL,NULL,NULL), - (330,165,4,'b_a',46,'Sibling of',187,'Sibling of',1,NULL,NULL,NULL), - (331,166,8,'a_b',142,'Household Member of',123,'Household Member is',1,NULL,NULL,NULL), - (332,166,8,'b_a',123,'Household Member is',142,'Household Member of',1,NULL,NULL,NULL), - (333,167,8,'a_b',46,'Household Member of',123,'Household Member is',1,NULL,NULL,NULL), - (334,167,8,'b_a',123,'Household Member is',46,'Household Member of',1,NULL,NULL,NULL), - (335,168,8,'a_b',187,'Household Member of',123,'Household Member is',1,NULL,NULL,NULL), - (336,168,8,'b_a',123,'Household Member is',187,'Household Member of',1,NULL,NULL,NULL), - (337,169,7,'a_b',135,'Head of Household for',123,'Head of Household is',0,NULL,NULL,NULL), - (338,169,7,'b_a',123,'Head of Household is',135,'Head of Household for',0,NULL,NULL,NULL), - (339,170,2,'a_b',142,'Spouse of',135,'Spouse of',0,NULL,NULL,NULL), - (340,170,2,'b_a',135,'Spouse of',142,'Spouse of',0,NULL,NULL,NULL), - (341,171,1,'a_b',152,'Child of',131,'Parent of',1,NULL,NULL,NULL), - (342,171,1,'b_a',131,'Parent of',152,'Child of',1,NULL,NULL,NULL), - (343,172,1,'a_b',94,'Child of',131,'Parent of',1,NULL,NULL,NULL), - (344,172,1,'b_a',131,'Parent of',94,'Child of',1,NULL,NULL,NULL), - (345,173,1,'a_b',152,'Child of',106,'Parent of',1,NULL,NULL,NULL), - (346,173,1,'b_a',106,'Parent of',152,'Child of',1,NULL,NULL,NULL), - (347,174,1,'a_b',94,'Child of',106,'Parent of',1,NULL,NULL,NULL), - (348,174,1,'b_a',106,'Parent of',94,'Child of',1,NULL,NULL,NULL), - (349,175,4,'a_b',94,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL), - (350,175,4,'b_a',152,'Sibling of',94,'Sibling of',1,NULL,NULL,NULL), - (351,176,8,'a_b',106,'Household Member of',97,'Household Member is',1,NULL,NULL,NULL), - (352,176,8,'b_a',97,'Household Member is',106,'Household Member of',1,NULL,NULL,NULL), - (353,177,8,'a_b',152,'Household Member of',97,'Household Member is',1,NULL,NULL,NULL), - (354,177,8,'b_a',97,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL), - (355,178,8,'a_b',94,'Household Member of',97,'Household Member is',1,NULL,NULL,NULL), - (356,178,8,'b_a',97,'Household Member is',94,'Household Member of',1,NULL,NULL,NULL), - (357,179,7,'a_b',131,'Head of Household for',97,'Head of Household is',1,NULL,NULL,NULL), - (358,179,7,'b_a',97,'Head of Household is',131,'Head of Household for',1,NULL,NULL,NULL), - (359,180,2,'a_b',106,'Spouse of',131,'Spouse of',1,NULL,NULL,NULL), - (360,180,2,'b_a',131,'Spouse of',106,'Spouse of',1,NULL,NULL,NULL), - (361,181,1,'a_b',166,'Child of',62,'Parent of',1,NULL,NULL,NULL), - (362,181,1,'b_a',62,'Parent of',166,'Child of',1,NULL,NULL,NULL), - (363,182,1,'a_b',171,'Child of',62,'Parent of',1,NULL,NULL,NULL), - (364,182,1,'b_a',62,'Parent of',171,'Child of',1,NULL,NULL,NULL), - (365,183,1,'a_b',166,'Child of',60,'Parent of',1,NULL,NULL,NULL), - (366,183,1,'b_a',60,'Parent of',166,'Child of',1,NULL,NULL,NULL), - (367,184,1,'a_b',171,'Child of',60,'Parent of',1,NULL,NULL,NULL), - (368,184,1,'b_a',60,'Parent of',171,'Child of',1,NULL,NULL,NULL), - (369,185,4,'a_b',171,'Sibling of',166,'Sibling of',1,NULL,NULL,NULL), - (370,185,4,'b_a',166,'Sibling of',171,'Sibling of',1,NULL,NULL,NULL), - (371,186,8,'a_b',60,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), - (372,186,8,'b_a',149,'Household Member is',60,'Household Member of',1,NULL,NULL,NULL), - (373,187,8,'a_b',166,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), - (374,187,8,'b_a',149,'Household Member is',166,'Household Member of',1,NULL,NULL,NULL), - (375,188,8,'a_b',171,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), - (376,188,8,'b_a',149,'Household Member is',171,'Household Member of',1,NULL,NULL,NULL), - (377,189,7,'a_b',62,'Head of Household for',149,'Head of Household is',0,NULL,NULL,NULL), - (378,189,7,'b_a',149,'Head of Household is',62,'Head of Household for',0,NULL,NULL,NULL), - (379,190,2,'a_b',60,'Spouse of',62,'Spouse of',0,NULL,NULL,NULL), - (380,190,2,'b_a',62,'Spouse of',60,'Spouse of',0,NULL,NULL,NULL), - (381,191,1,'a_b',99,'Child of',174,'Parent of',1,NULL,NULL,NULL), - (382,191,1,'b_a',174,'Parent of',99,'Child of',1,NULL,NULL,NULL), - (383,192,1,'a_b',180,'Child of',174,'Parent of',1,NULL,NULL,NULL), - (384,192,1,'b_a',174,'Parent of',180,'Child of',1,NULL,NULL,NULL), - (385,193,1,'a_b',99,'Child of',199,'Parent of',1,NULL,NULL,NULL), - (386,193,1,'b_a',199,'Parent of',99,'Child of',1,NULL,NULL,NULL), - (387,194,1,'a_b',180,'Child of',199,'Parent of',1,NULL,NULL,NULL), - (388,194,1,'b_a',199,'Parent of',180,'Child of',1,NULL,NULL,NULL), - (389,195,4,'a_b',180,'Sibling of',99,'Sibling of',1,NULL,NULL,NULL), - (390,195,4,'b_a',99,'Sibling of',180,'Sibling of',1,NULL,NULL,NULL), - (391,196,8,'a_b',199,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), - (392,196,8,'b_a',75,'Household Member is',199,'Household Member of',1,NULL,NULL,NULL), - (393,197,8,'a_b',99,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), - (394,197,8,'b_a',75,'Household Member is',99,'Household Member of',1,NULL,NULL,NULL), - (395,198,8,'a_b',180,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), - (396,198,8,'b_a',75,'Household Member is',180,'Household Member of',1,NULL,NULL,NULL), - (397,199,7,'a_b',174,'Head of Household for',75,'Head of Household is',0,NULL,NULL,NULL), - (398,199,7,'b_a',75,'Head of Household is',174,'Head of Household for',0,NULL,NULL,NULL), - (399,200,2,'a_b',199,'Spouse of',174,'Spouse of',0,NULL,NULL,NULL), - (400,200,2,'b_a',174,'Spouse of',199,'Spouse of',0,NULL,NULL,NULL), - (401,201,5,'a_b',17,'Employee of',18,'Employer of',1,NULL,NULL,NULL), - (402,201,5,'b_a',18,'Employer of',17,'Employee of',1,NULL,NULL,NULL), - (403,202,5,'a_b',175,'Employee of',23,'Employer of',1,NULL,NULL,NULL), - (404,202,5,'b_a',23,'Employer of',175,'Employee of',1,NULL,NULL,NULL), - (405,203,5,'a_b',30,'Employee of',29,'Employer of',1,NULL,NULL,NULL), - (406,203,5,'b_a',29,'Employer of',30,'Employee of',1,NULL,NULL,NULL), - (407,204,5,'a_b',151,'Employee of',78,'Employer of',1,NULL,NULL,NULL), - (408,204,5,'b_a',78,'Employer of',151,'Employee of',1,NULL,NULL,NULL), - (409,205,5,'a_b',40,'Employee of',88,'Employer of',1,NULL,NULL,NULL), - (410,205,5,'b_a',88,'Employer of',40,'Employee of',1,NULL,NULL,NULL), - (411,206,5,'a_b',143,'Employee of',90,'Employer of',1,NULL,NULL,NULL), - (412,206,5,'b_a',90,'Employer of',143,'Employee of',1,NULL,NULL,NULL), - (413,207,5,'a_b',86,'Employee of',91,'Employer of',1,NULL,NULL,NULL), - (414,207,5,'b_a',91,'Employer of',86,'Employee of',1,NULL,NULL,NULL), - (415,208,5,'a_b',110,'Employee of',108,'Employer of',1,NULL,NULL,NULL), - (416,208,5,'b_a',108,'Employer of',110,'Employee of',1,NULL,NULL,NULL), - (417,209,5,'a_b',50,'Employee of',109,'Employer of',1,NULL,NULL,NULL), - (418,209,5,'b_a',109,'Employer of',50,'Employee of',1,NULL,NULL,NULL), - (419,210,5,'a_b',191,'Employee of',129,'Employer of',1,NULL,NULL,NULL), - (420,210,5,'b_a',129,'Employer of',191,'Employee of',1,NULL,NULL,NULL), - (421,211,5,'a_b',201,'Employee of',153,'Employer of',1,NULL,NULL,NULL), - (422,211,5,'b_a',153,'Employer of',201,'Employee of',1,NULL,NULL,NULL), - (423,212,5,'a_b',164,'Employee of',168,'Employer of',1,NULL,NULL,NULL), - (424,212,5,'b_a',168,'Employer of',164,'Employee of',1,NULL,NULL,NULL), - (425,213,5,'a_b',159,'Employee of',177,'Employer of',1,NULL,NULL,NULL), - (426,213,5,'b_a',177,'Employer of',159,'Employee of',1,NULL,NULL,NULL), - (427,214,5,'a_b',11,'Employee of',178,'Employer of',1,NULL,NULL,NULL), - (428,214,5,'b_a',178,'Employer of',11,'Employee of',1,NULL,NULL,NULL), - (429,215,5,'a_b',147,'Employee of',193,'Employer of',1,NULL,NULL,NULL), - (430,215,5,'b_a',193,'Employer of',147,'Employee of',1,NULL,NULL,NULL), - (431,216,5,'a_b',36,'Employee of',194,'Employer of',1,NULL,NULL,NULL), - (432,216,5,'b_a',194,'Employer of',36,'Employee of',1,NULL,NULL,NULL); + (1,1,1,'a_b',24,'Child of',86,'Parent of',1,NULL,NULL,NULL), + (2,1,1,'b_a',86,'Parent of',24,'Child of',1,NULL,NULL,NULL), + (3,2,1,'a_b',189,'Child of',86,'Parent of',1,NULL,NULL,NULL), + (4,2,1,'b_a',86,'Parent of',189,'Child of',1,NULL,NULL,NULL), + (5,3,1,'a_b',24,'Child of',16,'Parent of',1,NULL,NULL,NULL), + (6,3,1,'b_a',16,'Parent of',24,'Child of',1,NULL,NULL,NULL), + (7,4,1,'a_b',189,'Child of',16,'Parent of',1,NULL,NULL,NULL), + (8,4,1,'b_a',16,'Parent of',189,'Child of',1,NULL,NULL,NULL), + (9,5,4,'a_b',189,'Sibling of',24,'Sibling of',1,NULL,NULL,NULL), + (10,5,4,'b_a',24,'Sibling of',189,'Sibling of',1,NULL,NULL,NULL), + (11,6,8,'a_b',16,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), + (12,6,8,'b_a',58,'Household Member is',16,'Household Member of',1,NULL,NULL,NULL), + (13,7,8,'a_b',24,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), + (14,7,8,'b_a',58,'Household Member is',24,'Household Member of',1,NULL,NULL,NULL), + (15,8,8,'a_b',189,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), + (16,8,8,'b_a',58,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL), + (17,9,7,'a_b',86,'Head of Household for',58,'Head of Household is',0,NULL,NULL,NULL), + (18,9,7,'b_a',58,'Head of Household is',86,'Head of Household for',0,NULL,NULL,NULL), + (19,10,2,'a_b',16,'Spouse of',86,'Spouse of',0,NULL,NULL,NULL), + (20,10,2,'b_a',86,'Spouse of',16,'Spouse of',0,NULL,NULL,NULL), + (21,11,1,'a_b',151,'Child of',141,'Parent of',1,NULL,NULL,NULL), + (22,11,1,'b_a',141,'Parent of',151,'Child of',1,NULL,NULL,NULL), + (23,12,1,'a_b',20,'Child of',141,'Parent of',1,NULL,NULL,NULL), + (24,12,1,'b_a',141,'Parent of',20,'Child of',1,NULL,NULL,NULL), + (25,13,1,'a_b',151,'Child of',176,'Parent of',1,NULL,NULL,NULL), + (26,13,1,'b_a',176,'Parent of',151,'Child of',1,NULL,NULL,NULL), + (27,14,1,'a_b',20,'Child of',176,'Parent of',1,NULL,NULL,NULL), + (28,14,1,'b_a',176,'Parent of',20,'Child of',1,NULL,NULL,NULL), + (29,15,4,'a_b',20,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL), + (30,15,4,'b_a',151,'Sibling of',20,'Sibling of',1,NULL,NULL,NULL), + (31,16,8,'a_b',176,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL), + (32,16,8,'b_a',190,'Household Member is',176,'Household Member of',1,NULL,NULL,NULL), + (33,17,8,'a_b',151,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL), + (34,17,8,'b_a',190,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL), + (35,18,8,'a_b',20,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL), + (36,18,8,'b_a',190,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL), + (37,19,7,'a_b',141,'Head of Household for',190,'Head of Household is',1,NULL,NULL,NULL), + (38,19,7,'b_a',190,'Head of Household is',141,'Head of Household for',1,NULL,NULL,NULL), + (39,20,2,'a_b',176,'Spouse of',141,'Spouse of',1,NULL,NULL,NULL), + (40,20,2,'b_a',141,'Spouse of',176,'Spouse of',1,NULL,NULL,NULL), + (41,21,1,'a_b',125,'Child of',49,'Parent of',1,NULL,NULL,NULL), + (42,21,1,'b_a',49,'Parent of',125,'Child of',1,NULL,NULL,NULL), + (43,22,1,'a_b',55,'Child of',49,'Parent of',1,NULL,NULL,NULL), + (44,22,1,'b_a',49,'Parent of',55,'Child of',1,NULL,NULL,NULL), + (45,23,1,'a_b',125,'Child of',200,'Parent of',1,NULL,NULL,NULL), + (46,23,1,'b_a',200,'Parent of',125,'Child of',1,NULL,NULL,NULL), + (47,24,1,'a_b',55,'Child of',200,'Parent of',1,NULL,NULL,NULL), + (48,24,1,'b_a',200,'Parent of',55,'Child of',1,NULL,NULL,NULL), + (49,25,4,'a_b',55,'Sibling of',125,'Sibling of',1,NULL,NULL,NULL), + (50,25,4,'b_a',125,'Sibling of',55,'Sibling of',1,NULL,NULL,NULL), + (51,26,8,'a_b',200,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL), + (52,26,8,'b_a',155,'Household Member is',200,'Household Member of',1,NULL,NULL,NULL), + (53,27,8,'a_b',125,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL), + (54,27,8,'b_a',155,'Household Member is',125,'Household Member of',1,NULL,NULL,NULL), + (55,28,8,'a_b',55,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL), + (56,28,8,'b_a',155,'Household Member is',55,'Household Member of',1,NULL,NULL,NULL), + (57,29,7,'a_b',49,'Head of Household for',155,'Head of Household is',1,NULL,NULL,NULL), + (58,29,7,'b_a',155,'Head of Household is',49,'Head of Household for',1,NULL,NULL,NULL), + (59,30,2,'a_b',200,'Spouse of',49,'Spouse of',1,NULL,NULL,NULL), + (60,30,2,'b_a',49,'Spouse of',200,'Spouse of',1,NULL,NULL,NULL), + (61,31,1,'a_b',34,'Child of',150,'Parent of',1,NULL,NULL,NULL), + (62,31,1,'b_a',150,'Parent of',34,'Child of',1,NULL,NULL,NULL), + (63,32,1,'a_b',164,'Child of',150,'Parent of',1,NULL,NULL,NULL), + (64,32,1,'b_a',150,'Parent of',164,'Child of',1,NULL,NULL,NULL), + (65,33,1,'a_b',34,'Child of',179,'Parent of',1,NULL,NULL,NULL), + (66,33,1,'b_a',179,'Parent of',34,'Child of',1,NULL,NULL,NULL), + (67,34,1,'a_b',164,'Child of',179,'Parent of',1,NULL,NULL,NULL), + (68,34,1,'b_a',179,'Parent of',164,'Child of',1,NULL,NULL,NULL), + (69,35,4,'a_b',164,'Sibling of',34,'Sibling of',1,NULL,NULL,NULL), + (70,35,4,'b_a',34,'Sibling of',164,'Sibling of',1,NULL,NULL,NULL), + (71,36,8,'a_b',179,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), + (72,36,8,'b_a',26,'Household Member is',179,'Household Member of',1,NULL,NULL,NULL), + (73,37,8,'a_b',34,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), + (74,37,8,'b_a',26,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL), + (75,38,8,'a_b',164,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), + (76,38,8,'b_a',26,'Household Member is',164,'Household Member of',1,NULL,NULL,NULL), + (77,39,7,'a_b',150,'Head of Household for',26,'Head of Household is',0,NULL,NULL,NULL), + (78,39,7,'b_a',26,'Head of Household is',150,'Head of Household for',0,NULL,NULL,NULL), + (79,40,2,'a_b',179,'Spouse of',150,'Spouse of',0,NULL,NULL,NULL), + (80,40,2,'b_a',150,'Spouse of',179,'Spouse of',0,NULL,NULL,NULL), + (81,41,1,'a_b',44,'Child of',183,'Parent of',1,NULL,NULL,NULL), + (82,41,1,'b_a',183,'Parent of',44,'Child of',1,NULL,NULL,NULL), + (83,42,1,'a_b',60,'Child of',183,'Parent of',1,NULL,NULL,NULL), + (84,42,1,'b_a',183,'Parent of',60,'Child of',1,NULL,NULL,NULL), + (85,43,1,'a_b',44,'Child of',193,'Parent of',1,NULL,NULL,NULL), + (86,43,1,'b_a',193,'Parent of',44,'Child of',1,NULL,NULL,NULL), + (87,44,1,'a_b',60,'Child of',193,'Parent of',1,NULL,NULL,NULL), + (88,44,1,'b_a',193,'Parent of',60,'Child of',1,NULL,NULL,NULL), + (89,45,4,'a_b',60,'Sibling of',44,'Sibling of',1,NULL,NULL,NULL), + (90,45,4,'b_a',44,'Sibling of',60,'Sibling of',1,NULL,NULL,NULL), + (91,46,8,'a_b',193,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL), + (92,46,8,'b_a',53,'Household Member is',193,'Household Member of',1,NULL,NULL,NULL), + (93,47,8,'a_b',44,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL), + (94,47,8,'b_a',53,'Household Member is',44,'Household Member of',1,NULL,NULL,NULL), + (95,48,8,'a_b',60,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL), + (96,48,8,'b_a',53,'Household Member is',60,'Household Member of',1,NULL,NULL,NULL), + (97,49,7,'a_b',183,'Head of Household for',53,'Head of Household is',0,NULL,NULL,NULL), + (98,49,7,'b_a',53,'Head of Household is',183,'Head of Household for',0,NULL,NULL,NULL), + (99,50,2,'a_b',193,'Spouse of',183,'Spouse of',0,NULL,NULL,NULL), + (100,50,2,'b_a',183,'Spouse of',193,'Spouse of',0,NULL,NULL,NULL), + (101,51,1,'a_b',76,'Child of',84,'Parent of',1,NULL,NULL,NULL), + (102,51,1,'b_a',84,'Parent of',76,'Child of',1,NULL,NULL,NULL), + (103,52,1,'a_b',126,'Child of',84,'Parent of',1,NULL,NULL,NULL), + (104,52,1,'b_a',84,'Parent of',126,'Child of',1,NULL,NULL,NULL), + (105,53,1,'a_b',76,'Child of',109,'Parent of',1,NULL,NULL,NULL), + (106,53,1,'b_a',109,'Parent of',76,'Child of',1,NULL,NULL,NULL), + (107,54,1,'a_b',126,'Child of',109,'Parent of',1,NULL,NULL,NULL), + (108,54,1,'b_a',109,'Parent of',126,'Child of',1,NULL,NULL,NULL), + (109,55,4,'a_b',126,'Sibling of',76,'Sibling of',1,NULL,NULL,NULL), + (110,55,4,'b_a',76,'Sibling of',126,'Sibling of',1,NULL,NULL,NULL), + (111,56,8,'a_b',109,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (112,56,8,'b_a',156,'Household Member is',109,'Household Member of',1,NULL,NULL,NULL), + (113,57,8,'a_b',76,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (114,57,8,'b_a',156,'Household Member is',76,'Household Member of',1,NULL,NULL,NULL), + (115,58,8,'a_b',126,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (116,58,8,'b_a',156,'Household Member is',126,'Household Member of',1,NULL,NULL,NULL), + (117,59,7,'a_b',84,'Head of Household for',156,'Head of Household is',1,NULL,NULL,NULL), + (118,59,7,'b_a',156,'Head of Household is',84,'Head of Household for',1,NULL,NULL,NULL), + (119,60,2,'a_b',109,'Spouse of',84,'Spouse of',1,NULL,NULL,NULL), + (120,60,2,'b_a',84,'Spouse of',109,'Spouse of',1,NULL,NULL,NULL), + (121,61,1,'a_b',147,'Child of',46,'Parent of',1,NULL,NULL,NULL), + (122,61,1,'b_a',46,'Parent of',147,'Child of',1,NULL,NULL,NULL), + (123,62,1,'a_b',74,'Child of',46,'Parent of',1,NULL,NULL,NULL), + (124,62,1,'b_a',46,'Parent of',74,'Child of',1,NULL,NULL,NULL), + (125,63,1,'a_b',147,'Child of',149,'Parent of',1,NULL,NULL,NULL), + (126,63,1,'b_a',149,'Parent of',147,'Child of',1,NULL,NULL,NULL), + (127,64,1,'a_b',74,'Child of',149,'Parent of',1,NULL,NULL,NULL), + (128,64,1,'b_a',149,'Parent of',74,'Child of',1,NULL,NULL,NULL), + (129,65,4,'a_b',74,'Sibling of',147,'Sibling of',1,NULL,NULL,NULL), + (130,65,4,'b_a',147,'Sibling of',74,'Sibling of',1,NULL,NULL,NULL), + (131,66,8,'a_b',149,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (132,66,8,'b_a',131,'Household Member is',149,'Household Member of',1,NULL,NULL,NULL), + (133,67,8,'a_b',147,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (134,67,8,'b_a',131,'Household Member is',147,'Household Member of',1,NULL,NULL,NULL), + (135,68,8,'a_b',74,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (136,68,8,'b_a',131,'Household Member is',74,'Household Member of',1,NULL,NULL,NULL), + (137,69,7,'a_b',46,'Head of Household for',131,'Head of Household is',1,NULL,NULL,NULL), + (138,69,7,'b_a',131,'Head of Household is',46,'Head of Household for',1,NULL,NULL,NULL), + (139,70,2,'a_b',149,'Spouse of',46,'Spouse of',1,NULL,NULL,NULL), + (140,70,2,'b_a',46,'Spouse of',149,'Spouse of',1,NULL,NULL,NULL), + (141,71,1,'a_b',162,'Child of',140,'Parent of',1,NULL,NULL,NULL), + (142,71,1,'b_a',140,'Parent of',162,'Child of',1,NULL,NULL,NULL), + (143,72,1,'a_b',66,'Child of',140,'Parent of',1,NULL,NULL,NULL), + (144,72,1,'b_a',140,'Parent of',66,'Child of',1,NULL,NULL,NULL), + (145,73,1,'a_b',162,'Child of',163,'Parent of',1,NULL,NULL,NULL), + (146,73,1,'b_a',163,'Parent of',162,'Child of',1,NULL,NULL,NULL), + (147,74,1,'a_b',66,'Child of',163,'Parent of',1,NULL,NULL,NULL), + (148,74,1,'b_a',163,'Parent of',66,'Child of',1,NULL,NULL,NULL), + (149,75,4,'a_b',66,'Sibling of',162,'Sibling of',1,NULL,NULL,NULL), + (150,75,4,'b_a',162,'Sibling of',66,'Sibling of',1,NULL,NULL,NULL), + (151,76,8,'a_b',163,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (152,76,8,'b_a',10,'Household Member is',163,'Household Member of',1,NULL,NULL,NULL), + (153,77,8,'a_b',162,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (154,77,8,'b_a',10,'Household Member is',162,'Household Member of',1,NULL,NULL,NULL), + (155,78,8,'a_b',66,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (156,78,8,'b_a',10,'Household Member is',66,'Household Member of',1,NULL,NULL,NULL), + (157,79,7,'a_b',140,'Head of Household for',10,'Head of Household is',1,NULL,NULL,NULL), + (158,79,7,'b_a',10,'Head of Household is',140,'Head of Household for',1,NULL,NULL,NULL), + (159,80,2,'a_b',163,'Spouse of',140,'Spouse of',1,NULL,NULL,NULL), + (160,80,2,'b_a',140,'Spouse of',163,'Spouse of',1,NULL,NULL,NULL), + (161,81,1,'a_b',170,'Child of',21,'Parent of',1,NULL,NULL,NULL), + (162,81,1,'b_a',21,'Parent of',170,'Child of',1,NULL,NULL,NULL), + (163,82,1,'a_b',45,'Child of',21,'Parent of',1,NULL,NULL,NULL), + (164,82,1,'b_a',21,'Parent of',45,'Child of',1,NULL,NULL,NULL), + (165,83,1,'a_b',170,'Child of',14,'Parent of',1,NULL,NULL,NULL), + (166,83,1,'b_a',14,'Parent of',170,'Child of',1,NULL,NULL,NULL), + (167,84,1,'a_b',45,'Child of',14,'Parent of',1,NULL,NULL,NULL), + (168,84,1,'b_a',14,'Parent of',45,'Child of',1,NULL,NULL,NULL), + (169,85,4,'a_b',45,'Sibling of',170,'Sibling of',1,NULL,NULL,NULL), + (170,85,4,'b_a',170,'Sibling of',45,'Sibling of',1,NULL,NULL,NULL), + (171,86,8,'a_b',14,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), + (172,86,8,'b_a',177,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL), + (173,87,8,'a_b',170,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), + (174,87,8,'b_a',177,'Household Member is',170,'Household Member of',1,NULL,NULL,NULL), + (175,88,8,'a_b',45,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), + (176,88,8,'b_a',177,'Household Member is',45,'Household Member of',1,NULL,NULL,NULL), + (177,89,7,'a_b',21,'Head of Household for',177,'Head of Household is',1,NULL,NULL,NULL), + (178,89,7,'b_a',177,'Head of Household is',21,'Head of Household for',1,NULL,NULL,NULL), + (179,90,2,'a_b',14,'Spouse of',21,'Spouse of',1,NULL,NULL,NULL), + (180,90,2,'b_a',21,'Spouse of',14,'Spouse of',1,NULL,NULL,NULL), + (181,91,1,'a_b',112,'Child of',124,'Parent of',1,NULL,NULL,NULL), + (182,91,1,'b_a',124,'Parent of',112,'Child of',1,NULL,NULL,NULL), + (183,92,1,'a_b',79,'Child of',124,'Parent of',1,NULL,NULL,NULL), + (184,92,1,'b_a',124,'Parent of',79,'Child of',1,NULL,NULL,NULL), + (185,93,1,'a_b',112,'Child of',199,'Parent of',1,NULL,NULL,NULL), + (186,93,1,'b_a',199,'Parent of',112,'Child of',1,NULL,NULL,NULL), + (187,94,1,'a_b',79,'Child of',199,'Parent of',1,NULL,NULL,NULL), + (188,94,1,'b_a',199,'Parent of',79,'Child of',1,NULL,NULL,NULL), + (189,95,4,'a_b',79,'Sibling of',112,'Sibling of',1,NULL,NULL,NULL), + (190,95,4,'b_a',112,'Sibling of',79,'Sibling of',1,NULL,NULL,NULL), + (191,96,8,'a_b',199,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), + (192,96,8,'b_a',3,'Household Member is',199,'Household Member of',1,NULL,NULL,NULL), + (193,97,8,'a_b',112,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), + (194,97,8,'b_a',3,'Household Member is',112,'Household Member of',1,NULL,NULL,NULL), + (195,98,8,'a_b',79,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), + (196,98,8,'b_a',3,'Household Member is',79,'Household Member of',1,NULL,NULL,NULL), + (197,99,7,'a_b',124,'Head of Household for',3,'Head of Household is',1,NULL,NULL,NULL), + (198,99,7,'b_a',3,'Head of Household is',124,'Head of Household for',1,NULL,NULL,NULL), + (199,100,2,'a_b',199,'Spouse of',124,'Spouse of',1,NULL,NULL,NULL), + (200,100,2,'b_a',124,'Spouse of',199,'Spouse of',1,NULL,NULL,NULL), + (201,101,1,'a_b',104,'Child of',48,'Parent of',1,NULL,NULL,NULL), + (202,101,1,'b_a',48,'Parent of',104,'Child of',1,NULL,NULL,NULL), + (203,102,1,'a_b',92,'Child of',48,'Parent of',1,NULL,NULL,NULL), + (204,102,1,'b_a',48,'Parent of',92,'Child of',1,NULL,NULL,NULL), + (205,103,1,'a_b',104,'Child of',91,'Parent of',1,NULL,NULL,NULL), + (206,103,1,'b_a',91,'Parent of',104,'Child of',1,NULL,NULL,NULL), + (207,104,1,'a_b',92,'Child of',91,'Parent of',1,NULL,NULL,NULL), + (208,104,1,'b_a',91,'Parent of',92,'Child of',1,NULL,NULL,NULL), + (209,105,4,'a_b',92,'Sibling of',104,'Sibling of',1,NULL,NULL,NULL), + (210,105,4,'b_a',104,'Sibling of',92,'Sibling of',1,NULL,NULL,NULL), + (211,106,8,'a_b',91,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL), + (212,106,8,'b_a',191,'Household Member is',91,'Household Member of',1,NULL,NULL,NULL), + (213,107,8,'a_b',104,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL), + (214,107,8,'b_a',191,'Household Member is',104,'Household Member of',1,NULL,NULL,NULL), + (215,108,8,'a_b',92,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL), + (216,108,8,'b_a',191,'Household Member is',92,'Household Member of',1,NULL,NULL,NULL), + (217,109,7,'a_b',48,'Head of Household for',191,'Head of Household is',1,NULL,NULL,NULL), + (218,109,7,'b_a',191,'Head of Household is',48,'Head of Household for',1,NULL,NULL,NULL), + (219,110,2,'a_b',91,'Spouse of',48,'Spouse of',1,NULL,NULL,NULL), + (220,110,2,'b_a',48,'Spouse of',91,'Spouse of',1,NULL,NULL,NULL), + (221,111,1,'a_b',160,'Child of',110,'Parent of',1,NULL,NULL,NULL), + (222,111,1,'b_a',110,'Parent of',160,'Child of',1,NULL,NULL,NULL), + (223,112,1,'a_b',57,'Child of',110,'Parent of',1,NULL,NULL,NULL), + (224,112,1,'b_a',110,'Parent of',57,'Child of',1,NULL,NULL,NULL), + (225,113,1,'a_b',160,'Child of',100,'Parent of',1,NULL,NULL,NULL), + (226,113,1,'b_a',100,'Parent of',160,'Child of',1,NULL,NULL,NULL), + (227,114,1,'a_b',57,'Child of',100,'Parent of',1,NULL,NULL,NULL), + (228,114,1,'b_a',100,'Parent of',57,'Child of',1,NULL,NULL,NULL), + (229,115,4,'a_b',57,'Sibling of',160,'Sibling of',1,NULL,NULL,NULL), + (230,115,4,'b_a',160,'Sibling of',57,'Sibling of',1,NULL,NULL,NULL), + (231,116,8,'a_b',100,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (232,116,8,'b_a',134,'Household Member is',100,'Household Member of',1,NULL,NULL,NULL), + (233,117,8,'a_b',160,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (234,117,8,'b_a',134,'Household Member is',160,'Household Member of',1,NULL,NULL,NULL), + (235,118,8,'a_b',57,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (236,118,8,'b_a',134,'Household Member is',57,'Household Member of',1,NULL,NULL,NULL), + (237,119,7,'a_b',110,'Head of Household for',134,'Head of Household is',0,NULL,NULL,NULL), + (238,119,7,'b_a',134,'Head of Household is',110,'Head of Household for',0,NULL,NULL,NULL), + (239,120,2,'a_b',100,'Spouse of',110,'Spouse of',0,NULL,NULL,NULL), + (240,120,2,'b_a',110,'Spouse of',100,'Spouse of',0,NULL,NULL,NULL), + (241,121,1,'a_b',13,'Child of',198,'Parent of',1,NULL,NULL,NULL), + (242,121,1,'b_a',198,'Parent of',13,'Child of',1,NULL,NULL,NULL), + (243,122,1,'a_b',62,'Child of',198,'Parent of',1,NULL,NULL,NULL), + (244,122,1,'b_a',198,'Parent of',62,'Child of',1,NULL,NULL,NULL), + (245,123,1,'a_b',13,'Child of',6,'Parent of',1,NULL,NULL,NULL), + (246,123,1,'b_a',6,'Parent of',13,'Child of',1,NULL,NULL,NULL), + (247,124,1,'a_b',62,'Child of',6,'Parent of',1,NULL,NULL,NULL), + (248,124,1,'b_a',6,'Parent of',62,'Child of',1,NULL,NULL,NULL), + (249,125,4,'a_b',62,'Sibling of',13,'Sibling of',1,NULL,NULL,NULL), + (250,125,4,'b_a',13,'Sibling of',62,'Sibling of',1,NULL,NULL,NULL), + (251,126,8,'a_b',6,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL), + (252,126,8,'b_a',73,'Household Member is',6,'Household Member of',1,NULL,NULL,NULL), + (253,127,8,'a_b',13,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL), + (254,127,8,'b_a',73,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL), + (255,128,8,'a_b',62,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL), + (256,128,8,'b_a',73,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL), + (257,129,7,'a_b',198,'Head of Household for',73,'Head of Household is',0,NULL,NULL,NULL), + (258,129,7,'b_a',73,'Head of Household is',198,'Head of Household for',0,NULL,NULL,NULL), + (259,130,2,'a_b',6,'Spouse of',198,'Spouse of',0,NULL,NULL,NULL), + (260,130,2,'b_a',198,'Spouse of',6,'Spouse of',0,NULL,NULL,NULL), + (261,131,1,'a_b',99,'Child of',15,'Parent of',1,NULL,NULL,NULL), + (262,131,1,'b_a',15,'Parent of',99,'Child of',1,NULL,NULL,NULL), + (263,132,1,'a_b',116,'Child of',15,'Parent of',1,NULL,NULL,NULL), + (264,132,1,'b_a',15,'Parent of',116,'Child of',1,NULL,NULL,NULL), + (265,133,1,'a_b',99,'Child of',137,'Parent of',1,NULL,NULL,NULL), + (266,133,1,'b_a',137,'Parent of',99,'Child of',1,NULL,NULL,NULL), + (267,134,1,'a_b',116,'Child of',137,'Parent of',1,NULL,NULL,NULL), + (268,134,1,'b_a',137,'Parent of',116,'Child of',1,NULL,NULL,NULL), + (269,135,4,'a_b',116,'Sibling of',99,'Sibling of',1,NULL,NULL,NULL), + (270,135,4,'b_a',99,'Sibling of',116,'Sibling of',1,NULL,NULL,NULL), + (271,136,8,'a_b',137,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), + (272,136,8,'b_a',88,'Household Member is',137,'Household Member of',1,NULL,NULL,NULL), + (273,137,8,'a_b',99,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), + (274,137,8,'b_a',88,'Household Member is',99,'Household Member of',1,NULL,NULL,NULL), + (275,138,8,'a_b',116,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), + (276,138,8,'b_a',88,'Household Member is',116,'Household Member of',1,NULL,NULL,NULL), + (277,139,7,'a_b',15,'Head of Household for',88,'Head of Household is',1,NULL,NULL,NULL), + (278,139,7,'b_a',88,'Head of Household is',15,'Head of Household for',1,NULL,NULL,NULL), + (279,140,2,'a_b',137,'Spouse of',15,'Spouse of',1,NULL,NULL,NULL), + (280,140,2,'b_a',15,'Spouse of',137,'Spouse of',1,NULL,NULL,NULL), + (281,141,1,'a_b',114,'Child of',180,'Parent of',1,NULL,NULL,NULL), + (282,141,1,'b_a',180,'Parent of',114,'Child of',1,NULL,NULL,NULL), + (283,142,1,'a_b',32,'Child of',180,'Parent of',1,NULL,NULL,NULL), + (284,142,1,'b_a',180,'Parent of',32,'Child of',1,NULL,NULL,NULL), + (285,143,1,'a_b',114,'Child of',182,'Parent of',1,NULL,NULL,NULL), + (286,143,1,'b_a',182,'Parent of',114,'Child of',1,NULL,NULL,NULL), + (287,144,1,'a_b',32,'Child of',182,'Parent of',1,NULL,NULL,NULL), + (288,144,1,'b_a',182,'Parent of',32,'Child of',1,NULL,NULL,NULL), + (289,145,4,'a_b',32,'Sibling of',114,'Sibling of',1,NULL,NULL,NULL), + (290,145,4,'b_a',114,'Sibling of',32,'Sibling of',1,NULL,NULL,NULL), + (291,146,8,'a_b',182,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL), + (292,146,8,'b_a',23,'Household Member is',182,'Household Member of',1,NULL,NULL,NULL), + (293,147,8,'a_b',114,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL), + (294,147,8,'b_a',23,'Household Member is',114,'Household Member of',1,NULL,NULL,NULL), + (295,148,8,'a_b',32,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL), + (296,148,8,'b_a',23,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL), + (297,149,7,'a_b',180,'Head of Household for',23,'Head of Household is',1,NULL,NULL,NULL), + (298,149,7,'b_a',23,'Head of Household is',180,'Head of Household for',1,NULL,NULL,NULL), + (299,150,2,'a_b',182,'Spouse of',180,'Spouse of',1,NULL,NULL,NULL), + (300,150,2,'b_a',180,'Spouse of',182,'Spouse of',1,NULL,NULL,NULL), + (301,151,1,'a_b',39,'Child of',18,'Parent of',1,NULL,NULL,NULL), + (302,151,1,'b_a',18,'Parent of',39,'Child of',1,NULL,NULL,NULL), + (303,152,1,'a_b',41,'Child of',18,'Parent of',1,NULL,NULL,NULL), + (304,152,1,'b_a',18,'Parent of',41,'Child of',1,NULL,NULL,NULL), + (305,153,1,'a_b',39,'Child of',90,'Parent of',1,NULL,NULL,NULL), + (306,153,1,'b_a',90,'Parent of',39,'Child of',1,NULL,NULL,NULL), + (307,154,1,'a_b',41,'Child of',90,'Parent of',1,NULL,NULL,NULL), + (308,154,1,'b_a',90,'Parent of',41,'Child of',1,NULL,NULL,NULL), + (309,155,4,'a_b',41,'Sibling of',39,'Sibling of',1,NULL,NULL,NULL), + (310,155,4,'b_a',39,'Sibling of',41,'Sibling of',1,NULL,NULL,NULL), + (311,156,8,'a_b',90,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (312,156,8,'b_a',51,'Household Member is',90,'Household Member of',1,NULL,NULL,NULL), + (313,157,8,'a_b',39,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (314,157,8,'b_a',51,'Household Member is',39,'Household Member of',1,NULL,NULL,NULL), + (315,158,8,'a_b',41,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (316,158,8,'b_a',51,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL), + (317,159,7,'a_b',18,'Head of Household for',51,'Head of Household is',0,NULL,NULL,NULL), + (318,159,7,'b_a',51,'Head of Household is',18,'Head of Household for',0,NULL,NULL,NULL), + (319,160,2,'a_b',90,'Spouse of',18,'Spouse of',0,NULL,NULL,NULL), + (320,160,2,'b_a',18,'Spouse of',90,'Spouse of',0,NULL,NULL,NULL), + (321,161,1,'a_b',196,'Child of',2,'Parent of',1,NULL,NULL,NULL), + (322,161,1,'b_a',2,'Parent of',196,'Child of',1,NULL,NULL,NULL), + (323,162,1,'a_b',195,'Child of',2,'Parent of',1,NULL,NULL,NULL), + (324,162,1,'b_a',2,'Parent of',195,'Child of',1,NULL,NULL,NULL), + (325,163,1,'a_b',196,'Child of',121,'Parent of',1,NULL,NULL,NULL), + (326,163,1,'b_a',121,'Parent of',196,'Child of',1,NULL,NULL,NULL), + (327,164,1,'a_b',195,'Child of',121,'Parent of',1,NULL,NULL,NULL), + (328,164,1,'b_a',121,'Parent of',195,'Child of',1,NULL,NULL,NULL), + (329,165,4,'a_b',195,'Sibling of',196,'Sibling of',1,NULL,NULL,NULL), + (330,165,4,'b_a',196,'Sibling of',195,'Sibling of',1,NULL,NULL,NULL), + (331,166,8,'a_b',121,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), + (332,166,8,'b_a',43,'Household Member is',121,'Household Member of',1,NULL,NULL,NULL), + (333,167,8,'a_b',196,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), + (334,167,8,'b_a',43,'Household Member is',196,'Household Member of',1,NULL,NULL,NULL), + (335,168,8,'a_b',195,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), + (336,168,8,'b_a',43,'Household Member is',195,'Household Member of',1,NULL,NULL,NULL), + (337,169,7,'a_b',2,'Head of Household for',43,'Head of Household is',0,NULL,NULL,NULL), + (338,169,7,'b_a',43,'Head of Household is',2,'Head of Household for',0,NULL,NULL,NULL), + (339,170,2,'a_b',121,'Spouse of',2,'Spouse of',0,NULL,NULL,NULL), + (340,170,2,'b_a',2,'Spouse of',121,'Spouse of',0,NULL,NULL,NULL), + (341,171,1,'a_b',61,'Child of',154,'Parent of',1,NULL,NULL,NULL), + (342,171,1,'b_a',154,'Parent of',61,'Child of',1,NULL,NULL,NULL), + (343,172,1,'a_b',63,'Child of',154,'Parent of',1,NULL,NULL,NULL), + (344,172,1,'b_a',154,'Parent of',63,'Child of',1,NULL,NULL,NULL), + (345,173,1,'a_b',61,'Child of',12,'Parent of',1,NULL,NULL,NULL), + (346,173,1,'b_a',12,'Parent of',61,'Child of',1,NULL,NULL,NULL), + (347,174,1,'a_b',63,'Child of',12,'Parent of',1,NULL,NULL,NULL), + (348,174,1,'b_a',12,'Parent of',63,'Child of',1,NULL,NULL,NULL), + (349,175,4,'a_b',63,'Sibling of',61,'Sibling of',1,NULL,NULL,NULL), + (350,175,4,'b_a',61,'Sibling of',63,'Sibling of',1,NULL,NULL,NULL), + (351,176,8,'a_b',12,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), + (352,176,8,'b_a',75,'Household Member is',12,'Household Member of',1,NULL,NULL,NULL), + (353,177,8,'a_b',61,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), + (354,177,8,'b_a',75,'Household Member is',61,'Household Member of',1,NULL,NULL,NULL), + (355,178,8,'a_b',63,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), + (356,178,8,'b_a',75,'Household Member is',63,'Household Member of',1,NULL,NULL,NULL), + (357,179,7,'a_b',154,'Head of Household for',75,'Head of Household is',1,NULL,NULL,NULL), + (358,179,7,'b_a',75,'Head of Household is',154,'Head of Household for',1,NULL,NULL,NULL), + (359,180,2,'a_b',12,'Spouse of',154,'Spouse of',1,NULL,NULL,NULL), + (360,180,2,'b_a',154,'Spouse of',12,'Spouse of',1,NULL,NULL,NULL), + (361,181,1,'a_b',175,'Child of',47,'Parent of',1,NULL,NULL,NULL), + (362,181,1,'b_a',47,'Parent of',175,'Child of',1,NULL,NULL,NULL), + (363,182,1,'a_b',85,'Child of',47,'Parent of',1,NULL,NULL,NULL), + (364,182,1,'b_a',47,'Parent of',85,'Child of',1,NULL,NULL,NULL), + (365,183,1,'a_b',175,'Child of',181,'Parent of',1,NULL,NULL,NULL), + (366,183,1,'b_a',181,'Parent of',175,'Child of',1,NULL,NULL,NULL), + (367,184,1,'a_b',85,'Child of',181,'Parent of',1,NULL,NULL,NULL), + (368,184,1,'b_a',181,'Parent of',85,'Child of',1,NULL,NULL,NULL), + (369,185,4,'a_b',85,'Sibling of',175,'Sibling of',1,NULL,NULL,NULL), + (370,185,4,'b_a',175,'Sibling of',85,'Sibling of',1,NULL,NULL,NULL), + (371,186,8,'a_b',181,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), + (372,186,8,'b_a',65,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL), + (373,187,8,'a_b',175,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), + (374,187,8,'b_a',65,'Household Member is',175,'Household Member of',1,NULL,NULL,NULL), + (375,188,8,'a_b',85,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), + (376,188,8,'b_a',65,'Household Member is',85,'Household Member of',1,NULL,NULL,NULL), + (377,189,7,'a_b',47,'Head of Household for',65,'Head of Household is',0,NULL,NULL,NULL), + (378,189,7,'b_a',65,'Head of Household is',47,'Head of Household for',0,NULL,NULL,NULL), + (379,190,2,'a_b',181,'Spouse of',47,'Spouse of',0,NULL,NULL,NULL), + (380,190,2,'b_a',47,'Spouse of',181,'Spouse of',0,NULL,NULL,NULL), + (381,191,1,'a_b',111,'Child of',36,'Parent of',1,NULL,NULL,NULL), + (382,191,1,'b_a',36,'Parent of',111,'Child of',1,NULL,NULL,NULL), + (383,192,1,'a_b',152,'Child of',36,'Parent of',1,NULL,NULL,NULL), + (384,192,1,'b_a',36,'Parent of',152,'Child of',1,NULL,NULL,NULL), + (385,193,1,'a_b',111,'Child of',118,'Parent of',1,NULL,NULL,NULL), + (386,193,1,'b_a',118,'Parent of',111,'Child of',1,NULL,NULL,NULL), + (387,194,1,'a_b',152,'Child of',118,'Parent of',1,NULL,NULL,NULL), + (388,194,1,'b_a',118,'Parent of',152,'Child of',1,NULL,NULL,NULL), + (389,195,4,'a_b',152,'Sibling of',111,'Sibling of',1,NULL,NULL,NULL), + (390,195,4,'b_a',111,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL), + (391,196,8,'a_b',118,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL), + (392,196,8,'b_a',159,'Household Member is',118,'Household Member of',1,NULL,NULL,NULL), + (393,197,8,'a_b',111,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL), + (394,197,8,'b_a',159,'Household Member is',111,'Household Member of',1,NULL,NULL,NULL), + (395,198,8,'a_b',152,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL), + (396,198,8,'b_a',159,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL), + (397,199,7,'a_b',36,'Head of Household for',159,'Head of Household is',0,NULL,NULL,NULL), + (398,199,7,'b_a',159,'Head of Household is',36,'Head of Household for',0,NULL,NULL,NULL), + (399,200,2,'a_b',118,'Spouse of',36,'Spouse of',0,NULL,NULL,NULL), + (400,200,2,'b_a',36,'Spouse of',118,'Spouse of',0,NULL,NULL,NULL), + (401,201,5,'a_b',15,'Employee of',7,'Employer of',1,NULL,NULL,NULL), + (402,201,5,'b_a',7,'Employer of',15,'Employee of',1,NULL,NULL,NULL), + (403,202,5,'a_b',129,'Employee of',19,'Employer of',1,NULL,NULL,NULL), + (404,202,5,'b_a',19,'Employer of',129,'Employee of',1,NULL,NULL,NULL), + (405,203,5,'a_b',33,'Employee of',22,'Employer of',1,NULL,NULL,NULL), + (406,203,5,'b_a',22,'Employer of',33,'Employee of',1,NULL,NULL,NULL), + (407,204,5,'a_b',74,'Employee of',50,'Employer of',1,NULL,NULL,NULL), + (408,204,5,'b_a',50,'Employer of',74,'Employee of',1,NULL,NULL,NULL), + (409,205,5,'a_b',109,'Employee of',52,'Employer of',1,NULL,NULL,NULL), + (410,205,5,'b_a',52,'Employer of',109,'Employee of',1,NULL,NULL,NULL), + (411,206,5,'a_b',185,'Employee of',59,'Employer of',1,NULL,NULL,NULL), + (412,206,5,'b_a',59,'Employer of',185,'Employee of',1,NULL,NULL,NULL), + (413,207,5,'a_b',184,'Employee of',64,'Employer of',1,NULL,NULL,NULL), + (414,207,5,'b_a',64,'Employer of',184,'Employee of',1,NULL,NULL,NULL), + (415,208,5,'a_b',76,'Employee of',67,'Employer of',1,NULL,NULL,NULL), + (416,208,5,'b_a',67,'Employer of',76,'Employee of',1,NULL,NULL,NULL), + (417,209,5,'a_b',85,'Employee of',68,'Employer of',1,NULL,NULL,NULL), + (418,209,5,'b_a',68,'Employer of',85,'Employee of',1,NULL,NULL,NULL), + (419,210,5,'a_b',4,'Employee of',69,'Employer of',1,NULL,NULL,NULL), + (420,210,5,'b_a',69,'Employer of',4,'Employee of',1,NULL,NULL,NULL), + (421,211,5,'a_b',81,'Employee of',77,'Employer of',1,NULL,NULL,NULL), + (422,211,5,'b_a',77,'Employer of',81,'Employee of',1,NULL,NULL,NULL), + (423,212,5,'a_b',187,'Employee of',103,'Employer of',1,NULL,NULL,NULL), + (424,212,5,'b_a',103,'Employer of',187,'Employee of',1,NULL,NULL,NULL), + (425,213,5,'a_b',18,'Employee of',122,'Employer of',1,NULL,NULL,NULL), + (426,213,5,'b_a',122,'Employer of',18,'Employee of',1,NULL,NULL,NULL), + (427,214,5,'a_b',72,'Employee of',133,'Employer of',1,NULL,NULL,NULL), + (428,214,5,'b_a',133,'Employer of',72,'Employee of',1,NULL,NULL,NULL), + (429,215,5,'a_b',115,'Employee of',135,'Employer of',1,NULL,NULL,NULL), + (430,215,5,'b_a',135,'Employer of',115,'Employee of',1,NULL,NULL,NULL), + (431,216,5,'a_b',197,'Employee of',139,'Employer of',1,NULL,NULL,NULL), + (432,216,5,'b_a',139,'Employer of',197,'Employee of',1,NULL,NULL,NULL), + (433,217,5,'a_b',178,'Employee of',146,'Employer of',1,NULL,NULL,NULL), + (434,217,5,'b_a',146,'Employer of',178,'Employee of',1,NULL,NULL,NULL), + (435,218,5,'a_b',96,'Employee of',148,'Employer of',1,NULL,NULL,NULL), + (436,218,5,'b_a',148,'Employer of',96,'Employee of',1,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */; UNLOCK TABLES; @@ -7989,7 +8031,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_saved_search` WRITE; /*!40000 ALTER TABLE `civicrm_saved_search` DISABLE KEYS */; INSERT INTO `civicrm_saved_search` (`id`, `name`, `label`, `form_values`, `mapping_id`, `search_custom_id`, `api_entity`, `api_params`, `created_id`, `modified_id`, `expires_date`, `created_date`, `modified_date`, `description`) VALUES - (1,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-09-19 09:27:40','2023-09-19 09:27:40',NULL); + (1,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL), + (2,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL), + (3,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL); /*!40000 ALTER TABLE `civicrm_saved_search` ENABLE KEYS */; UNLOCK TABLES; @@ -10382,19 +10426,18 @@ INSERT INTO `civicrm_state_province` (`id`, `name`, `abbreviation`, `country_id` (3947,'Buskerud','06',1161,1), (3948,'Finnmark','20',1161,1), (3949,'Hedmark','04',1161,1), - (3950,'Hordaland','12',1161,1), (3951,'Møre og Romsdal','15',1161,1), (3952,'Nordland','18',1161,1), (3953,'Nord-Trøndelag','17',1161,1), (3954,'Oppland','05',1161,1), (3955,'Oslo','03',1161,1), (3956,'Rogaland','11',1161,1), - (3957,'Sogn og Fjordane','14',1161,1), - (3958,'Sør-Trøndelag','16',1161,1), - (3959,'Telemark','06',1161,1), - (3960,'Troms','19',1161,1), - (3961,'Vest-Agder','10',1161,1), - (3962,'Vestfold','07',1161,1), + (3957,'Sør-Trøndelag','16',1161,1), + (3958,'Telemark','06',1161,1), + (3959,'Troms','19',1161,1), + (3960,'Vest-Agder','10',1161,1), + (3961,'Vestfold','07',1161,1), + (3962,'Vestland','46',1161,1), (3963,'Østfold','01',1161,1), (3964,'Jan Mayen','22',1161,1), (3965,'Svalbard','21',1161,1), @@ -12092,90 +12135,90 @@ UNLOCK TABLES; LOCK TABLES `civicrm_subscription_history` WRITE; /*!40000 ALTER TABLE `civicrm_subscription_history` DISABLE KEYS */; INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES - (1,119,2,'2023-07-28 14:18:29','Admin','Added',NULL), - (2,16,2,'2023-03-18 22:54:56','Email','Added',NULL), - (3,139,2,'2022-09-24 12:33:16','Admin','Added',NULL), - (4,141,2,'2023-08-10 09:08:28','Admin','Added',NULL), - (5,156,2,'2023-04-23 18:35:33','Email','Added',NULL), - (6,122,2,'2023-03-22 19:43:56','Admin','Added',NULL), - (7,132,2,'2023-08-20 09:20:29','Email','Added',NULL), - (8,79,2,'2023-01-05 16:41:51','Admin','Added',NULL), - (9,49,2,'2023-04-18 00:00:28','Admin','Added',NULL), - (10,188,2,'2022-12-27 19:57:43','Email','Added',NULL), - (11,81,2,'2023-08-19 08:40:26','Admin','Added',NULL), - (12,80,2,'2023-08-01 10:06:54','Admin','Added',NULL), - (13,169,2,'2023-08-12 20:25:43','Email','Added',NULL), - (14,150,2,'2022-12-23 14:27:27','Email','Added',NULL), - (15,53,2,'2023-01-31 16:31:48','Admin','Added',NULL), - (16,22,2,'2023-08-23 13:05:31','Admin','Added',NULL), - (17,190,2,'2022-10-20 01:43:56','Admin','Added',NULL), - (18,55,2,'2022-09-23 08:12:20','Admin','Added',NULL), - (19,4,2,'2023-07-01 02:05:59','Admin','Added',NULL), - (20,96,2,'2023-05-13 17:21:46','Email','Added',NULL), - (21,2,2,'2022-10-06 21:33:42','Admin','Added',NULL), - (22,65,2,'2023-09-06 22:54:21','Admin','Added',NULL), - (23,54,2,'2022-11-24 05:03:24','Admin','Added',NULL), - (24,8,2,'2022-11-21 20:37:15','Email','Added',NULL), - (25,24,2,'2023-07-16 20:15:33','Admin','Added',NULL), - (26,86,2,'2023-03-10 22:00:18','Email','Added',NULL), - (27,69,2,'2023-01-10 18:26:07','Email','Added',NULL), - (28,143,2,'2022-09-25 20:32:32','Admin','Added',NULL), - (29,145,2,'2023-01-06 14:51:18','Admin','Added',NULL), - (30,175,2,'2023-05-04 06:20:56','Admin','Added',NULL), - (31,164,2,'2023-04-21 08:01:26','Email','Added',NULL), - (32,74,2,'2022-11-04 17:08:16','Email','Added',NULL), - (33,68,2,'2023-08-02 12:15:20','Email','Added',NULL), - (34,162,2,'2023-06-30 08:45:44','Admin','Added',NULL), - (35,183,2,'2023-04-17 01:12:15','Admin','Added',NULL), - (36,114,2,'2023-03-02 06:57:33','Email','Added',NULL), - (37,39,2,'2023-02-04 13:26:18','Admin','Added',NULL), - (38,184,2,'2023-03-06 01:28:53','Admin','Added',NULL), - (39,124,2,'2023-02-26 22:14:03','Admin','Added',NULL), - (40,160,2,'2023-05-07 02:01:07','Email','Added',NULL), - (41,47,2,'2023-06-24 02:04:19','Admin','Added',NULL), - (42,92,2,'2022-11-19 15:54:46','Email','Added',NULL), - (43,82,2,'2023-05-07 16:46:41','Admin','Added',NULL), - (44,21,2,'2022-09-23 14:34:16','Email','Added',NULL), - (45,15,2,'2022-10-26 07:45:21','Admin','Added',NULL), - (46,50,2,'2023-05-31 08:04:31','Admin','Added',NULL), - (47,70,2,'2023-02-17 15:10:22','Admin','Added',NULL), - (48,25,2,'2023-08-31 00:50:20','Admin','Added',NULL), - (49,167,2,'2023-03-16 17:31:57','Admin','Added',NULL), - (50,144,2,'2022-09-20 19:24:38','Email','Added',NULL), - (51,130,2,'2023-07-10 11:14:28','Admin','Added',NULL), - (52,10,2,'2023-05-29 23:26:21','Admin','Added',NULL), - (53,138,2,'2023-02-18 10:46:47','Email','Added',NULL), - (54,77,2,'2023-05-09 18:08:15','Email','Added',NULL), - (55,196,2,'2023-05-18 22:09:17','Admin','Added',NULL), - (56,113,2,'2023-02-28 03:16:51','Admin','Added',NULL), - (57,161,2,'2023-05-23 03:39:02','Admin','Added',NULL), - (58,57,2,'2023-09-01 16:39:17','Email','Added',NULL), - (59,165,2,'2023-06-29 03:14:21','Email','Added',NULL), - (60,34,2,'2023-09-08 04:07:11','Admin','Added',NULL), - (61,118,3,'2022-12-23 11:40:13','Admin','Added',NULL), - (62,163,3,'2023-06-16 22:07:35','Admin','Added',NULL), - (63,200,3,'2023-06-21 21:50:23','Admin','Added',NULL), - (64,104,3,'2022-12-11 16:09:55','Email','Added',NULL), - (65,125,3,'2023-03-22 14:05:40','Admin','Added',NULL), - (66,117,3,'2022-11-01 08:51:54','Email','Added',NULL), - (67,64,3,'2023-01-04 17:26:07','Admin','Added',NULL), - (68,30,3,'2023-08-09 12:14:16','Email','Added',NULL), - (69,176,3,'2023-03-13 10:58:15','Email','Added',NULL), - (70,12,3,'2022-10-26 16:04:51','Admin','Added',NULL), - (71,116,3,'2023-01-14 19:59:53','Admin','Added',NULL), - (72,112,3,'2023-09-03 13:47:29','Admin','Added',NULL), - (73,111,3,'2022-09-29 07:18:06','Email','Added',NULL), - (74,182,3,'2023-02-12 08:20:00','Admin','Added',NULL), - (75,147,3,'2023-05-16 15:27:15','Email','Added',NULL), - (76,119,4,'2022-10-13 03:48:00','Email','Added',NULL), - (77,79,4,'2023-03-13 22:28:32','Admin','Added',NULL), - (78,53,4,'2023-09-14 03:28:36','Admin','Added',NULL), - (79,65,4,'2022-12-02 12:01:31','Admin','Added',NULL), - (80,145,4,'2023-05-20 11:02:43','Email','Added',NULL), - (81,114,4,'2023-03-08 00:31:03','Email','Added',NULL), - (82,82,4,'2023-08-23 20:32:58','Admin','Added',NULL), - (83,144,4,'2023-01-18 05:16:50','Email','Added',NULL), - (84,202,4,'2023-02-22 08:09:03','Email','Added',NULL); + (1,31,2,'2023-06-17 06:42:04','Admin','Added',NULL), + (2,25,2,'2023-07-29 17:06:05','Email','Added',NULL), + (3,35,2,'2023-10-10 10:20:46','Email','Added',NULL), + (4,142,2,'2023-05-12 17:24:35','Email','Added',NULL), + (5,5,2,'2023-08-15 17:12:02','Email','Added',NULL), + (6,54,2,'2023-04-21 05:22:06','Email','Added',NULL), + (7,4,2,'2022-11-15 04:45:11','Email','Added',NULL), + (8,82,2,'2023-04-27 11:52:00','Admin','Added',NULL), + (9,9,2,'2023-02-07 22:19:44','Email','Added',NULL), + (10,143,2,'2023-10-15 15:04:37','Email','Added',NULL), + (11,123,2,'2022-12-13 18:45:27','Email','Added',NULL), + (12,78,2,'2023-10-11 10:52:30','Admin','Added',NULL), + (13,70,2,'2023-09-05 08:07:37','Admin','Added',NULL), + (14,173,2,'2023-01-03 19:01:41','Email','Added',NULL), + (15,83,2,'2023-09-22 10:32:39','Email','Added',NULL), + (16,72,2,'2023-08-16 17:46:34','Admin','Added',NULL), + (17,186,2,'2023-07-10 09:04:31','Admin','Added',NULL), + (18,127,2,'2023-08-03 16:56:41','Email','Added',NULL), + (19,101,2,'2022-11-22 16:12:44','Admin','Added',NULL), + (20,30,2,'2023-04-14 11:28:27','Email','Added',NULL), + (21,89,2,'2023-05-01 10:11:01','Email','Added',NULL), + (22,187,2,'2022-10-24 23:34:49','Email','Added',NULL), + (23,194,2,'2023-01-14 21:44:34','Email','Added',NULL), + (24,136,2,'2023-10-06 04:42:02','Email','Added',NULL), + (25,115,2,'2023-05-29 09:42:23','Email','Added',NULL), + (26,129,2,'2022-12-15 17:58:49','Email','Added',NULL), + (27,168,2,'2023-06-01 16:19:03','Email','Added',NULL), + (28,157,2,'2022-12-04 05:28:34','Email','Added',NULL), + (29,172,2,'2023-01-29 07:28:48','Email','Added',NULL), + (30,117,2,'2023-01-18 06:12:33','Admin','Added',NULL), + (31,197,2,'2023-03-09 01:17:18','Email','Added',NULL), + (32,98,2,'2023-02-15 00:17:23','Email','Added',NULL), + (33,185,2,'2023-05-01 02:10:24','Admin','Added',NULL), + (34,132,2,'2023-03-03 17:21:03','Email','Added',NULL), + (35,94,2,'2023-05-25 12:14:49','Email','Added',NULL), + (36,11,2,'2023-06-07 12:12:02','Email','Added',NULL), + (37,178,2,'2023-08-19 05:20:04','Admin','Added',NULL), + (38,144,2,'2023-05-24 13:01:58','Email','Added',NULL), + (39,201,2,'2023-07-02 04:57:33','Admin','Added',NULL), + (40,87,2,'2023-03-03 03:27:18','Admin','Added',NULL), + (41,128,2,'2023-08-22 03:14:14','Email','Added',NULL), + (42,8,2,'2023-08-22 14:29:05','Email','Added',NULL), + (43,33,2,'2023-08-15 06:22:34','Admin','Added',NULL), + (44,42,2,'2022-12-12 14:44:03','Email','Added',NULL), + (45,80,2,'2023-08-12 15:59:31','Email','Added',NULL), + (46,153,2,'2023-02-17 13:31:32','Admin','Added',NULL), + (47,120,2,'2023-01-25 22:23:30','Admin','Added',NULL), + (48,169,2,'2023-10-11 23:30:19','Email','Added',NULL), + (49,130,2,'2023-02-24 19:28:54','Admin','Added',NULL), + (50,28,2,'2023-08-29 17:25:45','Admin','Added',NULL), + (51,93,2,'2023-06-01 23:00:05','Email','Added',NULL), + (52,17,2,'2023-03-05 09:50:24','Admin','Added',NULL), + (53,38,2,'2023-03-09 00:19:48','Email','Added',NULL), + (54,174,2,'2023-08-20 04:36:59','Admin','Added',NULL), + (55,81,2,'2023-06-08 11:19:53','Admin','Added',NULL), + (56,113,2,'2023-07-04 18:46:49','Email','Added',NULL), + (57,71,2,'2022-12-30 21:23:31','Admin','Added',NULL), + (58,56,2,'2023-01-19 09:16:37','Email','Added',NULL), + (59,171,2,'2023-01-20 19:56:48','Admin','Added',NULL), + (60,97,2,'2023-08-05 00:57:20','Admin','Added',NULL), + (61,29,3,'2023-02-12 19:03:55','Email','Added',NULL), + (62,138,3,'2023-07-27 12:54:22','Admin','Added',NULL), + (63,145,3,'2023-03-03 07:51:51','Admin','Added',NULL), + (64,166,3,'2023-07-16 17:54:55','Email','Added',NULL), + (65,107,3,'2022-10-20 20:33:11','Admin','Added',NULL), + (66,105,3,'2022-10-29 13:51:38','Admin','Added',NULL), + (67,167,3,'2023-04-28 14:06:13','Email','Added',NULL), + (68,192,3,'2023-10-16 07:50:41','Email','Added',NULL), + (69,37,3,'2023-06-29 19:06:47','Admin','Added',NULL), + (70,27,3,'2023-09-30 14:03:02','Admin','Added',NULL), + (71,40,3,'2023-06-18 18:53:12','Admin','Added',NULL), + (72,165,3,'2022-12-20 17:01:53','Admin','Added',NULL), + (73,184,3,'2023-08-23 17:10:56','Admin','Added',NULL), + (74,158,3,'2023-06-12 00:08:33','Email','Added',NULL), + (75,102,3,'2022-10-28 05:16:22','Admin','Added',NULL), + (76,31,4,'2022-11-12 19:16:25','Admin','Added',NULL), + (77,82,4,'2023-03-30 02:39:23','Admin','Added',NULL), + (78,83,4,'2023-04-28 09:57:10','Email','Added',NULL), + (79,187,4,'2022-12-28 18:09:01','Email','Added',NULL), + (80,172,4,'2023-06-03 10:17:38','Email','Added',NULL), + (81,11,4,'2023-07-02 11:27:36','Admin','Added',NULL), + (82,33,4,'2022-10-24 06:16:09','Email','Added',NULL), + (83,28,4,'2023-04-21 11:40:19','Admin','Added',NULL), + (84,202,4,'2023-08-23 03:21:20','Email','Added',NULL); /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */; UNLOCK TABLES; @@ -12203,12 +12246,12 @@ UNLOCK TABLES; LOCK TABLES `civicrm_tag` WRITE; /*!40000 ALTER TABLE `civicrm_tag` DISABLE KEYS */; -INSERT INTO `civicrm_tag` (`id`, `name`, `description`, `parent_id`, `is_selectable`, `is_reserved`, `is_tagset`, `used_for`, `created_id`, `color`, `created_date`) VALUES - (1,'Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (2,'Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (3,'Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (4,'Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (5,'Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL); +INSERT INTO `civicrm_tag` (`id`, `name`, `label`, `description`, `parent_id`, `is_selectable`, `is_reserved`, `is_tagset`, `used_for`, `created_id`, `color`, `created_date`) VALUES + (1,'Non_profit','Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0bcb21','2023-10-19 14:22:28'), + (2,'Company','Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#2260c3','2023-10-19 14:22:28'), + (3,'Government_Entity','Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,'#cd4b13','2023-10-19 14:22:28'), + (4,'Major_Donor','Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0cdae9','2023-10-19 14:22:28'), + (5,'Volunteer','Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,'#f0dc00','2023-10-19 14:22:28'); /*!40000 ALTER TABLE `civicrm_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -12401,22 +12444,19 @@ UNLOCK TABLES; LOCK TABLES `civicrm_website` WRITE; /*!40000 ALTER TABLE `civicrm_website` DISABLE KEYS */; INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES - (1,23,'http://georgiaalliance.org',1), - (2,91,'http://bremertonsportsinitiative.org',1), - (3,178,'http://communityempowermentservices.org',1), - (4,129,'http://communityfellowship.org',1), - (5,19,'http://pinesolutions.org',1), - (6,108,'http://spokanealliance.org',1), - (7,194,'http://sphealthpartners.org',1), - (8,168,'http://pennsylvaniaarts.org',1), - (9,90,'http://indianasportsnetwork.org',1), - (10,137,'http://texasliteracycollective.org',1), - (11,18,'http://nyactionpartners.org',1), - (12,78,'http://woodbridgeenvironmental.org',1), - (13,88,'http://unitedwellnessalliance.org',1), - (14,193,'http://globalschool.org',1), - (15,170,'http://nyfoodsystems.org',1), - (16,153,'http://statesboroculturesystems.org',1); + (1,103,'http://oregondevelopment.org',1), + (2,135,'http://sacramentopartners.org',1), + (3,77,'http://globalwellnesscenter.org',1), + (4,22,'http://bostonacademy.org',1), + (5,68,'http://unitedagriculture.org',1), + (6,133,'http://progressivepartnership.org',1), + (7,19,'http://creativesolutions.org',1), + (8,161,'http://progressivenetwork.org',1), + (9,69,'http://globalsportscenter.org',1), + (10,95,'http://ruralagriculturetrust.org',1), + (11,139,'http://ruralinitiative.org',1), + (12,7,'http://hanovereducation.org',1), + (13,148,'http://localtrust.org',1); /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */; UNLOCK TABLES; @@ -12448,12 +12488,13 @@ UNLOCK TABLES; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2023-09-19 9:28:03 +-- Dump completed on 2023-10-19 14:22:31 -- +--------------------------------------------------------------------+ -- | Copyright CiviCRM LLC. All rights reserved. | -- | | diff --git a/sql/test_data_second_domain.mysql b/sql/test_data_second_domain.mysql index 85f13ba39a2b..cb7d8d7f735e 100644 --- a/sql/test_data_second_domain.mysql +++ b/sql/test_data_second_domain.mysql @@ -907,4 +907,4 @@ INSERT INTO civicrm_navigation VALUES ( @domainID, CONCAT('civicrm/report/instance/', @instanceID,'&reset=1'), 'Mailing Detail Report', 'Mailing Detail Report', 'administer CiviMail', 'OR', @reportlastID, '1', NULL, @instanceID+2 ); UPDATE civicrm_report_instance SET navigation_id = LAST_INSERT_ID() WHERE id = @instanceID; -UPDATE civicrm_domain SET version = '5.67.alpha1'; +UPDATE civicrm_domain SET version = '5.68.alpha1'; diff --git a/templates/CRM/Admin/Form/ContactType.tpl b/templates/CRM/Admin/Form/ContactType.tpl index 5cf5a3311168..2f257d389475 100644 --- a/templates/CRM/Admin/Form/ContactType.tpl +++ b/templates/CRM/Admin/Form/ContactType.tpl @@ -19,7 +19,7 @@ {$form.label.label} {if $action eq 2} - {include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_contact_type' field='label' id= $cid} + {include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_contact_type' field='label' id=$cid} {/if} {$form.label.html} @@ -48,7 +48,7 @@ {$form.description.label} {if $action eq 2} - {include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_contact_type' field='description' id= $cid} + {include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_contact_type' field='description' id=$cid} {/if} {$form.description.html} diff --git a/templates/CRM/Admin/Form/Job.tpl b/templates/CRM/Admin/Form/Job.tpl index d2c0582808f7..839653cef2e8 100644 --- a/templates/CRM/Admin/Form/Job.tpl +++ b/templates/CRM/Admin/Form/Job.tpl @@ -35,57 +35,11 @@ {$form.run_frequency.label}{$form.run_frequency.html} + + {$form.api_entity.label}{$form.api_entity.html} + - - - -

-
- - {$form.api_action.html} - -
{ts}Put in the API method name. You need to enter pieces of full API function name as described in the documentation.{/ts}
- - - + {$form.api_action.label}{$form.api_action.html} {$form.parameters.label}
{docURL page="user/initial-set-up/scheduled-jobs/#parameters"} diff --git a/templates/CRM/Admin/Form/MessageTemplates.tpl b/templates/CRM/Admin/Form/MessageTemplates.tpl index 1ccf31f3c991..c7862dcdc19c 100644 --- a/templates/CRM/Admin/Form/MessageTemplates.tpl +++ b/templates/CRM/Admin/Form/MessageTemplates.tpl @@ -42,7 +42,7 @@ {$form.msg_subject.html|crmAddClass:huge} - {help id="id-token-subject" tplFile=$tplFile isAdmin=$isAdmin file="CRM/Contact/Form/Task/Email.hlp"} + {help id="id-token-subject" tplFile=$tplFile file="CRM/Contact/Form/Task/Email.hlp"} @@ -73,19 +73,19 @@
- {help id="id-token-html" tplFile=$tplFile isAdmin=$isAdmin file="CRM/Contact/Form/Task/Email.hlp"} + {help id="id-token-html" tplFile=$tplFile file="CRM/Contact/Form/Task/Email.hlp"}
{$form.msg_html.html|crmAddClass:huge} -
{ts}An HTML formatted version of this message will be sent to contacts whose Email Format preference is 'HTML' or 'Both'.{/ts}
- {ts}Plain-Text Format{/ts} + {ts}Optional Plain-Text Format{/ts} + {help id="id-message-plain" file="CRM/Contact/Form/Task/Email.hlp"}
@@ -95,7 +95,6 @@
{$form.msg_text.html|crmAddClass:huge} -
{ts}Text formatted message.{/ts}
diff --git a/templates/CRM/Admin/Form/PaymentProcessor.tpl b/templates/CRM/Admin/Form/PaymentProcessor.tpl index 722f042447c9..cb79afabc76c 100644 --- a/templates/CRM/Admin/Form/PaymentProcessor.tpl +++ b/templates/CRM/Admin/Form/PaymentProcessor.tpl @@ -55,41 +55,41 @@ {ts}Processor Details for Live Payments{/ts} - + {if !empty($form.password)} - + {/if} {if !empty($form.signature)} - + {/if} {if !empty($form.subject)} - + {/if} {if !empty($form.url_site)} - + {/if} {if !empty($form.url_api)} - + {/if} {if !empty($form.url_recur)} - + {/if} {if !empty($form.url_button)} - + {/if}
{$form.user_name.label}{$form.user_name.html} {help id=$ppTypeName|cat:'-live-user-name' title=$form.user_name.label}{$form.user_name.label}{$form.user_name.html} {help id="$ppTypeName-live-user-name" title=$form.user_name.label}
{$form.password.label}{$form.password.html} {help id=$ppTypeName|cat:'-live-password' title=$form.password.label}{$form.password.label}{$form.password.html} {help id="$ppTypeName-live-password" title=$form.password.label}
{$form.signature.label}{$form.signature.html} {help id=$ppTypeName|cat:'-live-signature' title=$form.signature.label}{$form.signature.label}{$form.signature.html} {help id="$ppTypeName-live-signature" title=$form.signature.label}
{$form.subject.label}{$form.subject.html} {help id=$ppTypeName|cat:'-live-subject' title=$form.subject.label}{$form.subject.label}{$form.subject.html} {help id="$ppTypeName-live-subject" title=$form.subject.label}
{$form.url_site.label}{$form.url_site.html|crmAddClass:huge} {help id=$ppTypeName|cat:'-live-url-site' title=$form.url_site.label}{$form.url_site.label}{$form.url_site.html|crmAddClass:huge} {help id="$ppTypeName-live-url-site" title=$form.url_site.label}
{$form.url_api.label}{$form.url_api.html|crmAddClass:huge} {help id=$ppTypeName|cat:'-live-url-api' title=$form.url_api.label}{$form.url_api.label}{$form.url_api.html|crmAddClass:huge} {help id="$ppTypeName-live-url-api" title=$form.url_api.label}
{$form.url_recur.label}{$form.url_recur.html|crmAddClass:huge} {help id=$ppTypeName|cat:'-live-url-recur' title=$form.url_recur.label}{$form.url_recur.label}{$form.url_recur.html|crmAddClass:huge} {help id="$ppTypeName-live-url-recur" title=$form.url_recur.label}
{$form.url_button.label}{$form.url_button.html|crmAddClass:huge} {help id=$ppTypeName|cat:'-live-url-button' title=$form.url_button.label}{$form.url_button.label}{$form.url_button.html|crmAddClass:huge} {help id="$ppTypeName-live-url-button" title=$form.url_button.label}
@@ -99,40 +99,40 @@ {ts}Processor Details for Test Payments{/ts} - + {if !empty($form.test_password)} - + {/if} {if !empty($form.test_signature)} - + {/if} {if !empty($form.test_subject)} - + {/if} {if !empty($form.test_url_site)} - + {/if} {if !empty($form.test_url_api)} - + {/if} {if !empty($form.test_url_recur)} - + {/if} {if !empty($form.test_url_button)} - + {/if} {/if} diff --git a/templates/CRM/Admin/Form/Preferences/Address.tpl b/templates/CRM/Admin/Form/Preferences/Address.tpl index 399e54ecc113..bf8d1656b2e3 100644 --- a/templates/CRM/Admin/Form/Preferences/Address.tpl +++ b/templates/CRM/Admin/Form/Preferences/Address.tpl @@ -42,7 +42,7 @@ {help id="id-token-text" tplFile=$tplFile file="CRM/Contact/Form/Task/Email.hlp"} {$form.address_format.html|crmAddClass:huge12}
- {ts}Format for displaying addresses in the Contact Summary and Event Information screens.{/ts}
{ts 1={contact.state_province} 2={contact.state_province_name}}Use %1 for state/province abbreviation or %2 for state province name.{/ts}
+ {ts}Format for displaying addresses in the Contact Summary and Event Information screens.{/ts}
{ts 1="{contact.state_province}" 2="{contact.state_province_name}"}Use %1 for state/province abbreviation or %2 for state province name.{/ts}
{$form.test_user_name.label}{$form.test_user_name.html} {help id=$ppTypeName|cat:'-test-user-name' title=$form.test_user_name.label}
{$form.test_user_name.label}{$form.test_user_name.html} {help id="$ppTypeName-test-user-name" title=$form.test_user_name.label}
{$form.test_password.label}{$form.test_password.html} {help id=$ppTypeName|cat:'-test-password' title=$form.test_password.label}{$form.test_password.label}{$form.test_password.html} {help id="$ppTypeName-test-password" title=$form.test_password.label}
{$form.test_signature.label}{$form.test_signature.html} {help id=$ppTypeName|cat:'-test-signature' title=$form.test_signature.label}{$form.test_signature.label}{$form.test_signature.html} {help id="$ppTypeName-test-signature" title=$form.test_signature.label}
{$form.test_subject.label}{$form.test_subject.html} {help id=$ppTypeName|cat:'-test-subject' title=$form.test_subject.label}{$form.test_subject.label}{$form.test_subject.html} {help id="$ppTypeName-test-subject" title=$form.test_subject.label}
{$form.test_url_site.label}{$form.test_url_site.html|crmAddClass:huge} {help id=$ppTypeName|cat:'-test-url-site' title=$form.test_url_site.label}{$form.test_url_site.label}{$form.test_url_site.html|crmAddClass:huge} {help id="$ppTypeName-test-url-site" title=$form.test_url_site.label}
{$form.test_url_api.label}{$form.test_url_api.html|crmAddClass:huge} {help id=$ppTypeName|cat:'-test-url-api' title=$form.test_url_api.label}{$form.test_url_api.label}{$form.test_url_api.html|crmAddClass:huge} {help id="$ppTypeName-test-url-api" title=$form.test_url_api.label}
{$form.test_url_recur.label}{$form.test_url_recur.html|crmAddClass:huge} {help id=$ppTypeName|cat:'-test-url-recur' title=$form.test_url_recur.label}{$form.test_url_recur.label}{$form.test_url_recur.html|crmAddClass:huge} {help id="$ppTypeName-test-url-recur" title=$form.test_url_recur.label}
{$form.test_url_button.label}{$form.test_url_button.html|crmAddClass:huge} {help id=$ppTypeName|cat:'-test-url-button' title=$form.test_url_button.label}{$form.test_url_button.label}{$form.test_url_button.html|crmAddClass:huge} {help id="$ppTypeName-test-url-button" title=$form.test_url_button.label}
diff --git a/templates/CRM/Admin/Page/APIExplorer.js b/templates/CRM/Admin/Page/APIExplorer.js index e54d6bcd8005..f294b308ded1 100644 --- a/templates/CRM/Admin/Page/APIExplorer.js +++ b/templates/CRM/Admin/Page/APIExplorer.js @@ -11,7 +11,6 @@ getFieldsCache = {}, getActionsCache = {}, params = {}, - smartyPhp, entityDoc, fieldTpl = _.template($('#api-param-tpl').html()), optionsTpl = _.template($('#api-options-tpl').html()), @@ -596,21 +595,6 @@ return JSON.stringify(val).replace(/\$/g, '\\$'); } - /** - * @param value string - * @param js string - * @param key string - */ - function smartyFormat(value, js, key) { - var varName = 'param_' + key.replace(/[. -]/g, '_').toLowerCase(); - // Can't pass array literals directly into smarty so we add a php snippet - if (_.includes(js, '[') || _.includes(js, '{')) { - smartyPhp.push('$this->assign("'+ varName + '", '+ phpFormat(value) +');'); - return '$' + varName; - } - return js; - } - /** * Create the params array from user input * @param e @@ -716,7 +700,6 @@ "curl '" + http.url + "?" + $.param(http.query) + "'" : "curl -X " + http.method + " -d '" + $.param(http.query) +"' \\\n '" + http.url + "'" }; - smartyPhp = []; $.each(params, function(key, value) { var json = JSON.stringify(value), // Encourage 'return' to be an array - at least in php & js @@ -732,7 +715,7 @@ q.json += " \"" + key + '": ' + js; // smarty already defaults to sequential if (key !== 'sequential') { - q.smarty += ' ' + key + '=' + smartyFormat(value, json, key); + q.smarty += ' ' + key + '=' + phpFormat(value); } // FIXME: This is not totally correct cli syntax q.cv += key + '=' + json + ' '; @@ -748,8 +731,6 @@ q.smarty += "}\n{foreach from=$result.values item=" + entity.toLowerCase() + "}\n {$" + entity.toLowerCase() + ".some_field}\n{/foreach}"; if (!_.includes(action, 'get')) { q.smarty = '{* Smarty API only works with get actions *}'; - } else if (smartyPhp.length) { - q.smarty = "{php}\n " + smartyPhp.join("\n ") + "\n{/php}\n" + q.smarty; } $('#api-rest').html(restTpl(http)); $.each(q, function(type, val) { diff --git a/templates/CRM/Admin/Page/MailSettings.tpl b/templates/CRM/Admin/Page/MailSettings.tpl index 7fce4665dd29..80b2996e2584 100644 --- a/templates/CRM/Admin/Page/MailSettings.tpl +++ b/templates/CRM/Admin/Page/MailSettings.tpl @@ -61,7 +61,7 @@ @@ -80,8 +80,7 @@ return; } event.stopPropagation(); - var url = CRM.url('civicrm/ajax/setupMailAccount', {type: event.val}); - window.location = url; + window.location = cj(event.choice.element).data('url'); }); {/literal} diff --git a/templates/CRM/Admin/Page/MessageTemplates.tpl b/templates/CRM/Admin/Page/MessageTemplates.tpl index f313faed2a9e..3bb1b2f3d5fd 100644 --- a/templates/CRM/Admin/Page/MessageTemplates.tpl +++ b/templates/CRM/Admin/Page/MessageTemplates.tpl @@ -86,9 +86,9 @@ {include file="CRM/common/jsortable.tpl"} {foreach from=$rows item=template_row key=type} {if ( - $type ne 'userTemplates' and ($canEditSystemTemplates or $canEditMessageTemplates) + $type ne 'userTemplates' && ($canEditSystemTemplates or $canEditMessageTemplates) ) or ( - $type eq 'userTemplates'and ($canEditUserDrivenMessageTemplates or $canEditMessageTemplates) + $type eq 'userTemplates' && ($canEditUserDrivenMessageTemplates or $canEditMessageTemplates) )}
diff --git a/templates/CRM/Campaign/Form/Campaign.tpl b/templates/CRM/Campaign/Form/Campaign.tpl index 38b6cb98ce94..71414c0a9955 100644 --- a/templates/CRM/Campaign/Form/Campaign.tpl +++ b/templates/CRM/Campaign/Form/Campaign.tpl @@ -69,7 +69,7 @@ - {include file="CRM/common/customDataBlock.tpl"} + {include file="CRM/common/customDataBlock.tpl" cid=false} {/if}
{include file="CRM/common/formButtons.tpl" location="bottom"}
diff --git a/templates/CRM/Campaign/Form/Search/Campaign.tpl b/templates/CRM/Campaign/Form/Search/Campaign.tpl deleted file mode 100644 index 95d4f9a73fdf..000000000000 --- a/templates/CRM/Campaign/Form/Search/Campaign.tpl +++ /dev/null @@ -1,271 +0,0 @@ -{* - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC. All rights reserved. | - | | - | This work is published under the GNU AGPLv3 license with some | - | permitted exceptions and without any warranty. For full license | - | and copyright information, see https://civicrm.org/licensing | - +--------------------------------------------------------------------+ -*} - -{if !$hasCampaigns} -
- {icon icon="fa-info-circle"}{/icon} -   - {ts}None found.{/ts} -
- -{elseif $buildSelector} - -{* load campaign selector *} - - {include file="CRM/common/enableDisableApi.tpl"} - - {literal} - - {/literal} - - - - - - - - - - - - - - - - - - - -
{ts}ID{/ts}{ts}Campaign Name{/ts}{ts}Title{/ts}{ts}Description{/ts}{ts}Start Date{/ts}{ts}End Date{/ts}{ts}Type ID{/ts}{ts}Type{/ts}{ts}Status ID{/ts}{ts}Status{/ts}{ts}Is Active?{/ts}{ts}Active?{/ts}
-{else} - -{* build search form here *} - -{* Search form and results for campaigns *} -
- - {assign var='searchForm' value="search_form_$searchFor"} - -
-
- {ts}Search Campaigns{/ts} -
- - -
- {strip} - - - - - - - - - - - - - - - - - - - - -
{$form.campaign_title.label}
- {$form.campaign_title.html}   -
- {$form.description.label}
- {$form.description.html|crmAddClass:huge} -
{$form.start_date.label}
- {$form.start_date.html} -
{$form.end_date.label}
- {$form.end_date.html} -
{$form.campaign_type_id.label}
- {$form.campaign_type_id.html} -
{$form.status_id.label}
- {$form.status_id.html} -
{$form.is_active.label}
- {$form.is_active.html} -
- {if $context eq 'search'} - {$form.buttons.html} - {else} - {ts}Search{/ts} - {/if} -
- {/strip} -
-
-
-{* search form ends here *} -
-{/if} {* end of search form build *} - - -{literal} - -{/literal} diff --git a/templates/CRM/Campaign/Form/Search/Petition.tpl b/templates/CRM/Campaign/Form/Search/Petition.tpl deleted file mode 100644 index 9c14d98d608f..000000000000 --- a/templates/CRM/Campaign/Form/Search/Petition.tpl +++ /dev/null @@ -1,241 +0,0 @@ -{* - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC. All rights reserved. | - | | - | This work is published under the GNU AGPLv3 license with some | - | permitted exceptions and without any warranty. For full license | - | and copyright information, see https://civicrm.org/licensing | - +--------------------------------------------------------------------+ -*} - -{if !$hasPetitions} -
- {icon icon="fa-info-circle"}{/icon} - {ts}None found.{/ts} -
- - - -{elseif $buildSelector} - - {* use to display result set of petition *} -
- - {* load petition selector *} - - {include file="CRM/common/enableDisableApi.tpl"} - - {literal} - - {/literal} - - - - - - - - - - - - - - - - - -
{ts}Petition ID{/ts}{ts}Title{/ts}{ts}Campaign ID{/ts}{ts}Campaign{/ts}{ts}Petition Type ID{/ts}{ts}Petition Type{/ts}{ts}Default?{/ts}{ts}Is Active?{/ts}{ts}Active?{/ts}
- -{else} - - - - {* build search form here *} - - {* Search form and results for petitions *} -
- - {assign var='searchForm' value="search_form_$searchFor"} - -
-
- {ts}Search Petitions{/ts} -
- -
- {strip} - - - - - - - - -
{$form.petition_title.label}
- {$form.petition_title.html} -
{$form.petition_campaign_id.label}
- {$form.petition_campaign_id.html} -
- {if $context eq 'search'} - {$form.buttons.html} - {else} - {ts}Search{/ts} - {/if} -
- {/strip} -
-
-
- {* search form ends here *} - -
- -{/if} {* end of search form build *} - - -{literal} - -{/literal} diff --git a/templates/CRM/Campaign/Form/Search/Survey.tpl b/templates/CRM/Campaign/Form/Search/Survey.tpl deleted file mode 100644 index 91ec99f30be2..000000000000 --- a/templates/CRM/Campaign/Form/Search/Survey.tpl +++ /dev/null @@ -1,290 +0,0 @@ -{* - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC. All rights reserved. | - | | - | This work is published under the GNU AGPLv3 license with some | - | permitted exceptions and without any warranty. For full license | - | and copyright information, see https://civicrm.org/licensing | - +--------------------------------------------------------------------+ -*} - -{if !$hasSurveys} -
- {icon icon="fa-info-circle"}{/icon} - {ts}None found.{/ts} -
- - - -{elseif $buildSelector} - - {* use to display result set of survey *} -
- - {* load survey selector *} - {include file="CRM/common/enableDisableApi.tpl"} - - {literal} - - {/literal} - - - - - - - - - - - - - - - - - - - - - - -
{ts}Survey ID{/ts}{ts}Title{/ts}{ts}Campaign ID{/ts}{ts}Campaign{/ts}{ts}Survey Type ID{/ts}{ts}Survey Type{/ts}{ts}Release Frequency{/ts}{ts}Reserve Each Time{/ts}{ts}Total Reserve{/ts}{ts}Default?{/ts}{ts}Is Active?{/ts}{ts}Active?{/ts}
- -{else} - - - - {* build search form here *} - - {* Search form and results for surveys *} -
- {assign var='searchForm' value="search_form_$searchFor"} - -
-
- {ts}Search Surveys{/ts} -
- -
- {strip} - - - - - - - - - - - -
{$form.survey_title.label}
- {$form.survey_title.html} -
{$form.activity_type_id.label}
- {$form.activity_type_id.html} -
{$form.survey_campaign_id.label}
- {$form.survey_campaign_id.html} -
- {if $context eq 'search'} - {$form.buttons.html} - {else} - {ts}Search{/ts} - {/if} -
- {/strip} -
-
-
- {* search form ends here *} - -
- -{/if} {* end of search form build *} - - -{literal} - -{/literal} diff --git a/templates/CRM/Campaign/Page/DashBoard.tpl b/templates/CRM/Campaign/Page/DashBoard.tpl deleted file mode 100644 index 18d26d1e83d7..000000000000 --- a/templates/CRM/Campaign/Page/DashBoard.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{* - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC. All rights reserved. | - | | - | This work is published under the GNU AGPLv3 license with some | - | permitted exceptions and without any warranty. For full license | - | and copyright information, see https://civicrm.org/licensing | - +--------------------------------------------------------------------+ -*} -{* CiviCampaign DashBoard (launch page) *} - - -{if $subPageType} - {* load campaign/survey/petition tab *} - {include file="CRM/Campaign/Form/Search/$subPageType.tpl"} -{else} - {include file="CRM/common/TabHeader.tpl"} -
-{/if} - - - - diff --git a/templates/CRM/Case/Form/Activity.tpl b/templates/CRM/Case/Form/Activity.tpl index 90744ee0c6bb..d2c612652180 100644 --- a/templates/CRM/Case/Form/Activity.tpl +++ b/templates/CRM/Case/Form/Activity.tpl @@ -15,10 +15,10 @@   {if $action eq 8} {* activityTypeName means label here not name, but it's ok because label is desired here (dev/core#1116-ok-label) *} - {ts 1=$activityTypeName}Click Delete to move this "%1" activity to the Trash.{/ts} + {ts 1=$activityTypeNameAndLabel.displayLabel|escape}Click Delete to move this "%1" activity to the Trash.{/ts} {else} {* activityTypeName means label here not name, but it's ok because label is desired here (dev/core#1116-ok-label) *} - {ts 1=$activityTypeName}Click Restore to retrieve this "%1" activity from the Trash.{/ts} + {ts 1=$activityTypeNameAndLabel.displayLabel|escape}Click Restore to retrieve this "%1" activity from the Trash.{/ts} {/if}

{else} @@ -90,7 +90,7 @@ {ts}Activity Type{/ts} {* activityTypeName means label here not name, but it's ok because label is desired here (dev/core#1116-ok-label) *} - {$activityTypeName|escape} + {$activityTypeNameAndLabel.label|escape} {$form.source_contact_id.label} diff --git a/templates/CRM/Case/Form/ActivityTab.tpl b/templates/CRM/Case/Form/ActivityTab.tpl index 2b778bbcc494..683da8bf18ff 100644 --- a/templates/CRM/Case/Form/ActivityTab.tpl +++ b/templates/CRM/Case/Form/ActivityTab.tpl @@ -31,12 +31,12 @@ - {assign var=activitylow value=activity_date_low_$caseID} + {assign var=activitylow value="activity_date_low_`$caseID`"} {$form.$activitylow.label}
{$form.$activitylow.html} - {assign var=activityhigh value=activity_date_high_$caseID} + {assign var=activityhigh value="activity_date_high_`$caseID`"} {$form.$activityhigh.label}
{$form.$activityhigh.html} diff --git a/templates/CRM/Case/Form/CaseView.tpl b/templates/CRM/Case/Form/CaseView.tpl index bb5d90f05809..dc6b80ea4071 100644 --- a/templates/CRM/Case/Form/CaseView.tpl +++ b/templates/CRM/Case/Form/CaseView.tpl @@ -304,8 +304,8 @@ {foreach from=$tagSetTags item=displayTagset}

-   {$displayTagset.name}: - {', '|implode:$displayTagset.items} +   {$displayTagset.label}: + {', '|implode:$displayTagset.items|escape}

{/foreach} diff --git a/templates/CRM/Contact/Form/Domain.tpl b/templates/CRM/Contact/Form/Domain.tpl index d1328bff1c74..cd5536da6e88 100644 --- a/templates/CRM/Contact/Form/Domain.tpl +++ b/templates/CRM/Contact/Form/Domain.tpl @@ -27,7 +27,7 @@

{ts}Default Organization Address{/ts}

-
{ts 1={domain.address}}CiviMail mailings must include the sending organization's address. This is done by putting the %1 token in either the body or footer of the mailing. This token may also be used in regular 'Email - send now' messages and in other Message Templates. The token is replaced by the address entered below when the message is sent.{/ts}
+
{ts 1="{domain.address}"}CiviMail mailings must include the sending organization's address. This is done by putting the %1 token in either the body or footer of the mailing. This token may also be used in regular 'Email - send now' messages and in other Message Templates. The token is replaced by the address entered below when the message is sent.{/ts}
{include file="CRM/Contact/Form/Edit/Address.tpl" blockId=1 masterAddress='' parseStreetAddress='' className=''}

{ts}Organization Contact Information{/ts}

{ts}You can also include general email and/or phone contact information in mailings.{/ts} {help id="additional-contact"}
diff --git a/templates/CRM/Contact/Form/Edit/Address.tpl b/templates/CRM/Contact/Form/Edit/Address.tpl index 6a1365111ebe..b0da0bf2ff71 100644 --- a/templates/CRM/Contact/Form/Edit/Address.tpl +++ b/templates/CRM/Contact/Form/Edit/Address.tpl @@ -50,9 +50,9 @@ {* build address block w/ address sequence. *} {foreach item=addressElement from=$addressSequence} - {include file=CRM/Contact/Form/Edit/Address/$addressElement.tpl} + {include file="CRM/Contact/Form/Edit/Address/`$addressElement`.tpl"} {/foreach} - {include file=CRM/Contact/Form/Edit/Address/geo_code.tpl} + {include file="CRM/Contact/Form/Edit/Address/geo_code.tpl"}
diff --git a/templates/CRM/Contact/Form/Edit/Organization.tpl b/templates/CRM/Contact/Form/Edit/Organization.tpl index 0aaf0d394213..db66fdc2837c 100644 --- a/templates/CRM/Contact/Form/Edit/Organization.tpl +++ b/templates/CRM/Contact/Form/Edit/Organization.tpl @@ -11,26 +11,28 @@ {crmRegion name="contact-form-edit-organization"} - - + {if array_key_exists('contact_sub_type', $form)} + + {/if} {/crmRegion}
{ - $form.organization_name.label}
+
+ {$form.organization_name.label|smarty:nodefaults|purify}
{$form.organization_name.html}
- {$form.legal_name.label}
+ {$form.legal_name.label|smarty:nodefaults|purify}
{$form.legal_name.html}
- {$form.nick_name.label}
+ {$form.nick_name.label|smarty:nodefaults|purify}
{$form.nick_name.html}
- {$form.sic_code.label}
+ {$form.sic_code.label|smarty:nodefaults|purify}
{$form.sic_code.html}
- {$form.contact_sub_type.label}
- {$form.contact_sub_type.html} -
+ {$form.contact_sub_type.label|smarty:nodefaults|purify}
+ {$form.contact_sub_type.html} +
diff --git a/templates/CRM/Contact/Form/Inline/Address.tpl b/templates/CRM/Contact/Form/Inline/Address.tpl index 2a9ceebcea34..1985b3a6de7b 100644 --- a/templates/CRM/Contact/Form/Inline/Address.tpl +++ b/templates/CRM/Contact/Form/Inline/Address.tpl @@ -43,9 +43,9 @@ {* build address block w/ address sequence. *} {foreach item=addressElement from=$addressSequence} - {include file=CRM/Contact/Form/Edit/Address/$addressElement.tpl} + {include file="CRM/Contact/Form/Edit/Address/`$addressElement`.tpl"} {/foreach} - {include file=CRM/Contact/Form/Edit/Address/geo_code.tpl} + {include file="CRM/Contact/Form/Edit/Address/geo_code.tpl"}
diff --git a/templates/CRM/Contact/Form/RelatedContact.tpl b/templates/CRM/Contact/Form/RelatedContact.tpl index e4eebab4a1a3..0a226a175565 100644 --- a/templates/CRM/Contact/Form/RelatedContact.tpl +++ b/templates/CRM/Contact/Form/RelatedContact.tpl @@ -9,7 +9,7 @@ *} {* This file provides the HTML for the edit Related contact form *} -{include file=CRM/Contact/Form/OnBehalfOf.tpl} +{include file="CRM/Contact/Form/OnBehalfOf.tpl"}
{$form.buttons.html} diff --git a/templates/CRM/Contact/Form/Search/ResultTasks.tpl b/templates/CRM/Contact/Form/Search/ResultTasks.tpl index e7a9bab83c91..092e301a22b0 100644 --- a/templates/CRM/Contact/Form/Search/ResultTasks.tpl +++ b/templates/CRM/Contact/Form/Search/ResultTasks.tpl @@ -34,7 +34,7 @@ {if !empty($savedSearch.name)}{$savedSearch.name} ({ts}smart group{/ts}) - {/if} - {ts count=$pager->_totalItems plural='%count Contacts'}%count Contact{/ts} + {ts count=$pager->_totalItems plural="%count Contacts"}%count Contact{/ts} {* Search criteria are passed to tpl in the $qill array *} @@ -48,7 +48,7 @@ {ts}Select Records{/ts}: {assign var="checked" value=$selectedContactIds|@count} - {$form.radio_ts.ts_all.html} + {$form.radio_ts.ts_all.html} {if $pager->_totalItems > 1}   {$form.radio_ts.ts_sel.html} {/if} diff --git a/templates/CRM/Contact/Form/Task/Batch.tpl b/templates/CRM/Contact/Form/Task/Batch.tpl index 166630a4dba5..316ee28dada7 100644 --- a/templates/CRM/Contact/Form/Task/Batch.tpl +++ b/templates/CRM/Contact/Form/Task/Batch.tpl @@ -38,7 +38,7 @@ {assign var=n value=$field.name} {if $field.options_per_line} - {assign var="count" value="1"} + {assign var="count" value=1} {strip} @@ -50,9 +50,9 @@ {if $count == $field.options_per_line} - {assign var="count" value="1"} + {assign var="count" value=1} {else} - {assign var="count" value=`$count+1`} + {assign var="count" value=$count+1} {/if} {/if} {/foreach} diff --git a/templates/CRM/Contact/Form/Task/Email.hlp b/templates/CRM/Contact/Form/Task/Email.hlp index e9a357730bff..c2f28034bad7 100644 --- a/templates/CRM/Contact/Form/Task/Email.hlp +++ b/templates/CRM/Contact/Form/Task/Email.hlp @@ -55,7 +55,15 @@ be an equal sign and a number (=12). The number (12 in this example) is the id o {ts}Message Text{/ts} {/htxt} {htxt id="id-message-text"} -

{ts}You can send your email as a simple text-only message, as an HTML formatted message, or both. Text-only messages are sufficient for most email communication - and some recipients may prefer not to receive HTML formatted messages.{/ts}

-

{ts}HTML messages have more visual impact, allow you to include images, and may be more readable if you are including links to website pages. However, different email programs may interpret HTML formats differently - so use this option cautiously unless you have a template format that has been tested with different web and desktop email programs.{/ts}

+

{ts}You can include tokens in your message{/ts}

{docURL page="user/common-workflows/tokens-and-mail-merge" text=$tokentext}

{/htxt} +{htxt id="id-message-text-title"} + {ts}Message Plain Text{/ts} +{/htxt} +{htxt id="id-message-plain"} +

{ts}Configuring a plain text version of a message is optional will be removed from CiviCRM in a future version.{/ts}

+

{ts}If the text version is blank one will be automatically generated from the HTML content.{/ts}

+{capture assign=plainText}{ts}Find out more about including a plain text version{/ts}{/capture} +

{docURL page="user/common-workflows/tokens-and-mail-merge" text=$plainText}

+{/htxt} diff --git a/templates/CRM/Contact/Form/Task/PDFLetterCommon.hlp b/templates/CRM/Contact/Form/Task/PDFLetterCommon.hlp index 7542fbdb6198..0316510863b7 100644 --- a/templates/CRM/Contact/Form/Task/PDFLetterCommon.hlp +++ b/templates/CRM/Contact/Form/Task/PDFLetterCommon.hlp @@ -24,13 +24,12 @@ | see the CiviCRM license FAQ at http://civicrm.org/licensing | +--------------------------------------------------------------------+ *} -{php}$this->assign('uploadFormatsSupported', '.' . implode(', .', array_keys(CRM_Utils_PDF_Document::$ooxmlMap)));{/php} {htxt id="template"}

{ts}Select a pre-existing template, or upload a document for mail merge.{/ts}

- {ts 1=$uploadFormatsSupported}Supported file formats: %1{/ts} + {ts 1="docx, odt"}Supported file formats: docx, odt{/ts}

{/htxt} diff --git a/templates/CRM/Contact/Page/View/Note.tpl b/templates/CRM/Contact/Page/View/Note.tpl deleted file mode 100644 index e817001265bd..000000000000 --- a/templates/CRM/Contact/Page/View/Note.tpl +++ /dev/null @@ -1,256 +0,0 @@ -{* - +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC. All rights reserved. | - | | - | This work is published under the GNU AGPLv3 license with some | - | permitted exceptions and without any warranty. For full license | - | and copyright information, see https://civicrm.org/licensing | - +--------------------------------------------------------------------+ -*} -
-{if $action eq 4}{* when action is view *} - {if $notes} -
-
- - - - - - - {if $currentAttachmentInfo} - {include file="CRM/Form/attachment.tpl"} - {/if} -
{ts}Subject{/ts}{$note.subject}
{ts}Date:{/ts}{$note.note_date|crmDate}
{ts}Modified Date:{/ts}{$note.modified_date|crmDate}
{ts}Privacy:{/ts}{$note.privacy}
{ts}Note:{/ts}{$note.note|nl2br}
-
- {crmButton class="cancel" icon="times" p='civicrm/contact/view' q="selectedChild=note&reset=1&cid=`$contactId`"}{ts}Done{/ts}{/crmButton} -
- - {if $comments} -
- {ts}Comments{/ts} - - - - - {foreach from=$comments item=comment} - - {/foreach} -
{ts}Comment{/ts}{ts}Created By{/ts}{ts}Date{/ts}{ts}Modified Date{/ts}
{$comment.note}{$comment.createdBy}{$comment.note_date}{$comment.modified_date}
-
- {/if} - -
- {/if} -{elseif $action eq 1 or $action eq 2} {* action is add or update *} -
- - - - - - - - - - - - - - - - - - - - -
{$form.subject.label} - {$form.subject.html} -
{$form.note_date.label}{$form.note_date.html}
{$form.privacy.label} - {$form.privacy.html} -
{$form.note.label} - {$form.note.html} -
- {include file="CRM/Form/attachment.tpl"} -
- -
-
{include file="CRM/common/formButtons.tpl" location="bottom"}
-
-
-
-{/if} -{if ($action eq 8)} -
{ts 1=$notes.$id.note}Are you sure you want to delete the note '%1'?{/ts}
-
{include file="CRM/common/formButtons.tpl" location=''}
- -{/if} - -{if ($permission EQ 'edit' OR $canAddNotes) AND ($action eq 16)} - -
-{/if} -
- -{if $notes and $action eq 16} - - - -
-{* show browse table for any action *} -
- {strip} - - - - - - - - - - - - - - - {foreach from=$notes item=note} - - - - - - - - - - - {/foreach} -
{ts}Note{/ts}{ts}Subject{/ts}{ts}Date{/ts}{ts}Modified Date{/ts}{ts}Created By{/ts}{ts}Attachment(s){/ts}
- {if $note.comment_count} - - - - - - {else} - - {/if} - - {$note.note|mb_truncate:80:"...":false|nl2br} - {* Include '(more)' link to view entire note if it has been truncated *} - {assign var="noteSize" value=$note.note|crmCountCharacters:true} - {if $noteSize GT 80} - {ts}(more){/ts} - {/if} - {$note.subject}{$note.note_date|crmDate}{$note.modified_date|crmDate} - {$note.createdBy} - - {foreach from=$note.attachment item=fileinfo} - {$fileinfo} - {/foreach} - {$note.action|replace:'xx':$note.id}
- {/strip} -
-
-{elseif ($action eq 16)} -
- {icon icon="fa-info-circle"}{/icon} - {ts}There are no Notes for this contact.{/ts} -
-{/if} -
-
diff --git a/templates/CRM/Contact/Page/View/Relationship.tpl b/templates/CRM/Contact/Page/View/Relationship.tpl index 0cf2aee9397e..85284373a5cf 100644 --- a/templates/CRM/Contact/Page/View/Relationship.tpl +++ b/templates/CRM/Contact/Page/View/Relationship.tpl @@ -7,44 +7,9 @@ | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ *} -{* Relationship tab within View Contact - browse, and view relationships for a contact *} +{* Overloaded template for viewing, editing and deleting a relationship *} {if $action eq 4} {* action = view *} {include file="CRM/Contact/Page/View/ViewRelationship.tpl"} -{elseif $action neq 16} {* add, update *} +{else} {* add, update, delete *} {include file="CRM/Contact/Form/Relationship.tpl"} -{else} -
- {if $permission EQ 'edit'} - - {/if} - - {* display current relationships *} -

{ts}Current Relationships{/ts}

-
- {ts}Permissioned Relationships: {/ts} - {include file="CRM/Contact/Page/View/RelationshipPerm.tpl" permType=1 afterText=true} -
- {include file="CRM/Contact/Page/View/RelationshipSelector.tpl" context="current"} - -
- {* display past relationships *} -

{ts}Inactive Relationships{/ts}

-
{ts}These relationships are Disabled OR have a past End Date.{/ts}
- {include file="CRM/Contact/Page/View/RelationshipSelector.tpl" context="past"} -
- - {include file="CRM/common/enableDisableApi.tpl"} - {literal} - - {/literal} -{/if} {* close of custom data else*} +{/if} diff --git a/templates/CRM/Contact/Page/View/RelationshipPerm.tpl b/templates/CRM/Contact/Page/View/RelationshipPerm.tpl index 709b0265c84f..04c6dfdb8326 100644 --- a/templates/CRM/Contact/Page/View/RelationshipPerm.tpl +++ b/templates/CRM/Contact/Page/View/RelationshipPerm.tpl @@ -39,12 +39,3 @@ {ts 1=$permDisplayName 2=$otherDisplayName}%1 can view information about %2.{/ts} {/if} {/if} - -{* Used for legend on relationships tab *} -{if $afterText} -{if $permType eq 1} -{ts}This contact can be edited by the other.{/ts} -{else} -{ts}This contact can be viewed by the other.{/ts} -{/if} -{/if} diff --git a/templates/CRM/Contact/Page/View/Summary.js b/templates/CRM/Contact/Page/View/Summary.js index e07de3e7f016..a5faa0821a2b 100644 --- a/templates/CRM/Contact/Page/View/Summary.js +++ b/templates/CRM/Contact/Page/View/Summary.js @@ -403,6 +403,12 @@ } } + // Changing relationships may affect related members and contributions. Ensure they are refreshed. + $('#contact-rel').on('crmPopupFormSuccess', function() { + CRM.tabHeader.resetTab('#tab_contribute'); + CRM.tabHeader.resetTab('#tab_member'); + }); + onResize(); $(window).resize(onResize); }); diff --git a/templates/CRM/Contribute/Form/AdditionalInfo/Premium.tpl b/templates/CRM/Contribute/Form/AdditionalInfo/Premium.tpl index 953837dd5c13..98afb932845a 100644 --- a/templates/CRM/Contribute/Form/AdditionalInfo/Premium.tpl +++ b/templates/CRM/Contribute/Form/AdditionalInfo/Premium.tpl @@ -50,7 +50,7 @@ } {/literal} var index = 1; - {foreach from= $mincontribution item=amt key=id} + {foreach from=$mincontribution item=amt key=id} {literal}amount[index]{/literal} = "{$amt}" {literal}index = index + 1{/literal} {/foreach} diff --git a/templates/CRM/Contribute/Form/Contribution.tpl b/templates/CRM/Contribute/Form/Contribution.tpl index 1ebc799eec21..0e6c1cabc38f 100644 --- a/templates/CRM/Contribute/Form/Contribution.tpl +++ b/templates/CRM/Contribute/Form/Contribution.tpl @@ -316,7 +316,7 @@ {if !$payNow} - {include file="CRM/common/customDataBlock.tpl"} + {include file="CRM/common/customDataBlock.tpl" cid=$contactId} {/if} {literal} diff --git a/templates/CRM/Contribute/Form/Contribution/Confirm.tpl b/templates/CRM/Contribute/Form/Contribution/Confirm.tpl index 5b13d71471a4..5d8492e35d52 100644 --- a/templates/CRM/Contribute/Form/Contribution/Confirm.tpl +++ b/templates/CRM/Contribute/Form/Contribution/Confirm.tpl @@ -276,14 +276,10 @@ {/if} - {if $contributeMode NEQ 'notify' and $is_monetary and ( $amount GT 0 OR $minimum_fee GT 0 )} {* In 'notify mode, contributor is taken to processor payment forms next *} + {if $confirmText}

- {if $is_pay_later OR $amount LE 0.0} - {ts 1=$button}Your transaction will not be completed until you click the %1 button. Please click the button one time only.{/ts} - {else} - {ts 1=$button}Your contribution will not be completed until you click the %1 button. Please click the button one time only.{/ts} - {/if} + {$confirmText}

{/if} diff --git a/templates/CRM/Contribute/Form/Contribution/Main.tpl b/templates/CRM/Contribute/Form/Contribution/Main.tpl index 5c6ab4f73c83..33ff5ce7f32c 100644 --- a/templates/CRM/Contribute/Form/Contribution/Main.tpl +++ b/templates/CRM/Contribute/Form/Contribution/Main.tpl @@ -17,12 +17,10 @@